其他分享
首页 > 其他分享> > day34

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