看来我是没有办法七天看完了。不过我一定会在寒假结束前学完的!
#先说一些杂七杂八的补充内容
(1)desc t1 :展示表格每列信息:如数据类型。主键列,自增列等。
(2)show create table t1 :显示创建时写的语句。show create table t1\G 可以将显示结果规范化(就是看起来方便点)。
(3)如果主键由多列构成的话,就新增一条语句,primary key(nid, pid)。
一、au_to increment自增列起始值与步长的更改
1. 更改起始值设置
alter table t1 auto_increment = 10
2. 步长更改
MySQL的步长更改是基于会话级别
-session级别
show session variables like 'auto_inc%'; #查看全局变量set session auto_increment_increment=2; #设置会话步长
-global级别
SqlServer的自增步长是基于表级别,即在创建表时可设置步长的值。(不过其实在mysql里面创建表的时候,在括号外面写一个auto_increment = 10也可以更改自增列自增初始值为10)
二、唯一索引
作用:约束,快速查询
unique xxx(nid) (xxx为自己编写的唯一索引的名字,nid为表中的列名,可以是多个,做联合唯一索引)
与主键的区别:(1)唯一索引里可以有空值,但主键不行。(2)一张表里可以有多个唯一索引(非联合索引),但是只能有一个主键。
三、MySQL外键变种
1.一对一操作
一对一:如一个用户只有一个博客网址
操作方法:使用外键+唯一索引
例子:
create tableuserinfo1(
idint auto_increment primary key,
namechar(10),
genderchar(10),
emailvarchar(64)
)engine=innodb default charset=utf8;create tableadmin(
idint not null auto_increment primary key,
usernamevarchar(64) not null,
passwordVARCHAR(64) not null,user_id int not null,unique uq_u1 (user_id),CONSTRAINT fk_admin_u1 FOREIGN key (user_id) REFERENCESuserinfo1(id)
)engine=innodb default charset=utf8;
2. 多对多操作
多对多:一个人可以多多个博客,一个博客可以多人共用
操作方法:一般会建立第三个表,有两列外键,不设置唯一索引 (剧情情况具体分析)
四、MySQL增删改查的补充知识
1. 增加数据
(1)一次性插入多个数值
insert into tb11(name,age) values('alex',12),('root',18);
(2) 将t1表的内容插入t2当中
insert into tb12(name,age) select name,age from tb11;
2. 查找数据
(1)通配符——关键词为like
select xx from t1 where name like"a_"select xx from t1 where name like "a%"
# 第一个表示查找以a开头的俩字符的字符串,第二个表示查找以a开头的字符串,不限制长度
(2) 筛选条件
where / in / not in / between and / != / and /or /
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 in (select id fromtb11)select from tb12 where id between 5 and 12;
五、limit,order by与group by
1. limit 表示取查找内容的前n个
select from t1 limit 4;
select from tb12 limit 0,10; # 从第一个开始取,共取10个
select from tb12 limit 10,10; # 从第十一个开始取,共取10个
select from tb12 limit 20,10; # 从第二十一个开始取,共取10个
select from tb12 limit 10 offset 20; # 从第二十一个开始取,共取10个
2. order进行排序
order by (列名) asc/dcs #(dcs为从大到小进行排序,默认为asc)
select from tb12 order by id desc; 大到小select from tb12 order by id asc; 小到大select from tb12 order by age desc,id desc; #多条件排序
取后10条数据select from tb12 order by id desc limit 10;
3. group by 进行分组操作——结合聚合函数进行操作
select count(id)/sum(id) from t1 group by(part_id);
# 需要注意的是group与where不并存,在分组时进行筛选需要用havingselect count(id) from t1 group by (part_id) having count(id) > 10;
六、MySQL连表操作——重点
1. 第一种方法
select from userinfo5,department5 where userinfo5.part_id = department5.id
2. 第二种方法
(1)left join
select from userinfo5 left join department5 on userinfo5.part_id =department5.id
# userinfo5左边全部显示,以左边的userinfo5.part_id为准,进行链接。右边没有的以null填充
(2)right join
select from userinfo5 right join department5 on userinfo5.part_id =department5.id
# department5右边全部显示,以右边的department5.id为准,进行链接
(3)inner join
select from userinfo5 innder join department5 on userinfo5.part_id =department5.id
#将出现null时一行隐藏,实际上出现的是交集