1、mysql自增
可以设置设置auto_increment一个起始值
ALTER TABLE 表明 AUTO_INCREMENT=180460
改变自增的步长:
修改步长:
SET SESSION auto_increment_increment=2(设置步长的值)////会话步长
修改步长:
SET global auto_increment_increment=2(设置步长的值)///全局步长
2、创建计算字段
拼接字段
CONCAT():
拼接( concatenate) 将值联结到一起构成单个值。 解决办法是把两个列拼接起来。在MySQL的SELECT语句中,可使用CONCAT函数来拼接两个列。
SELECT CONCAT(student_id,student_name) AS name_id FROM studentinfo;
SELECT CONCAT(student_id,'(',student_name,')') AS name_id FROM studentinfo;
注意:这里使用拼接函数将两个不同的列凭借在了一起,并且新起了一个别名为name_id
RTrim()
RTrim()函数去掉值右边的所有空格。通过使用RTrim(),各个 列都进行了整理。
SELECT CONCAT(student_id,'(',RTRIM(student_name),')') AS name_id FROM studentinfo;
3、加密函数
name desc exprote
PASSWORD(str) 函数可以对字符串str进行加密。一般情况下,PASSWORD(str)函数主要是用来给用户的密码加密的。 SELECT PASSWORD('abcd');
MD5(str) MD5(str)函数可以对字符串str进行加密。MD5(str)函数主要对普通的数据进行加密。
4、条件判断
(1)if(a1,a2,a3)如果a1为 TRUE,则返回a2,否则返回a3
例题:select if(age>30,1,0) from 表名
(2)if null (v1,v2)如果v1 不为null,返回v1,否则返回v2
例题:select if null(phonenum,'123') from 表名
(3)select 列名,case when age>50 then age else 0 end from 表名
注意:当满足条件age>50时,返回age 否则返回0
5、三范式
1NF:列不可再分(尽量细的去拆分每一列)
2NF:1.一个表必须要有一个主键(这个主键可以由单个列,或者多个列组成)
2.非主键的列,必须完全依赖于主键,而不是及部分依赖于键
3NF:在第二范式的基础上,不能存在传递依赖,非主键的列,必须直接依赖
6、E-R模型
E:Entry 表示实体,其实就是根据某一个事物的体征,添加描述信息,我们将
这些描述信息添加在一个表(table)里面,那么这个表就相当于一个实体。
R:Relationship 关系,在这里其实就是指的表与表之间的关系
一对一:个人信息与身份证
7、外键
constraint SFZ_ID foreign key(外键列) references 另一个表的名字(id)on delete cascade
添加外键: alter table表名 add constraint SFZ_ID foreign key(外键列) references 另一个表的名字(id)on delete cascade
删除外键:alter table 表名 drop foreign key 外键名
8、连结查询
内联结?
inner join 表名 on 表名.外键=表名.主键
select * from students inner join classes on students.clsid=classes.id;
添加条件
select * from students inner join classes on students.clsid=classes.id where classes.id > 1;
为表添加别名
select s.id,s.name,c.name from students as s inner join classes as c on s.clsid=c.id where c.id > 1;
外联结?
左联结
left join 表名 on 表名.外键=表名.主键
select s.id,s.name,c.name from students as s left join classes as c on s.clsid=c.id where c.id > 1;
右联结
right join 表名 on 表名.外键=表名.主键
select s.id,s.name,c.name from students as s right join classes as c on s.clsid=c.id where c.id > 1;
9、子查询和组合查询
子查询中特定关键字使用
in 范围
格式: 主查询 where 条件 in (列子查询)
select * from students where clsid in(select id from classes);
any 相当于或条件(只要满足的any中的任意一个条件即可)
select * from students where clsid>any(select id from classes);
格式: 主查询 where 条件 (比较运算符) any (列子查询)
all 相当于and(必须同时满足and括号里面的条件)
select * from students where clsid!=all(select id from classes);
格式: 主查询 where 条件 (比较运算符) all (列子查询)
union组合查询
UNION:使用UNION连接的查询语句,会将查询到的结果汇总并去重(去除重复的记录)
select * from students where id > 180506 UNION select * from students where gender=1 order by id desc limit 3;
=>
select * from students where id > 180506 or gender=1 order by id desc limit 3;
UNION ALL:使用UNION连接的查询语句,会将查询到的结果汇总不去重,假如有形同的记录会返回多条
select * from students where id > 180506 UNION ALL select * from students where gender=1 order by id desc limit 3;