mysql+msi+asc_MySQL学习笔记(二)

看来我是没有办法七天看完了。不过我一定会在寒假结束前学完的!

#先说一些杂七杂八的补充内容

(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时一行隐藏,实际上出现的是交集

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值