欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL数据库的基本操作

程序员文章站 2022-03-25 12:17:33
...

表连接

  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;

MySQL数据库的基本操作
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`;

MySQL数据库的基本操作
3. join连接
语法:select 查询列表 from 表1 别名 【连接类型left/right】join 表2 别名 on 连接条件
案例1.查询员工名、部门名
MySQL数据库的基本操作

常见函数

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

MySQL数据库的基本操作

  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

MySQL数据库的基本操作

子查询

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

MySQL数据库的基本操作
案例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 
)

MySQL数据库的基本操作
案例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
 )

MySQL数据库的基本操作

分页查询

  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

MySQL数据库的基本操作
案例2:查询第11条——第25条

SELECT * FROM  t_mysql_employees LIMIT 10,15;

MySQL数据库的基本操作
案例3:有奖金的员工信息,并且工资较高的前10名显示出来

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

MySQL数据库的基本操作

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');

MySQL数据库的基本操作
11. 显示方式: 在VALUES 子句中指定空值。

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

MySQL数据库的基本操作
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

MySQL数据库的基本操作
MySQL数据库的基本操作

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

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

UPDATE t_mysql_employees
SET department_id = 70
WHERE employee_id = 113;

MySQL数据库的基本操作
如果省略 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`='张无忌';

MySQL数据库的基本操作
案例2:删除黄晓明的信息以及他女朋友的信息

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

MySQL数据库的基本操作

相关标签: MySQL mysql