DDL
数据库(查询/创建/修改/删除)
查询数据库
以下语句的database 可以替换为schema,效果一样
//展示所有的数据库
show database;
//显示当前选择的数据库
select database();
创建数据库
//创建一个数据库叫db_name
create database db_name;
//如果不存在就创建db_name
create database if not exists db_name;
删除数据库
//删除数据库叫db_name
drop database db_name;
//删除数据库叫db_name,如果有才删除
drop database if exists db_name;
使用数据库
//使用数据库名为db_name
use db_name;
表(创建/删除/修改)
创建表
//字段约束为可选,可以不添加
create table 表名(
字段1 字段类型 字段约束 comment 字段注释,
字段2 字段类型 字段约束 comment 字段注释,
字段3 字段类型 字段约束 comment 字段注释,
....
)[comment 表注释];
查询表
//查询数据库下所有的表
show tables;
//查询表的表结构
desc 表名;
//查询建表语句
show create table 表名;
修改表
//添加字段
alter table 表名 add 字段名 类型 约束 comment 注释;
//修改字段类型
alter table 表名 modify 字段名 新数据类型
//修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型 约束 comment 注释;
//删除字段
alter table 表名 drop column 字段名;
//修改表名
rename table 表名 to 新表名;
表字段约束
约束 |
描述 |
关键字 |
非空约束 |
限制该字段不可为null |
not null |
唯一约束 |
保证该字段的所欲数据都是唯一,不重复的 |
unique |
主键约束 |
主键是一行数据的唯一标识,要求非空且唯一 |
primary key |
默认约束 |
保存数据时,如果没有指定值,则使用默认值 |
default |
外键约束 |
让两张表的数据建立联系,保证数据的一致性和完整行 |
foreign key |
表字段的数据类型
主要分为三类,数值类型/字符串类型/日期时间类型
数值类型
类型 |
大小(byte) |
有符号(SIGNED)范围 |
无符号(UNSIGNED范围 |
描述 |
备注 |
tinyint |
1 |
(-128,127) |
(0,255) |
小整数值 |
|
smallint |
2 |
(-32768,32767) |
(0,65535) |
大整数值 |
|
mediumint |
3 |
(-8388608,8388607) |
(0,16777215) |
大整数值 |
|
int |
4 |
(-2147483648,2147483647) |
(0,4294967295) |
大整数值 |
|
bitint |
8 |
(-2^63,2~63-1) |
(0,2^64-1) |
极大整数值 |
|
float |
4 |
(-3.402823466 E+38,3.402823466351 E+38) |
0 和(1.175494351 E-38,3.402823466 E+38) |
单精度浮点数值 |
float(5.2):5表示整个数字长度,2表示小数位个数 |
double |
8 |
(-1.7976931348623157 E+308,1.7976931348623157 E+308) |
0和(2.2250738585072014 E-308,1.7976931348623157 E+308) |
双精度浮点数值 |
double(5.2):5表示整个数字长度,2表示小数位个数 |
decimal |
|
|
|
小数值(精度更高) |
decimal(5.2):5表示整个数字长度,2表示小数位个数 |
日期类型
类型 |
大小 |
范围 |
格式 |
描述 |
date |
3 |
1000-01-01 至 9999-12-31 |
YYYY-MM-DD |
日期值 |
time |
3 |
-838:59:59 至 838:59:59 |
HH:MM:SS |
时间值或持续时间 |
year |
1 |
1911-2155 |
YYYY |
年份值 |
datetime |
8 |
1000-01-01 00:00:00 至 9999-12-31 23:59:59 |
YYYY-MM-DD HH:MM:SS |
混合日期和时间值 |
timestamp |
4 |
1970-01-01 00:00:01 至2038-01-19 03:14:07 |
YYYY-MM-DD HH:MM:SS |
混合日期和时间值,时间戳 |
字符串类型
类型 |
大小 |
描述 |
char |
0-255bytes |
定长字符串-->例如(char(10),无论是三个还是四个字符都是占用10个字符空间)性能高,但是浪费空间 |
varchar |
0-65535bytes |
变长字符串-->例如(varchar(10),最多10个字符,不足10个按实际长度存储)性能低,节省空间 |
tinyblob |
0-255bytes |
不超过255个字符的二进制数据 |
tinytext |
0-255bytes |
短文本字符串 |
blob |
0-65535bytes |
二进制的长文本数据 |
text |
0-65535bytes |
长文本数据 |
mediumblob |
0-16777215bytes |
二进制形式的中等长度文本数据 |
mediumtext |
0-16777215bytes |
中等长度文本数据 |
longblob |
0-4294967295bytes |
二进制形式的极大文本数据 |
longtext |
0-4294967295bytes |
极大文本数据 |