day34
作者:互联网
day34
补充外键
create table t1(
nid int(11) not null auto_increment,
pid int(11) not null,
num int(11) null,
primary key (nid,pid)
) engine=innodb default charset=utf8;
#一个表只能有一个主键,但是一个主键可以写在两行
create table t2(
id int auto_increment primary key,
name char(10),
id1 int,
id2 int,
constraint fk_t1_t2 foreign key (id1,id2) references t1 (nid,pid)
)engine=innodb default charset=utf8;
自增
desc t1; #查看数据类型
show create table t1; #显示表的创建过程 后面加上/g 是竖着看、
alter table t1 auto_increment-12; #设置自排序的序号
基于会话级别:
show session variables like "auto_inc%"; #查看全局变量
set session auto_increment_increment=2; #设置会话步长
set session auto_increment_offset=10; #起始值
基于全局级别:
show global variables like "auto_inc%"; #查看全局变量
set global auto_increment_increment=2; #设置全局会话步长
set global auto_increment_offset=10; #起始值
唯一所引
create table t1(
id int...,
num int,
unique uq1 (num) #把num设置唯一性,联合唯一
)
1 1 1 #约束不能重复,主键不能重复(不能为空),加速查找
1 1 2 #联合唯一是一组变化
外键的变种
-
一对一
-
一对多
-
多对多
SQL语句数据行操作补充
增
insert into tb11(name,age) values ("alex",12);
#单行插入
insert into tb11(name,age) values ("alex",12),("root",18)
#多行插入
insert into tb12(name,age) values name,age from tb11;
#将其他表的某行数据放到tb12中
查
select * from tb12;
select id,name as cname form tb12 vhere id >10 or name ="xxx"; #设置别名
select name,age ,11 from tb12;
其他
select * from tb12 where id !=1
select * from tb12 where id in(1,5,12);
select * from tb12 where id not in (1,5,12);
select * from tb12 where id between 5 and 12; #两个都显示,显示两个数中间的所有数据
select * from tb12 where id in (select id from tb11)
通配符
select * from tb12 where name like "a%" #显示以a开头的,百分号是所有,下划线是一个
select * from tb12 where name like "a_" #显示以a开头的,百分号是所有,下划线是一个
范围
select *from tb12 limit 10;
#拿十条数据
select *from tb12 limit 0,12;
#第一个只是起始位置,第二个是在起始位置的后面拿几条数据
select *from tb12 limit 0 offset 20;
#offset是起始位置,limit 取几条数据功能一样
排序
select * form tb12 order by id desc; 降序
select * form tb12 order by id asc; 升序
select * from tb12 order by id desc,age asc;#根据id 从大到小排序,如果相同则按列age从大到小排序
分组
select count(id),part_id from userinfo group by part_id;
#计数 分组
select count(id),part_id from userinfo group by part_id having count(id) >1;
#入股对于聚合函数结果进行二次筛选时?必须使用having
链表查询
select * from a,b where a.id = b.did
#链接显示
select * from a left join b on a.id=b.did
#功能一样推荐你用这个
#a左边全部显示
select*from a right join b on a.id=b.did
#b右边全部显示
select*from a innder join b on a.id=b.did
#隐藏带有null的那行数据
select
score.sid,
studet.sid
from
score
left join student on score.student_id =student.sid
left join course on score.course_id = course.cid
left join class on student.class_id = class.cid
left join teacher on course.teacher_id =id = teacher.tid
www.cnblogs.com/wupeiqi/articles/5729934.html
day34
补充外键
create table t1(
nid int(11) not null auto_increment,
pid int(11) not null,
num int(11) null,
primary key (nid,pid)
) engine=innodb default charset=utf8;
#一个表只能有一个主键,但是一个主键可以写在两行
create table t2(
id int auto_increment primary key,
name char(10),
id1 int,
id2 int,
constraint fk_t1_t2 foreign key (id1,id2) references t1 (nid,pid)
)engine=innodb default charset=utf8;
自增
desc t1; #查看数据类型
show create table t1; #显示表的创建过程 后面加上/g 是竖着看、
alter table t1 auto_increment-12; #设置自排序的序号
基于会话级别:
show session variables like "auto_inc%"; #查看全局变量
set session auto_increment_increment=2; #设置会话步长
set session auto_increment_offset=10; #起始值
基于全局级别:
show global variables like "auto_inc%"; #查看全局变量
set global auto_increment_increment=2; #设置全局会话步长
set global auto_increment_offset=10; #起始值
唯一所引
create table t1(
id int...,
num int,
unique uq1 (num) #把num设置唯一性,联合唯一
)
1 1 1 #约束不能重复,主键不能重复(不能为空),加速查找
1 1 2 #联合唯一是一组变化
外键的变种
-
一对一
-
一对多
-
多对多
SQL语句数据行操作补充
增
insert into tb11(name,age) values ("alex",12);
#单行插入
insert into tb11(name,age) values ("alex",12),("root",18)
#多行插入
insert into tb12(name,age) values name,age from tb11;
#将其他表的某行数据放到tb12中
查
select * from tb12;
select id,name as cname form tb12 vhere id >10 or name ="xxx"; #设置别名
select name,age ,11 from tb12;
其他
select * from tb12 where id !=1
select * from tb12 where id in(1,5,12);
select * from tb12 where id not in (1,5,12);
select * from tb12 where id between 5 and 12; #两个都显示,显示两个数中间的所有数据
select * from tb12 where id in (select id from tb11)
通配符
select * from tb12 where name like "a%" #显示以a开头的,百分号是所有,下划线是一个
select * from tb12 where name like "a_" #显示以a开头的,百分号是所有,下划线是一个
范围
select *from tb12 limit 10;
#拿十条数据
select *from tb12 limit 0,12;
#第一个只是起始位置,第二个是在起始位置的后面拿几条数据
select *from tb12 limit 0 offset 20;
#offset是起始位置,limit 取几条数据功能一样
排序
select * form tb12 order by id desc; 降序
select * form tb12 order by id asc; 升序
select * from tb12 order by id desc,age asc;#根据id 从大到小排序,如果相同则按列age从大到小排序
分组
select count(id),part_id from userinfo group by part_id;
#计数 分组
select count(id),part_id from userinfo group by part_id having count(id) >1;
#入股对于聚合函数结果进行二次筛选时?必须使用having
链表查询
select * from a,b where a.id = b.did
#链接显示
select * from a left join b on a.id=b.did
#功能一样推荐你用这个
#a左边全部显示
select*from a right join b on a.id=b.did
#b右边全部显示
select*from a innder join b on a.id=b.did
#隐藏带有null的那行数据
select
score.sid,
studet.sid
from
score
left join student on score.student_id =student.sid
left join course on score.course_id = course.cid
left join class on student.class_id = class.cid
left join teacher on course.teacher_id =id = teacher.tid
www.cnblogs.com/wupeiqi/articles/5729934.html
标签:name,auto,day34,increment,tb12,id,select 来源: https://www.cnblogs.com/fxy1024/p/14993613.html