MySQL数据库

SQL语句关键字

  1. DISTINCT 去重
SELECT DISTINCT * FROM 表名;
  1. DESC 查看表结构
DESC 表名;
  1. CONCAT 连接列
SELECT CONCAT('列名1', ',', '列名2') FROM 表名;
  1. AS 重命名
SELECT 列名 AS 重命名 FROM 表名;
  1. IFNULL 判断是否为null
SELECT IFNULL(列名, 如果为null显示的值) FROM 表名;
  1. <> 不等于
  2. LIKE 像,类似(模糊查询)
# 查询员工名中包含字符a的员工信息
SELECT * FROM employees WHERE last_name LIKE '%a%';
  1. % 表示包含任意多个字符
  2. _ 表示任意单个字符
  3. ESCAPE 指定转义字符
# 查询员工名中第二个字符为_的员工名
SELECT last_name FROM employees WHERE last_name LIKE '_$_%' ESCAPE '$';
  1. <=> 安全等于,可以判断null和普通值
  2. IS NULL 只能判断null; IS NOT NULL 判断不是空
  3. DATEDIFF 日期差多少天
SELECT DATEDIFF(MAX(hiredate), MIN(hiredate)) DIFFERENCE FROM employees;
  1. HAVING 分组后的筛选条件,放在GROUP BY后面
# 查询哪个部门的员工个数>2
SELECT COUNT(*) , department_id FROM employees GROUP BY department_id HAVING COUNT(*)>2;

连接查询

分类

  • 按年代分类:

    • sql92标准:仅仅支持内连接:
    • sql99标准:支持内连接+外连接(左外+右外)+交叉连接
  • 按功能分类:

    • 内连接:
      • 等值连接;
      • 非等值连接;
      • 自链接;
    • 外连接:
      • 左外连接;
      • 右外连接;
      • 全外连接;
    • 交叉连接

sql92标准

等值连接

夺标等值连接的结果为多表的交集部分
n表连接,至少需要n-1个条件

# 查询女神名和对应的男神名
SELECT `NAME`, boyName 
FROM boys, beauty
WHERE beauty.boyfriend_id=boys.id;
# 为表起别名
# 查询员工名、工种号、工种名
SELECT last_name, e.job_id, job_title
FROM employees e, jobs j
WHERE e.job_id=j.job_id;

非等值连接

# 查询员工的工资和工资级别
SELECT salary, grade_level
FROM employees e, job_grades g
WHERE salary BETWEEN g.lowest_sal AND g.highest_sal;

自链接

# 查询员工名和上级的名称
SELECT e.employee_id, e.last_name, m.employee_id, m.last_name
FROM employees e, employees m
WHERE e.manager_id=m.employee_id;

sql99标准

语法:
select 查询列表
from 表1 别名
【连接类型】join 表2 别名
on 连接条件
【where 筛选条件】

分类:

  • 内连接 inner
  • 外连接
    • 左外 left [outer]
    • 右外 right[outer]
    • 全外 full[outer]
  • 交叉连接 cross

内连接

inner可以省略

等值连接
# 查询员工名、部门名
SELECT last_name, department_name
FROM employees e
INNER JOIN departments d
ON e.department_id = d.department_id;
# 三表连接
# 查询员工名、部门名、工种名,并按部门名降序
SELECT last_name, department_name, job_title
FROM employees e
INNER JOIN departments d ON e.department_id = d.department_id
INNER JOIN jobs j ON e.job_id = j.job_id
ORDER BY department_name DESC;
非等值连接
# 查询员工的工资级别
SELECT salary, grade_level
FROM employees e
INNER JOIN job_grades g
ON e.salary BETWEEN g.lowest_sal AND g.highest_sal;
# 查询员工名字、上级名字
SELECT e.last_name, e.last_name
FROM employees e
INNER JOIN employees m
ON e.manager_id = m.employee_id;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值