该文档使用的MySQL版本为 5.7.19
零基础学习MySQL 5.7.19
数据库(Database)操作
创建数据库(create)
#默认方式创建,默认情况下,字符集是utf8,校对规则是uft8_general_ci
#如果数据库已经存在,创建会报错,加上IF NOT EXISTS可以避免已存在的报错
CREATE DATABAS [IF NOT EXISTS] 数据库名
#指定字符集
CREATE DATABASE 数据库名 CHARACTER SET utf8
#指定字符集和校对规则
CREATE DATABASE 数据库名 CHARACTER SET utf8 COLLATE utf8_bin
校对规则 :
#区分大小写
uft8_bin
#不区分大小写
uft8_general_ci
删除数据库 (drop)
一定要谨慎使用!
DROP DATABASE [IF EXISTS] 数据库名;
查询数据库
#查询所有数据库
SHOW DATABASES;
#查询数据库创建语句
SHOW CREATE DATABASE 数据库名;
数据库备份
在DOS执行
指令 | 讲解 |
---|---|
-B | 表示后面的都是数据库,可以同时备份多个数据库 |
mysqldump -u 用户名 -p -B 数据库1 [数据库2 数据库n] > 路径/文件名.sql
数据库恢复
在Mysql命令行执行
Source 文件名.sql
表(Table)操作
创建表(create)
CREATE TABLE 表名(
field1 datatype,
field2 datatype,
field3 datatype
> ) CHARACTER SET 字符集 COLLATE 校对规则 ENGINE 存储引擎;
参数 | 讲解 |
---|---|
field | 列名,字段 |
datatype | 指定列的类型(字段类型),如int、varchar、double等 |
CHARACTER SET | 字符集,如utf8、gbk等,不指定则为所在数据库字符集 |
COLLATE | 校对规则,如utf8_bin,不指定则为所在数据库校对规则 |
ENGINE | 存储引擎 |
字段类型
数值类型
整数默认情况下范围都是有符号的,无符号需要在类型后加上 unsigned。如:
age TINYINT unsigned
id INT unsigned
salary DOUBLE unsigned
…
DECIMAL支持更加精确的小数位,M是小数位数的总数(精度),D是小数点后保留的位数(标度),M最大是65,D最大是30。不填写的情况下,M默认是10,D默认是0,用法:
DECIMAL(M,D) [unsigned]
字符串类型
注意: char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。
日期和时间类型
TIMESTAMP 一般会设置为非空、默认值是当前时间戳,当更新时也会改为更新时的最新时间戳:
CREATE TABLE t1(
login_time TIMESTAMP
NOT NULL #不为空
DEFAULT CURRENT_TIMESTAMP #默认设为当前时间戳
ON UPDATE CURRENT_TIMESTAMP #更新修改成当前时间戳
)
约束
主键(primary key)
用于唯一的标示表行的数据,当定义主键约束后,该列不能有重复数据,且不能为空
一张表里只能有一个主键,但可以是复合主键,如(id+name)
字段 数据类型 PRIMARY KEY
#复合主键
PRIMARY KEY(字段1,字段2)
非空(not null)
该字段必须添加数据,不能为空
字段 数据类型 NOT NULL
唯一(unique)
该字段的值是唯一的,不能有重复
如果没有给字段指定not null,则unique字段可以有多个null
字段 数据类型 unique
外键(foreign key)
注意事项:
用于定义主表和从表之间的关系,主键要定义在主表上,外键要定义在从表上
当从表指定了外键,在从表插入数据时,主表里必须要有对应的数据,否则会插入失败
外键指向的表的字段要求是primary key 或者是unique
表的类型必须是innodb
外键的类型要和主键的类型保持一致(长度可以不同)
一旦建立了外键的关系,
FOREIGN KEY (本表字段) REFERENCES 外表(字段)
check
注意: 目前mysql5.7还不支持
用于约束
自增长(auto_increment)
字段 整数 PRIMARY KEY AUTO_INCREMENT
一般自增长和primary key一起使用,单独使用的时候需要和unique搭配使用
自增长默认从1开始,可以通过修改alter table 表名 auto_increment = 新的开始值;
插入数据
#当第一个字段为自增长,插入自增长字段数据时用null
insert into 表名 values(null,数据1,数据2)
储存引擎(Storage Engines)
#查看所有的存储引擎
SHOW ENGINES;
常用的4种引擎特点
修改存储引擎
ALTER TABLE 表名 ENGINE = 存储引擎;
表操作
删除表(drop)
一定要谨慎使用!
drop table 表名;
修改表
修改表名(rename)
rename table 原表名 to 新表名