mysql查询语句进阶

时间:2019-08-22
本文章向大家介绍mysql查询语句进阶,主要包括mysql查询语句进阶使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
-- 内连接查询
SELECT id,name,age,dept_name
FROM tb_students_info INNER JOIN tb_departments
WHERE tb_students_info.dept_id=tb_departments.dept_id;

-- 左外连接查询
SELECT name,dept_name
FROM tb_students_info s
LEFT OUTER JOIN tb_departments d
ON s.dept_id = d.dept_id;

-- 右外连接查询
SELECT name,dept_name
FROM tb_students_info s
RIGHT OUTER JOIN tb_departments d
ON s.dept_id = d.dept_id;

-- 自连接查询
SELECT s1.id, s1.name
FROM tb_students_info s1,tb_students_info s2
WHERE s1.dept_id=s2.dept_id
AND s2.id = 1;

-- IN子查询
SELECT name FROM tb_students_info
WHERE dept_id IN
(SELECT dept_id
FROM tb_departments
WHERE dept_type= 'A' );

-- 内层子查询
SELECT dept_id
FROM tb_departments
WHERE dept_type='A';

-- 外层子查询
SELECT name FROM tb_students_info
WHERE dept_id IN(1,2);

-- NOT IN子查询
SELECT name FROM tb_students_info
WHERE dept_id NOT IN
(SELECT dept_id
FROM tb_departments
WHERE dept_type='A');

-- 带等号运算符的子查询
SELECT name FROM tb_students_info
WHERE dept_id = 
(SELECT dept_id
FROM tb_departments
WHERE dept_name='Computer');

-- 带不等号运算符的子查询
SELECT name FROM tb_students_info
WHERE dept_id <>
(SELECT dept_id
FROM tb_departments
WHERE dept_name='Computer');

-- EXISTS子查询
SELECT * FROM tb_students_info
WHERE EXISTS
(SELECT dept_name
FROM tb_departments
WHERE dept_id=1);

-- 分组查询与计数函数的应用
SELECT dept_id,COUNT(*) AS total
FROM tb_students_info
GROUP BY dept_id;

-- 分组查询
SELECT dept_id,GROUP_CONCAT(name) AS names
FROM tb_students_info
GROUP BY dept_id;

-- 使用HAVING关键字设置条件
SELECT dept_id,GROUP_CONCAT(name) AS names
FROM tb_students_info
GROUP BY dept_id
HAVING COUNT(name)>1;

-- 查询以特定字符开头的记录
SELECT * FROM tb_departments
WHERE dept_name REGEXP '^C';

-- 查询以特定字符串开头的记录
SELECT * FROM tb_departments
WHERE dept_name REGEXP '^Ch';

-- 查询以特定字符结尾的记录
SELECT * FROM tb_departments
WHERE dept_name REGEXP 'y$';

-- 查询以特定字符串结尾的记录
SELECT * FROM tb_departments
WHERE dept_name REGEXP 'my$';

-- 用符号“.”匹配任意一个字符
SELECT * FROM tb_departments
WHERE dept_name REGEXP 'o.y';

-- 用符号“*”匹配多个字符
SELECT * FROM tb_departments
WHERE dept_name REGEXP '^Ch*';

-- 用符号“+”匹配多个字符
SELECT * FROM tb_departments
WHERE dept_name REGEXP '^Ch+';

-- 匹配指定单个字符串
SELECT * FROM tb_departments
WHERE dept_name REGEXP 'in';

-- 匹配指定多个字符串
SELECT * FROM tb_departments
WHERE dept_name REGEXP 'in|on';

-- 匹配任意一个字母
SELECT * FROM tb_departments
WHERE dept_name REGEXP '[io]';

-- 匹配任意一个数字
SELECT * FROM tb_departments
WHERE dept_call REGEXP '[123]';

-- 匹配指定字符以外的字符
SELECT * FROM tb_departments
WHERE dept_name REGEXP '[^a-t]';

  

原文地址:https://www.cnblogs.com/277223178dudu/p/11393780.html