美文网首页
MYSQL联动组合查询

MYSQL联动组合查询

作者: dream_seeker | 来源:发表于2020-07-21 11:12 被阅读0次

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;

相关文章

  • MYSQL联动组合查询

    1、mysql自增可以设置设置auto_increment一个起始值ALTER TABLE 表明 AUTO_INC...

  • MySql 组合查询

    在多数情况下,组合相同表的两个查询完成的工作与具有多个where字句条件的单条查询完成的工作相同。这两种技术在不同...

  • 聊聊mysql的多列组合查询

    序 本文主要展示如何使用mysql的多列组合查询 何为多列组合查询呢,就是查询的值不再是单个列的值,而是组合列的值...

  • 【MySQL必知必会】学习笔记Day8

    【MySQL必知必会】学习笔记Day8&1.31&D17章&P113-118页 15、组合查询 (1)组合查询 有...

  • chapter17:组合查询

    利用UNION操作符将多条SELECT语句组合成一个结果集。 组合查询 MySQL允许执行多个查询并将结果作为单个...

  • MySQL——组合查询(十一)

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQ...

  • MySQL 组合查询UNION

    通常情况下,SQL查询语句都只包含从一个或多个表中返回数据的单条语句。在MySQL中允许执行多条select语句的...

  • mysql组合查询union

    1.组合查询必须由2条或2条以上的select语句组成,语句之间使用union2.union的每个查询必须包含相同...

  • mysql查询到底用了组合索引的哪些字段

    工作中,我们常常使用到mysql的组合索引,但怎样判断mysql查询时,使用了组合索引的那些字段呢?最近从我司DB...

  • MySQL必知必会系列二

    读完MySQL必知必会系列一,我们可以进一步了解MySQL中的数据处理函数,分组查询,联结表,以及组合查询的相关内...

网友评论

      本文标题:MYSQL联动组合查询

      本文链接:https://www.haomeiwen.com/subject/ojchiftx.html