掌握MySQL数据库操作:从创建到管理全攻略
1.库的操作
1.1库的查看
show databases;
这句语法形式是查看服务器已经存在的数据库
注意要加分号————;
1.databeses是复数形式
2.大小写都可以
前提(数据库已经创建或查看服务器自带的数据库)
也可以查看指定的数据库
show create database 数据库名称
下面是查看一个服务器中一个已有的库
1.2创建库
注意:创建库的库名称可以是关键字但是要用这个符号括起来``
创建库的完整语法形式
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_option] ...create_option: [DEFAULT] {CHARACTER SET [=] charset_name| COLLATE [=] collation_name| ENCRYPTION [=] {'Y' | 'N'}}
创建库的时候指定字符集编码和排序规则
1.db_name:表示要创建数据库名称
2.{}大括号表示必选项
3.[]表示可选可不选项
4.|表示选择其中一项
5.•CHARACTER SET:指定数据库采⽤的字符集编码
6. COLLATE:指定数据库字符集的校验规则 •
7.ENCRYPTION:数据库是否加密,MySQL8.0.16中引⼊的新选项
1.2.1示例
示例1创建一个名称为test的数据库
示例2自定义一个数据库名,如果数据库不存在则创建
示例3重复上面的语句
warning :这是一个警告
示例4查看警告
show warnings;(注意这里的复数形式)
下面提示这个数据库已经创建了
数据库创建成功后会在数据库目录下生成一个相同名称的数据库目录,用于储存数据库的内容
1.3字符集编码和校验排序规则
1.3.1查看数据库支持的字符集编码
MySQL8.0支持的字符集编码是utf8mb4,MySQL支5.7持的字符集编码是latin1(区别在于前者能够支持中文)
1.3.2查看数据库支持的排序规则
u tf8mb4_0900_ai_ci 是MySQL8.0引⼊的新规则,在⽼版本中不能识别;
• ut f8mb4 编码是对 Unicode 字符集的⼀种实现,⽤1到4个字节表⽰⼀个字符,可以表⽰世界上 ⼏乎所有的字符,⽽且更节少空间
• 0900 是基于UCA9.0.0算法,UCA是UnicodeCollationAlgorithm的缩写
• ai是Accent-insensitive的缩写,表⽰⼝声不敏感
• ci是Case-insensitive的缩写表⽰⼤⼩写不敏感
• as是Accent-sensitive的缩写,表⽰⼝声敏感
• cs是Case-sensitive的缩写,表⽰⼤⼩写敏感
• bin表⽰⼆进制 在 学习完排序之后,可以通过⽰例观察不同排序规则对于⼤⼩写的影响
1.3.3查看默认字符集和排序规则
查看默认字符集
show variables like '%character%';
查看默认排序规则
show variables like '%collation%';
1.3修改数据库
修改数据库需改的是数据库的字符集和校验规则
语法形式
ALTER {DATABASE | SCHEMA} [db_name]alter_option ...alter_option: {[DEFAULT] CHARACTER SET [=] charset_name| [DEFAULT] COLLATE [=] collation_name| [DEFAULT] ENCRYPTION [=] {'Y' | 'N'}| READ ONLY [=] {DEFAULT | 0 | 1}}
示例:将java中的数据库字符集改成gbk
1.4删除数据库
语法形式
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
注意数据库不能随便删除
删除数据库之后文件目录中的数据库文件也会随之删除
2.数据库的数据类型
2.1数据值类型
1.BIN(M) M代表的是二进制的长度,没有标明的是时候默认是1,64个二进制表示8个比特位
2.bool==tinyint(1);
3.INT就是我们常见的int;
4.BIGINT:用在编号字段
5.DECIMAL(M,D):一般表示金额
6.float和double表示小数的时候不是特别的精准,所以一般用decimal来表示小数
7.M中不记录小数点和负号(有效数字的个数),当D为0的时候,那么具体的值就不保存小数(表示的是一个整数)
8.如果省略D默认为0,如果省略M默认为10;
2.2字符串类型与二进制类型
1.varchar(size)是一个最常用的字符串文件(可以指定长度)指定的长度是字符的长度
2.之前设置的字符集编码utf8mb4,中一个字符最多占4个字节。65535/4=16353,根据字符的具体使用1-4个字节表示一个字符。
3.text和medlumtext是文本数据类型,blob是byte[]数组也就是说这存储的的是一个文件的二进制形式
4.文本文件:人类能看懂的文件
二进制文件:一堆乱码,只有机器才能看懂。
2.3日期类型
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
TIMESTAMP类型有专有的自动更新特性,将在后面描述。
3表的操作
3.0查看数据库中的所有的表
show tables;
对表操作的前提,首先要选好数据库
3.1查看表的结构
语法形式
desc 表名;
1.Field表中的列名
2.Type表中的数据类型
3.Null该列值是否运行为Null
4.该值的索引类型
5.该列的默认值
6.扩展信息
3.2创建表
语法形式
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_namefield datatype [约束] [comment '注解内容'][, field datatype [约束] [comment '注解内容']] ...) [engine 存储引擎] [character set 字符集] [collate 排序规则];
TEMPORARY:表⽰创建的是⼀个临时表
• field:列名 • datatype:数据类型
• comment:对列的描述或说明
• engine:存储引擎,不指定则使⽤默认存储引擎
• characterset:字符集,不指定则使⽤默认字符集
• collate:排序规则,不指定则使⽤默认排序规则
示例创建一个用户,包括用户的密码 ,生日,用户编号,用户名,并指定字符集编码和排序规则
示例创建一个学生表
示例创建一个学生表并加上校验(if not exists)
3.3删除表
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
TEMPORARY:表示临时创建的表
tbl_name:将要删除的表名
事务
1.查看事务的支持引擎
2.使用
#
开始⼀个新的事务
STARTTRANSACTION;#
或
BEGIN;
;
#
提交当前事务,并对更改持久化保存
COMMIT;#
回滚当前事务,取消其更改
ROLLBACK;
START TRANSACTION 或 • BEGIN 开始⼀个新的事务;
COMMIT提交当前事务,并对更改持久化保存;
• RO LLBACK 回滚当前事务,取消其更改;
• ⽆论提交还是回滚,事务都会关闭