1.MySQL数据库的基本操作

数据库操作过程:

1.用户在客户端输入 SQL
2.客户端会把 SQL 通过网络发送给服务器
3.服务器执行这个 SQL,把结果返回给客户端
4.客户端收到结果,显示到界面上

数据库的操作

这里的数据库不是代表一个软件,而是代表一个数据集合。

显示当前的数据库

show databases;

创建数据库

语法:

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:[DEFAULT] CHARACTER SET charset_name[DEFAULT] COLLATE collation_name
  • 大写的表示关键字
  • [] 是可选项
  • CHARACTER SET: 指定数据库采用的字符集
  • COLLATE: 指定数据库字符集的校验规则

create database 数据库名
CREATE DATABASE 数据库名
注意:
1.create,database … 相当于"关键字
2.SQL 的关键字 不区分大小写的
3.创建的数据库的名字,可以随便起,但是不能重复!!
4.单词之间至少有一个空格.也可以是多个空格,不能没有!!
5.在 命令行 中输入的 sql 必须以;作为结尾!!

创建名称为my_database的数据库

create database my_database;
-- 数据库已经存在,再创建就会报错
-- 如果一条一条执行 SQL,不报错影响不大。如果是批量执行 SQL(把很多 SQL 写到一个 文件 中)如果中间某个 SQL 报错, 就会执行停止。
-- 使用了 IF NOT EXISTS 就不会报错了!!
create database if not exists my_database;
-- 创建数据库同时指定数据库的 字符集utf8
create database my_database character set utf8;-- 一般形式
create database my_database charset utf8;-- 简写形式

英文字母,是如何在计算机中表示的?
ascii :使用 数字 表示字符。
ascii 中,只能表示 英文字母 和 标点符号,以及阿拉伯数字。汉字要表示的内容特别多,y有几万个,很明显ascii是不够用的。
其他的字符集思路是一致的,可以搞一个更大的表,来表示汉字。演化出了很多套这样的表示方式~~ (不像 ascii只有一套)。对于中文来说,当前最常见的表示方式,有两种:

  • gbk:使用两个字节,表示一个汉字的

  • utf8:使用三个字节,表示一个汉字的

在这两个表上,同一个汉字,表示的数字不同。同一个数字,对应汉字也不同。VS 使用的编码方式是跟随系统windows 简体中文版,系统编码就是 gbk。目前更主流的还是 utf8,这个东西能表示的内容特别多除了汉字之外,各种其他国家的语言文字符号都能表示。java 的字符集是在编译运行的时候,通过命令行参数显式指定的.一般默认都是 utf8 。

mysql 默认字符集是拉丁文(没法表示中文的)。手动设定一个字符集是非常关键的,后续如果要插入一些中文,如果不是 utf8 / gbk 之类的中文就会乱码。
mysgl 的 utf8 是残缺的.(残缺了一些 emoji 表情),完整版utf8就是:utf8mb4,一般情况下两种字符集是都可以设置的。

使用数据库

使用my_database数据库

use my_database;

1.4 删除数据库

DROP DATABASE [IF EXISTS] db_name;

drop database 数据库名;

-- 删除 删除my_database数据库:
drop database  my_database;
-- 如果存在 my_database数据库,删除my_database数据库:
drop database if exists my_database;

删库操作时非常危险的,一旦删掉数据库,数据库中的所有数据就没了.很难恢复。

如何针对上述危险操作,防患于未然:

1.权限不同的用户,能进行的操作是不一样的(有效避免失误)
2.备份 。一旦不小心误删除了数据, 通过之前的备份数据,恢复回来
3.重要操作的时候,拉上其他人帮忙一起检查。

2. 常用数据类型

数字:

数据类型大小说明对应java类型
BIT[ (M) ]M指定位 数,默认 为1二进制数,M范围从1到64, 存储数值范围从0到2^M-1常用Boolean对应BIT,此时 默认是1位,即只能存0和1
TINYINT1字节Byte
SMALLINT2字节Short
INT4字节Integer
BIGINT8字节Long
FLOAT(M, D)4字节单精度,M 是有效数字的长度,D是小数点后的位数。会发生精度丢失Float
DOUBLE(M, D)8字节Double
DECIMAL(M, D)M/D最大 值+2双精度,M指定长度,D表示 小数点位数。精确数值BigDecimal
NUMERIC(M, D)M/D最大 值+2和DECIMAL一样BigDecimal

DECIMAL 能够精确表示小数float 和 double 是不能精确表示小数的!!
0.1 + 0.2 != 0.3

image-20230814084045732

因此,DECIMAL 这个类型就是为了解决上述问题的。虽然能精确存储,精确计算了,但是存储空间占用的更多计算速度也是更慢的。

字符串:

数据类型大小说明对应java类型
VARCHAR (SIZE)0-65,535字节可变长度字符串String
TEXT0-65,535字节长文本数据String
MEDIUMTEXT0-16 777 215字节中等长度文本数据String
BLOB0-65,535字节二进制形式的长文本数据byte[]

varchar(SIZE) 属于可变长的字符串SIZE 表示最大长度.单位是 字符(不是字节!!)
varchar(10) => 最多十个字.哪怕是汉字,也是十个。

日期:

数据类型大 小说明对应java类型
DATETIME8 字 节范围从1000到9999年,不会进行时区的 检索及转换。java.util.Date、 java.sql.Timestamp
TIMESTAMP4 字 节范围从1970到2038年,自动检索当前时 区并进行转换。java.util.Date、 java.sql.Timestamp

TIMESTAMP 时间戳:计算机表示时间的一种经典方式以1970年1月1日0时0分0秒为基准,计算当前时刻和基准时刻的秒数/毫秒数 之差。范围从1970到2038年,这个类型最大的问题是 4 个字节,表示的范围太小了。

小结:
上述这么多类型,不必全都掌握,大概熟悉几个常用的就可以了int, bigint, varchar, double, decimal, datetime。

数据表操作

关系型数据库中,数据是以"表”的方式来进行组织的(类似于 excel)。每个数据库中,里面就可以有很多个数据表,每个表可以有很多行,每一行又可以有很多个列(字段)。

所有的和表相关的操作,都是需要选中数据库再进行: use my_database;

3.1 创建表

create table 表名(列名 类型, 列名 类型, 列名 类型......
);

创建表的时候,就需要先把表的类型确定好,后续插入的数据也要遵守当前的这个类型。

 -- 创建学生表,有id和name两个字段create table student(id int, name varchar(20) comment '姓名');

comment 是注释属于是在创建表的时候的一种专属注释
SQL 中如果想用注释,可以使用 # 或者 –

3.2 查看数据库中的所有表

show tables;

3.3 查看指定表的表结构

desc 表名;

desc => describe(描述)

-- 查看student表的结构
desc student;

image-20230814085629174

int(11): 表示的是该列在打印的时候,显示的时候,最多占11 个字符这么宽和存储范围是无关的。

查看的表结构中的含义:

Field:字段.表一行里有几列.
Type:每一列的类型
Null:该列是否允许为空yes 就是允许为空(不填)
Key: 索引类型
Default:默认值.
Extra:额外补充信息

3.4 删除表

语法格式:

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
-- 删除 student 表
drop table student;
-- 如果存在 stu_test 表,则删除 stu_test 表
drop table if exists student;

上述操作是数据库和数据表的最基础的操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/92619.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java:正则表达式书写规则及相关案例:检验QQ号码,校验手机号码,邮箱格式,当前时间

正则表达式 目标:体验一下使用正则表达式来校验数据格式的合法性。需求:校验QQ号码是否正确,要求全部是数字,长度是(6-20)之间,不能以0开头 首先用自己编写的程序判断QQ号码是否正确 public static void main(String[] args) {Sy…

@Param详解

文章目录 背景什么是ParamParam的使用方法使用方法:遇到的问题及因Param解决了什么问题使用与不使用对比 Param是如何进行映射的总结 背景 最近在开发过程中,在写mapper接口是在参数前加了Param注解,但是在运行的时候就会报错,说…

Golang 函数定义及使用

文章目录 一、函数定义格式二、函数定义及使用 一、函数定义格式 //func: 函数定义关键字 //function_name:函数名称 //parameter_List: 函数参数列表,多个时使用逗号拆分 //return_types:函数返回类型,返回多个值时使用逗号拆分…

ios swift alert 自定义弹框 点击半透明部分弹框消失

文章目录 1.BaseAlertVC2.BindFrameNumAlertVC 1.BaseAlertVC import UIKitclass BaseAlertVC: GLBaseViewController {let centerView UIView()override func viewDidLoad() {super.viewDidLoad()view.backgroundColor UIColor(displayP3Red: 0, green: 0, blue: 0, alpha:…

pytorch报错torch.cuda.is_available()结果false处理方法

文章目录 问题及起因问题起因 解决方法 问题及起因 问题 前几天跑项目,笔记本上的GPU可以正常跑起来。要跑VAE模型,重新安装了torch,GPU就无法使用了,我重新安装了 cuda,torch.cuda.is_available()的结果依然是False。 起因 配置项目环境…

如何使用Kali Linux进行密码破解?

今天我们探讨Kali Linux的应用,重点是如何使用它来进行密码破解。密码破解是渗透测试中常见的任务,Kali Linux为我们提供了强大的工具来帮助完成这项任务。 1. 密码破解简介 密码破解是一种渗透测试活动,旨在通过不同的方法和工具来破解密码…

磁力线试验+多图

今天要磨制一个钢针工具。磨下来很多的铁屑,灵机一动,何不来试验一下磁铁的磁力线。这可是难得的材料。 下放7颗强力磁铁,可见强力磁铁的磁力线非常集中。 下放直径4CM的喇叭磁铁 强力磁铁U型铁 强力磁铁E型铁氧体磁芯,可见磁力线…

侯捷 C++ part2 兼谈对象模型笔记——7 reference、const、new/delete

7 reference、const、new/delete 7.1 reference x 是整数,占4字节;p 是指针占4字节(32位);r 代表x,那么r也是整数,占4字节 int x 0; int* p &x; // 地址和指针是互通的 int& r x;…

掌握Python的X篇_30_使用python解析网页HTML

本篇将会介绍beutifulsoup4模块,可以用于网络爬虫、解析HTML和XML,对于没有接触过前端,不了解HTML是如何工作的,需要先解释一下什么事HTML。 1. HTML 网页中的各种布局等的背后都是非常简单的纯文本格式,那种格式称为…

JAVASE---数组的定义与使用

数组的基本概念 什么是数组 数组是具有相同类型元素的集合,在内存中连续存储。 1. 数组中存放的元素其类型相同 2. 数组的空间是连在一起的 3. 每个空间有自己的编号,起始位置的编号为0,即数组的下标 数组的创建及初始化 数组的创建 T[…

Kafka-eagle监控平台

Kafka-Eagle简介 在开发工作中,当业务不复杂时,可以使用Kafka命令来进行一些集群的管理工作。但如果业务变得复杂,例如:需要增加group、topic分区,此时,再使用命令行就感觉很不方便,此时&#x…

C++ 泛型编程:函数模板

文章目录 前言一、什么是泛型编程二、函数模板三、函数模板的使用四、多参数函数模板五,示例代码:总结 前言 当需要编写通用的代码以处理不同类型的数据时,C 中的函数模板是一个很有用的工具。函数模板允许我们编写一个通用的函数定义&#…

【Apollo】阿波罗自动驾驶:塑造自动驾驶技术的未来

前言 Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。 开放能力、共享资源、加速创新、持续共赢是 Apollo 开放平台的口号。百度把自己所拥有的强大、…

【CI/CD】基于 Jenkins+Docker+Git 的简单 CI 流程实践(上)

基于 JenkinsDockerGit 的简单 CI 流程实践(上) 在如今的互联网时代,随着软件开发复杂度的不断提高,软件开发和发布管理也越来越重要。目前已经形成一套标准的流程,最重要的组成部分就是 持续集成 及 持续交付、部署。…

人工智能原理概述 - ChatGPT 背后的故事

大家好,我是比特桃。如果说 2023 年最火的事情是什么,毫无疑问就是由 ChatGPT 所引领的AI浪潮。今年无论是平日的各种媒体、工作中接触到的项目还是生活中大家讨论的热点,都离不开AI。其实对于互联网行业来说,自从深度学习出来后就…

编程练习(1)

目录 一.选择题 第一题: 第二题: 第三题: 第四题: 第五题: ​编辑 二.编程题 第一题: 第二题: 1.暴力方法: 2.数组法: 一.选择题 第一题: 解析&…

学习 Iterator 迭代器

今天看到一个面试题, 让下面解构赋值成立。 let [a,b] {a:1,b:2} 如果我们直接在浏览器输出这行代码,会直接报错,说是 {a:1,b:2} 不能迭代。 看了es6文档后,具有迭代器的就一下几种类型,没有Object类型,…

k8s service

1、认识Service 程序在容器中、容器在Pod中,可以通过pod的ip来访问应用程序,但是podIP会随着创建销毁而改变。由此,Service出现: Service会对提供同一个服务的多个pod进行聚合,并且提供一个统一的入口地址。通过访问…

【Docker】Docker使用之容器技术发展史

🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正&#xff0…

WSL2 Ubuntu子系统安装OpenCV

文章目录 前言一、基本概念二、操作步骤1.下载源码2.安装依赖3.运行编译4.配置路径 前言 OpenCV用C语言编写,它的主要接口也是C语言,但是依然保留了大量的C语言接口。该库也有大量的Python, Java and MATLAB/OCTAVE (版本2.5)的接口。这些语…