数据库和表操作以及完整性约束
一.库操作
1.创建库
create database 库名[charset utf8]; 创建库[字符集为utf8] 默认为utf8
2.查看库
show databases; 查看所有库
show create database 库名; 查看某个库的创建信息
select database(); 查看当前操作的数据库名
3.删除库
drop database 库名; 删除某个库
4.修改库
alter database 库名 charset utf8; 修改库的字符集为utf8
二.mysql的存储引擎
1.innoDB引擎
特点:1.支持事务
2.行级锁定
3.读写阻塞与事务隔离级别有关
4.高效缓存(索引和数据)
5.支持外键约束
2.MyISAM引擎
特点:1.不支持事务
2.表级锁定
3.读写互相阻塞
4.只能缓存索引
5.不支持外键约束
三.SQL的数据类型
1.数值类型
2.日期类型
year YYYY
data YYYY-mm-dd
time HH:MM:SS
datatime YY-mm-dd HH:MM:SS
timestamp YYmmdd HHMMSS
3.字符串类型
char 定长字符串
varchar 不定长字符串
4.枚举和集合类型
enum("a","b","c") 单选
eg :
create table shirts(name char(20) , size enum("xxl","xl");
insert into shirts(name,size) values ("dress shirt","xxl"),("T-shirt,"xl");
set("a","b","c") 多选
eg:
create table myset (col set("a","b","c","d"));
insert into myset (col) values("a,b"),("a","b","c")
四.完整性约束
1.空和默认值
not null 不能为空,如果不约束默认为能为空
default 默认值
2.唯一,可以加速查询
unique 约束字段名必须唯一
unique(字段名1,字段名2) 联合唯一
3.主键
primary key 主键,不能为空且唯一,一张表必须有且只有一个主键
primary key(字段名1,字段名2) 联合主键
4.自动增长(用于主键)
auto_increment 约束字段为自动增长,上一条数据+1,默认为1
5.外键
foreign key 外键,标明表和表之间的关系
[constraint 外键名]foreign key (字段名) references 表名(字段名) [on update cascade on delete cascade]
五.表操作
1.创建表
create table 表名(字段名1,类型[(宽度) 约束条件],
字段名2,类型[(宽度) 约束条件]);
2.查看表结构
describe 表名; 查看表结构
show create table 表名\G; 查看表详细结构
3.修改表 alter table
1.修改表名
alter table 表名 rename 新表名
2.增加字段
alter table 表名 add 字段名 类型[(宽度) 约束条件 位置];
3.删除字段
alter table 表名 drop 字段名;
4.修改字段
alter table 表名 modify 字段名 类型 [约束条件];
alter table 表名 change 旧字段名 新字段名 旧数据类型 [约束条件]; 可以想改就改
5.增加外键
alter table 表名 add [constraint 外键名]foreign key (字段名) references 表名(字段名);
6.增加主键
alter table 表名 add primary key(字段名);
7.修改主键[自动增长]
alter table 表名 modify 字段名 类型 primary key [auto_increment];