数据库相关
展示所有数据库
show databases
创建数据库
creat database [if not exists] '数据库名' charset=字符编码(utf8mb4);
切换到数据库
use python201
删除数据库
drop database 'dbname';
表格相关
创建表:
creat table '表的名字'(
id int primary key auto_increment commment ""用户的唯一标示"",
name varchar(128), # 至少要写字段的名字和数据类型
age int,
tel varchar unique # 字段tel 有唯一约束
)charset=utf8mb4;
primary key : 主键,代表此列的数值需要是唯一值
auto_increment : 代表自增,会在新记录插入表中时生成一个唯一的数字
comment :注释
修改数据库的编码方式
alter database 'dbname' charset=utf8;
查看表格式
desc/describe tablename
查看建表语句
show create tablename
修改表名:
alter table 'oldname' rename 'newname';
移动表:
alter table 'tablename' rename to 'dbname.tablename';
删除表:
drop table 'tablename';
表字段相关
增加一个新的字段:
alter table 'tablename' add '字段名' 数据类型 [属性];
增加一个新的字段,并放在首位:
alter table 'tablename' add '字段名' 数据类型 [属性] first;
增加一个新的字段,并放在某字段后:
alter table 'tablename' add '字段名' 数据类型 [属性] after '指定字段';
修改字段属性:
alter table 'tablename' modify '字段名' 数据类型 [属性];
修改字段名称及属性:
alter table 'tablename' change '原字段名' '新字段名' 数据类型 [属性];
修改字段位置:
alter table 'tablename' change '原字段名' '新字段名' 数据类型 [属性] after '指定字段';
删除字段:
alter table 'tablename' drop '字段名'
数据相关
增:Create
insert 语句用来插入数据:
insert into 'table_name'('字段1,字段2,...') values('v1,v2,...')
insert into 'table_name' value('v1,v2,...')
查:Read
select 语句来查询数据,一般会配合where或having来进行条件判断
select '字段' from 'table_name'
distinct:查找的数据去除重复项
select distinct '字段' from 'table_name'
改:Update
update 语句用来修改数据,一般会配合where来进行条件判断
update 'tablename' set '字段名'='新数据' where '字段(ID)'='数据';
删:Delete
delete 语句用来删除数据,一般会配合where来进行条件判断
delete from 'tablename' where '字段(id)'='数据'
delete from 'tablename' 删除表里的所有数据
truncate 'tablename' 清空表格
不建议使用的复制表格命令:因为复制的时候不会复制表格里的字段属性
creat table tablename1 select * from tablename2;
创建tablename1,将tablename2里所有的数据复制到tablename1
复制表格命令:
creat table tablename1 like tablename2
创建tablename1,将tablename2里的字段和字段属性复制到tablename1、不复制数据
insert into tablename1 select * from tablename2;
创建tablename1,将tablename2里所有的数据复制到tablename1
不同字符集有不同的校对规则,
命名约定:以其相关的字符集名开始,通常包括一个语言名,并且以’_ci’、’_cs’或’_bin’结束
_ci 大小写不敏感
_cs 大小写敏感
_bin binary collation 二元法,直接比较字符的编码,可以认为是区分大小写的,因为字符集中'a'和'A'的编码是显然不同的
查看字符集和校对集:
show character set;
显示所有的校对集:
show collation;
数据类型:
tinyint unsigned
tinyint:最小型的整数 0-255
unsigned:无符号数字
显示宽度:整型显示宽度,位数不足时用0填充
int(5) zerofill
浮点型:M是支持的长度,D是小数点后面的位数
float(M,D)
double(M,D)
decimal(M,D)
字符串类型:
CHAR(M) M为自定义的字符串长度,固定占M个字节,不足的在结尾用空格补齐 为0-255之间的整数
VARCHAR(M) M为0-65535之间的整数 值的长度+1个字节,用来纪记录位长
TINYBLOB 允许长度0-255字节,值的长度+1字节
BLOB 允许长度0-65535字节,值的长度+2字节
MEDIUMBLOB 允许长度0-167772150字节,值的长度+3字节
LONGBLOB 允许长度0-4294967295字节,值的长度+4字节
TINYTEXT 允许长度0-255字节,值的长度+1字节
TEXT 允许长度0-65535字节,值的长度+2字节
MEDIUMTEXT 允许长度0-167772150字节,值的长度+3字节
LONGTEXT 允许长度0-4294967295字节,值的长度+4字节
VARBINARY(M) 允许长度0-M字节的变长字节字符串,值的长度+1字节
BINARY(M) 允许长度0-M字节的变长字节字符串
枚举:当字段属性为枚举时,该字段下的数据则只能为列出数据的其中之一
enum('a','b','c')
集合:当字段属性为枚举时,该字段下的数据则只能从列出数据中选择
set('a','b','c')
布尔类型:bool 储存的值最大为127,最小为-128
True:1 False:0
时间类型 | 字节 | 最小值 | 最大值 |
DATE | 4 | 1000-01-01 | 9999-01-01 |
DATETIME | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
TIMESTAMP | 4 | 19700101080001 | 2038年的某个时刻 |
TIME | 3 | -838:59:59 | 838:59:59 |
YEAR | 1 | 1901 | 2155 |
数据属性
无符号数字属性: | unsigned |
设置默认值: | default [默认值] |
不允许设置空值: | not null |
给表字段添加注释: | comment ‘注释内容’ |
查看表的注释 | show full columns from tablename |
自动增长的列、默认从1开始、一般配置主键使用 | auto_increment |
唯一性: | unique |
主键,代表此列的数值需要是唯一值: | primary key |