MySQL数据库的基本操作

表连接
  1. 可以实现三表连接?

案例:查询员工名、部门名和所在的城市

SELECT last_name,department_name,city
FROM t_mysql_employees e,t_mysql_departments d,t_mysql_locations l
WHERE e.`department_id`=d.`department_id`
AND d.`location_id`=l.`location_id`
AND city LIKE 's%'
ORDER BY department_name DESC;

在这里插入图片描述
2. 自连接
案例:查询 员工名和上级的名称

SELECT e.employee_id,e.last_name,m.employee_id,m.last_name
FROM t_mysql_employees e,t_mysql_employees m
WHERE e.`manager_id`=m.`employee_id`;

在这里插入图片描述
3. join连接
语法:select 查询列表 from 表1 别名 【连接类型left/right】join 表2 别名 on 连接条件
案例1.查询员工名、部门名
在这里插入图片描述

常见函数
  1. 转小写LOWER(‘SQL Course’)
SELECT LOWER(last_name)
FROM t_mysql_employees e
WHERE e.last_name LIKE 'A%'

在这里插入图片描述

  1. 日期函数DATE_FORMAT(‘2018/6/6’,‘%Y年%m月%d日’)
SELECT DATE_FORMAT(p.releaseDate,'%Y年%m月') relDate,count(*) 
FROM t_p1_blog p
GROUP BY relDate

在这里插入图片描述

子查询
  1. 含义:出现在其他语句中的select语句,称为子查询或内查询,外部的查询语句,称为主查询或外查询
    案例1:谁的工资比 Abel 高?
SELECT *
FROM t_mysql_employees
WHERE salary >(
	SELECT salary
	FROM t_mysql_employees
	WHERE last_name = 'Abel'
)

在这里插入图片描述
案例2:返回job_id与141号员工相同,salary比143号员工多的员工 姓名,job_id 和工资

SELECT last_name,job_id,salary
FROM t_mysql_employees
WHERE job_id=(
	SELECT job_id
	FROM t_mysql_employees
	WHERE employee_id = 141 
)
AND salary>(
	SELECT salary
	FROM t_mysql_employees
	WHERE employee_id = 141 
)

在这里插入图片描述
案例3:返回公司工资最少的员工的last_name,job_id和salary

SELECT last_name,job_id,salary
FROM t_mysql_employees t
WHERE salary= (
 	SELECT min(salary)
 	FROM t_mysql_employees
 )

在这里插入图片描述

分页查询
  1. 应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求
    语法:
    select 查询列表
    from 表
    【join type join 表2
    on 连接条件
    where 筛选条件
    group by 分组字段
    having 分组后的筛选
    order by 排序的字段】
    limit 【offset,】size;
    offset要显示条目的起始索引(起始索引从0开始)
    size 要显示的条目个数

案例1:查询前五条员工信息

SELECT*
FROM t_mysql_employees
LIMIT 0,5

在这里插入图片描述
案例2:查询第11条——第25条

SELECT * FROM  t_mysql_employees LIMIT 10,15;

在这里插入图片描述
案例3:有奖金的员工信息,并且工资较高的前10名显示出来

SELECT *
FROM t_mysql_employees
WHERE commission_pct IS NOT NULL
ORDER BY salary DESC 
LIMIT 0,10

在这里插入图片描述

DML(数据管理语言)
  1. DML可以在下列条件下执行:
    向表中插入数据
    修改现存数据
    删除现存数据
  2. 事务是由完成若干项工作的DML语句组成的
    使用 INSERT 语句向表中插入数据。
    INSERT INTO 表
    VALUES (列);
  3. 隐式方式: 在列名表中省略该列的值。
SELECT * FROM t_mysql_departments
INSERT INTO t_mysql_departments (department_id, department_name )
VALUES (430, 'Pur');

在这里插入图片描述
11. 显示方式: 在VALUES 子句中指定空值。

INSERT INTO t_mysql_departments
VALUES (800, 'Fin', NULL, NULL);

在这里插入图片描述
12. 拷贝数据

#系统升级可能会对现有数据造成冲突
#新建一张临时表存储现有数据
CREATE TABLE t_mysql_departments_1
as
SELECT * FROM t_mysql_departments WHERE 1=2INSERT INTO t_mysql_departments_1
SELECT * FROM t_mysql_departments
#升级之前两个模式,相关数据是在升级之前,升级之后又会有新的数据
INSERT INTO t_mysql_departments_1

在这里插入图片描述
在这里插入图片描述

  1. 更新数据
    使用 UPDATE 语句更新数据。
    UPDATE table
    SET column = value [, column = value, …]
    [WHERE condition];

使用 WHERE 子句指定需要更新的数据。

UPDATE t_mysql_employees
SET department_id = 70
WHERE employee_id = 113;

在这里插入图片描述
如果省略 WHERE 子句,则表中的所有数据都将被更新

UPDATE copy_emp
SET department_id = 110;
  1. 删除数据
    使用 DELETE 语句从表中删除数据。
    DELETE FROM table
    [WHERE condition];

使用 WHERE 子句删除指定的记录。

DELETE FROM t_mysql_departments
WHERE department_name = 'Finance';

如果省略 WHERE 子句,则表中的全部数据将被删除

DELETE FROM copy_emp;
  1. 一次删除多表的数据

案例1:删除张无忌的女朋友的信息

DELETE b
FROM t_mysql_beauty b
INNER JOIN t_mysql_boys bo ON b.`boyfriend_id` = bo.`id`
WHERE bo.`boyName`='张无忌';

在这里插入图片描述
案例2:删除黄晓明的信息以及他女朋友的信息

DELETE b,bo
FROM t_mysql_beauty b
INNER JOIN t_mysql_boys bo ON b.`boyfriend_id`=bo.`id`
WHERE bo.`boyName`='黄晓明';

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值