略(公司一般会有专门负责数据库权限的管理人员 开发人员可以暂时不去了解 用到时查看下文档)
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;
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)
===》一对多
===》一对一(外键+唯一索引)
===》多对多
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