即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

day04_MySQL_深度总结

编程语言 weixin_37877068 7℃ 0评论
本文目录
[隐藏]

1.排序

使用ORDER BY子句将记录排序

  • ASC : 升序,缺省。
  • DESC: 降序。

ORDER BY 子句出现在SELECT语句的最后。

格式:

SELECT  
FROM table_name
WHERE 条件
ORDER BY 列名1 [ASC/DESC], 列名2 [ASC/DESC]...;

排序时候可以使用别名进行排序,但是别名不要使用字符(单引号括起来的字符)

如果对多列进行排序, 就是先排第一列,然后第二列

2.分页

可以理解为查找数据

语法:

SELECT  column1, column2...
FROM    table_name
[WHERE  condition]
LIMIT  beginIndex,pageSize;

其中:

beginIndex = (currentPage - 1) * pageSize

2.1.思考题: SQL 执行顺序问题

  1. 先执行 FROM, 指定要查哪一张表(数据在哪里)
  2. 然后执行 WHERE , 筛选出符合条件数据
  3. 再执行 SELECT 语句,查询出合理数据中具体哪一些列
  4. 其次再执行 ORDER BY 针对得到最终数据进行排序
  5. 最后再进行分页 LIMIT beginIndex, pageSize;

3.聚集函数

又叫 聚集函数 / 统计函数 / 分组函数

聚集函数作用于一组数据,并对一组数据返回一个值。

函数 作用
COUNT 统计结果记录数
MAX 统计计算最大值
MIN 统计计算最小值
SUM 统计计算求和
AVG 统计计算平均值

在聚焦函数之后不要在加上列名, 除非使用`GROUP BY`

# 笛卡尔积

笛卡尔积: 没有连接条件的表关系返回的结果。

## 多表查询产生笛卡尔积

假设集合 A = {a,b},集合 B = {0,1,2},则两个集合的笛卡尔积为

> {(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}

实际运行环境下,应避免出现笛卡尔积。

# 键约束

## 主键约束

PRIMARY KEY : 约束在当前表中,指定列的值非空且唯一.

## 外键约束

FOREIGN KEY : A 表中的外键列. A 表中的外键列的值必须参照于B表中的某一列 ( B 表主键 ).

注意:在 MySQL 中, InnoDB 支持事务和外键. 所以我们需要修改表的存储引擎为 InnDB

ALTER TABLE 表名 ENGINE='InnoDB';

强调:所有涉及到表都必须是 InnoDB

4.内连接查询

内连接分为:隐式内连接、显示内连接,其查询效果相同。

隐式内连接

SELECT  
FROM    A ,B  WHERE A.列 = B.列

显示内连接(推荐写法)

SELECT  
FROM    A [INNER] JOIN B ON A.列 = B.列

在做等值连接的时候,若A表中和B表中的列名相同. 则可以简写

SELECT  
FROM    A [INNER] JOIN B USING(同名的列)

前提 : 在empdept表中都有deptno列.

使用表名前缀在多个表中区分相同的列。在不同表中具有相同列名的列可以用表的别名加以区分。如果使用了表的别名,则不能再使用表的真名

  • 使用别名可以简化查询。
  • 使用表名前缀可以提高执行效率。

5.外连接查询

内连接存在问题 SELECT * FROM A , B WHER A.XX = B.XXX 如果 A 中没有满足 A.XX = B.XXX 数据会被过滤掉, 没有筛选出来.

  • 左外连接

查询出 JOIN 左边表的全部数据查询出来, JOIN 右边的表不匹配的数据使用 NULL 来填充数据.

  • 右外连接

查询出 JOIN 右边表的全部数据查询出来, JOIN 左边的表不匹配的数据使用 NULL 来填充数据.

语法格式

SELECT  
    
FROM
    A LEFT/RIGHT [OUTER] JOIN B
ON 
    (A.column_name = B.column_name)];
  • 左连接
SELECT * FROM product p LEFT JOIN productdir pd ON p.dir_id = pd.id
  • 右连接
SELECT * FROM product p RIGHT JOIN productdir pd ON p.dir_id = pd.id

6.自连接查询

把一张表看成两张来做查询.

  • 隐式内连接
SELECT sub.dirName,super.dirName
FROM productdir super,productdir sub
WHERE sub.parent_id = super.id
  • 显示内连接
SELECT sub.dirName,super.dirName
FROM productdir super JOIN productdir sub
ON sub.parent_id = super.id

SQL连接

SQL连接

7.数据备份和恢复

MySQL自身的数据库维护, 通过cmd命令进入dos窗口

  • 导出
mysqldump -u账户 -p密码 数据库名称>脚本文件存储地址

eg.
    mysqldump -uroot -padmin jdbcdemo> C:/shop_bak.sql
  • 导入
mysql -u账户 -p密码 数据库名称< 脚本文件存储地址
eg.
    mysql -uroot -padmin jdbcdemo< C:/shop_bak.sql

转载请注明:CodingBlog » day04_MySQL_深度总结

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情