mysql篇Day3

  • 知识点讲解:
  • 1、内连接(重点)
  • 2、外连接
  • 3、多表查询=》99版
  • 4、子查询
  • 5、分页查询:limit
  • 6、联合查询 union/union all
  • 7、DQL结束
  • 8、DML语句:数据库操作的语言
  • 9、插入语句:insert
  • 11、删除数据:delete、truncate
  • 12、DDL语言



20201223


知识点回顾:


1、安全等于 <==>


2、排序:order by


3、分组查询:group by…having


4、连接查询


(1) 分类


① 年份


② 查询方式

  1. 内连接
    a. 等价连接
    b. 非等价连接
    c. 自连接
  2. 外连接
    a. 左连接
    b. 右连接
  3. 全连接

作业分析与讲解:
1、----

知识点讲解:

1、内连接(重点)

(1) -------
(2)自然连接NATURAL JOIN
自然连接不用指定连接条件,mysql会自动寻找字段名相同且字段类型相同的字段进行连接,与内连接的区别,内连接要指定连接条件,且是有选择的

2、外连接

(1) 什么是外连接,外连接与内连接的区别?
(2) 内连接:
① 假如A和B表进行连接,使用内连接的话,凡是A表和B表能够匹配上的记录将被查询查来
② AB两张表没有主副之分,两张表是平等的。
(3) 外连接:
① 假如A和B表进行连接,使用外连接的话,AB两个表有一张是主表,一张是副表,主要查询的是主表中的数据,捎带会将副表中的数据进行查询,当副表中的数据没有与主表中的数据匹配上,副表自动模拟NULL与主表进行匹配
② 分类:OUTER JOIN

  1. 左外连接(左连接)LEFT OUTER JOIN
    a. 表示左边的表是主表
  2. 右外连接(右连接)RIGHT OUTER JOIN
    a. 表示右边的表示主表
    (4) 案例:

linux mysql创建软连接_linux mysql创建软连接

3、多表查询=》99版

Select
查询列表
From
A表
Inner Join
B表
Inner Join
C表
On
连接条件
Where
筛选条件

4、子查询

(1) 概念
① 出现在其他语句中的select语句,称为子查询或内查询,外部的查询语句,称为主查询或外查询
(2) 子查询出现的位置
① Select 后面

  1. 结果集只是一行一列

② From 后面

  1. 结果集一般多行多列

③ Where 后面

  1. 单行、多行 等

(3) Where 后面子查询
① 后面:单行、多行
② 特点:

  1. 子查询放在小括号中
  2. 单行单列,一般搭配:>、<、= 等
  3. 多行多列:in /not in 等

    纠正,最后一行代码有误:倘若10部门最高工资3000,20部门最高工资5000,但20部门还有3000工资的员工,如果采用此代码,在子查询中查出的结果集为3000和5000,然后再在整个emp表中查询工资在3000到5000的员工,20部门工资为3000的员工就会被筛选出来,不符题意,正确代码:
SELECT
		e.ename,MAX(e.sal),d.dname
FROM
		emp e JOIN dept d
ON
		e.deptno=d.deptno
GROUP BY
		d.deptno;

(4) Select后面子查询
① 单行单列
(5) From 后面子查询
(6) 案例

linux mysql创建软连接_sql_02

5、分页查询:limit

(1) 应用
① 当现实的数据,一页显示不全,需要分页提交sql语句
(2) 语法

linux mysql创建软连接_sql_03


(3) 整理

linux mysql创建软连接_数据库_04

6、联合查询 union/union all

(1) 合并:将多个查询语句的结果合并成一个结果

(2) 使用场景:

① 要查询的结果来自多个表,而且这些表之间没有任何的关系,但是查询的信息一致

(3) 联合查询特点:

① 要求多表查询语句的查询列数是一致

② 要求多条查询语句的查询列表的类型和顺序最好一致

③ union关键字默认去重,如果使用union all 可以包含重复项

(4) 联合查询 公式:

查询语句1

union【all】

查询语句2

union【all】


(5) 案例:

linux mysql创建软连接_数据库_05

7、DQL结束

8、DML语句:数据库操作的语言

(1) 增删改(insert、update、delete)

9、插入语句:insert

(1) 语句格式:(第一种形式)

insert into 表名(列名,…)values(值1,…)

insert into 表名 values(…)

insert into 表名(列名,…) select 字段,… from 表名

(2) 补充:插入公式(第二种形式)

insert into 表名 set 列名=值,列名=值,…

(3) 两种方式的区别:

① 第一种形式,可以进行批量插入,第二种形式不能进行批量插入

② 第一种形式,可以进行复制插入,第二种形式不可以

(4) 案例:

linux mysql创建软连接_mysql_06

# 10、修改:update(1) 修改的语法

update 表名 set 列=新值,列=新值,… where 筛选条件

(2) 案例:

linux mysql创建软连接_sql_07

11、删除数据:delete、truncate

(1) 第一种形式:delete

① 语法结构

delete from 表名 where 筛选条件

② 多表删除

delete 别名1,别名2 from 表1 别名1,表2 别名2 where 筛选条件

(2) 第二种形式:truncate (删除、截断)

① 语法结构:

truncate table 表名

(3) delete 与 truncate 对比

delete 可以和 where 筛选条件进行连用,truncate不可以

② delete将记录一条一条删除,truncate将表中的信息全部截断

③ Truncate效率比delete高

④ Delete删除之后的数据可以回滚,truncate不能回滚

⑤ Delete删除之后,自增会继续。Truncate删除数据,之后,自增会从头开始计算。

(4) 案例

linux mysql创建软连接_sql_08

12、DDL语言

(1) 数据定义语言
(2) 数据库与表的管理
(3) 数据库管理
① 创建、修改、删除
(4) 表管理
① 创建、修改、删除
(5) 数据管理
① 数据库创建:

  1. create database [if not exists] 数据库名
    ② 数据库名称修改:(问题)
  2. rename database 旧名 to 新库名
    ③ 修改数据库的字符集
  3. alter database 库名 character set 编码格式;
    ④ 删除数据库
  4. drop database [if exists] 库名
    (6) 表管理:
    ① 表的创建

    ② 表修改
  5. 添加新列
    Alter table 表名 add column 列名 类型;
  6. 修改列名称
    alter table 表名 change column 旧列名 新列名 类型;
  7. 删除列
    Alter table 表名 drop column 列名;
    ③ 表删除
    drop table [if exists] 表名;
    ④ 案例:

总结:
1.主要有左外连接就会有一个右外连接与之对应,操作之法,将连接名改了,并且将数据源调换位置,例子如下:

#2、使用左连接,查询每个员工的姓名,经理姓名,没有经理的King也要显示出来。
SELECT
		y.ename,l.ename
FROM
		emp y LEFT JOIN emp l
ON
		y.mgr=l.empno;

#3、使用右连接,查询每个员工的姓名,经理姓名,没有经理的King也要显示出来
SELECT
		y.ename,l.ename
FROM
		emp l RIGHT JOIN emp y
ON
		y.mgr=l.empno;

2.在from处表使用别名后,其他地方不能再用原表名.字段了,即原表名不能用了,错误例子如下:

linux mysql创建软连接_数据库_09


正确例子:

linux mysql创建软连接_数据库_10