权限管理
略(公司一般会有专门负责数据库权限的管理人员 开发人员可以暂时不去了解 用到时查看下文档)
常用语法(8.0之后略有不同)
操作数据库以及数据表
create database db_test default charset utf8;
show databases;
drop database db_test;
show tables;
create table t1(
列名,类型,是否为空(null/not null),默认值(default 10),auto_increment,primary key
id int(11),
name char(10)
) engine=innodb default charset=utf8;
drop table t1;
表操作之增删改查
insert into t1(id,name) values(1,'schlafen');
select * from t1;
delete from t1;
update t1 set age =999 where name = 'schlafen';
truncate table t1;
数据类型
- 数字
int(ubsigned int 无符号)
tinyint
bigint
FLOAT
DOUBLE
decimal(精准存储 底层字符串)
-
字符串
char(位数严格 多出来的自动填充 速度快)
varchar(节省空间)
text -
时间类型
DATETIME
数据库基础
主键
primary key
一张表只有1个主键,一个主键可以是多列
create table t1(
nid int(11),
pid int(11),
primary key(nid,pid)
) engine=innodb default charset=utf8;
唯一索引
约束不能重复(可以为空,区别于主键的不能为空)
加速查找
create table t1(
id int(11),
num int(11),
xx int(11),
//unique uql(num)
//unique uql(num,xx) 联合唯一索引
) engine=innodb default charset=utf8;
外键
外键名字不能重复 外键的列必须为原表主键
t1表k1 外键约束 t2表k2
constraint fk_k1_k2 foreign key("k1",) references t2('k2')
多列主键时-->
constraint fk_k1_k2 foreign key(id1,id2) references t2(nid,pid)
===》一对多
===》一对一(外键+唯一索引)
===》多对多
SQL语句补充
增
1.单条插入
2.多条插入 values(x,x,x),(xx,xx,xx)
3.select插入 insert into t1 select id,name from t2
查
1.别名:select id ,name as cname from t1
2.条件
not in (1,11,111)
between 1 and 10
3.通配符
like 'a%' like 'sch_'
4.显示
limit 10 取10条
limit 1,10 从第1条开始 取一共10条
limit 10 offset 20 从第20条开始 取一共10条
5.排序
6.分组+聚合函数
count max min sum avg
group by
对聚合函数二次筛选时 不能使用where 使用having!!!
7.连表操作
select * from t1,t2 where t1.nid = t2.pid //笛卡尔积做where
select * from t1 left join t2 on t1.nid = t2.pid//推荐
8.临时表
select ... from (select ...) as B