SQL55 分页查询 SQL57 exists SQL45 修改表名 SQL46 添加外键 SQL32连接字符


一、SQL55 分页查询

分页查询employees表,每5行一页,返回第2页的数据

SELECT *
FROM employees
LIMIT 5 OFFSET 5

limit子句用于限制查询结果返回的数量,常用于分页查询

二、SQL57 exists

(1) 使用含有关键字exists查找未分配具体部门的员工的所有信息。

SELECT * 
FROM A 
WHERE EXISTS 
	(SELECT 1 
	 FROM B 
	 WHERE B.id = A.id); 
	 # EXISTS子句返回一个布尔值
	 # EXISTS只在乎子查询中是否有记录,与具体的结果集无关

EXISTS执行顺序:

1、首先执行一次外部查询,并缓存结果集,如 SELECT * FROM A

2、遍历外部查询结果集的每一行记录R,代入子查询中作为条件进行查询,如 SELECT 1 FROM B WHERE B.id = A.id

3、如果子查询有返回结果,则EXISTS子句返回TRUE这一行R可作为外部查询的结果行,否则不能作为结果

https://zhuanlan.zhihu.com/p/351922940

(2) IN
IN常用于where表达式中,其作用是查询某个范围内的数据。

select * 
from A 
where field in (value1,value2,value3,) 

(3)什么时候用EXISTS,什么时候用IN?
在主表和从表都对关联的列建立索引的前提下:
当主表比从表大时,IN查询的效率较高;
当从表比主表大时,EXISTS查询的效率较高;
原因如下:
in是先执行子查询,得到一个结果集,将结果集代入外层谓词条件执行主查询,子查询只需要执行一次
exists是先从主查询中取得一条数据,再代入到子查询中,执行一次子查询,判断子查询是否能返回结果,主查询有多少条数据,子查询就要执行多少次

具体代码如下:

SELECT *
FROM employees e
WHERE NOT EXISTS
    (
    SELECT 1
    FROM dept_emp d 
    WHERE e.emp_no=d.emp_no
    )

三. SQL45 修改表名

将titles_test表名修改为titles_2017。

RENAME TABLE titles_test to titles_2017;
ALTER TABLE titles_test
RENAME TO titles_2017;
ALTER TABLE titles_test
RENAME titles_2017;

在这里插入图片描述

4. SQL46 添加外键

alter table 表名 
add constraint 外键约束名
foreign key(列名) references 引用外键表
ALTER TABLE audit
ADD CONSTRAINT FOREIGN KEY(emp_no)
REFERENCES employees_test(id);

5.SQL32连接字符

将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分

SELECT CONCAT(last_name,' ',first_name) as NAME 
FROM employees;

(1) CONCAT(s1,s2,s3)
连接一个或者多个字符串
(2) CONCAT_WS(separator,str1,str2,…)

第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间
(3)group_concat()分组拼接函数

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
select id,group_concat(name) from aa group by id;


   |1 | 10,20,20|
  |2 | 20 |
  |3 | 200,500|

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值