- 基本概念
DBMS 和 RDBMS
发展历史
关系型数据库和非关系型数据库
2.ER模型与表记录的4种关系:
表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用
关系模型来表示。
一对一: 这种通常将所有数据放在一张表中
一对多: 一个用户有多个订单(客户和订单是一对多的关系)、一个部门多个员工
多对多: 要表示多对多关系,必须创建第三个表,该表通常称为联接表,它将多对多关系划分为两个一对多关
系。将这两个表的主键都插入到第三个表中。
例子: 学生与课程就是多对多: 一个学生可以选多门课, 一门课可以被多个学生选择
选课信息表作为中间表,记录了每个学生的选课信息
订单与产品是多对多: 一个订单可以有多个产品,每个产品可以出现在多个订单中
订单明细表就是中间表
自我引用: 自己引用自己
例子: 员工表中,有员工id,Managerid,一个人他可能即是员工又是管理者,
Managerid是103的记录和员工id是103的记录,之间就是自我引用
- 基本的Select语句
1)SQL语句分类:
- DDL(Data Definition Languages、数据定义语言),这些语句定义了不同的数据库、表、视图、索
引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。 --> 对库和表结构的的定义、增删改
主要的语句关键字包括CREATE 、DROP 、ALTER 等。 - DML(Data Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库记
录,并检查数据完整性。
主要的语句关键字包括INSERT 、DELETE 、UPDATE 、SELECT 等。
SELECT是SQL语言的基础,最为重要。 --> 对数据的增删改查 - DCL(Data Control Language、数据控制语言),用于定义数据库、表、字段、用户的访问权限和
安全级别。
因为查询语句使用的非常的频繁,所以很多人把查询语句单拎出来一类:DQL(数据查询语言)。
还有单独将COMMIT 、ROLLBACK 取出来称为TCL (Transaction Control Language,事务控制语
言)。
- 列取别名:
as:全称:alias(别名),可以省略
列的别名可以使用一对""引起来,不要使用’'。
SELECT employee_id emp_id,last_name AS lname,department_id “部门id”,salary * 12 AS “annual sal”
FROM employees;
- 去除重复行
DISTINCT
SELECT DISTINCT department_id
FROM employees;
两点:
DISTINCT放到所有列名的最前面.
ISTINCT 其实是对后面所有列名的组合进行去重.
- 空值参与运算
所有运算符或列值遇到null值,运算的结果都为null
5)使用WHERE过滤数据
#练习:查询90号部门的员工信息
SELECT *
FROM employees
#过滤条件,声明在FROM结构的后面
WHERE department_id = 90;
- 运算符
- 算术运算符: + - * / div % mod
- 比较运算符
2.1 = <=> <> != < <= > >=
2.2 IS NULL \ IS NOT NULL \ ISNULL
2.3 BETWEEN 条件下界1 AND 条件上界2 (查询条件1和条件2范围内的数据,包含边界)
2.4 LIKE 模糊查询
“%”:匹配0个或多个字符。
“_”:只能匹配一个字符。
#练习:查询last_name中包含字符’a’的员工信息
SELECT last_name
FROM employees
WHERE last_name LIKE ‘%a%’;
_ :代表一个不确定的字符
#练习:查询第3个字符是’a’的员工信息
SELECT last_name
FROM employees
WHERE last_name LIKE ‘__a%’;
2.5 REGEXP :正则表达式
(1)‘^’匹配以该字符后面的字符开头的字符串。 ^a 匹配以a开头的字符串
(2)‘$’匹配以该字符前面的字符结尾的字符串。 $a 匹配以a结尾的字符串
2.6 逻辑运算符: OR || AND && NOT ! XOR
2.7 位运算符: & | ^ ~ >> <<
- 排序与分页
- 使用 ORDER BY 对查询到的数据进行排序操作。
升序:ASC (ascend)
降序:DESC (descend)
练习:按照salary从高到低的顺序显示员工信息
SELECT employee_id,last_name,salary
FROM employees
ORDER BY salary DESC; // 默认按照升序排列
使用多列进行排序:
#练习:显示员工信息,按照department_id的降序排列,salary的升序排列
SELECT employee_id,salary,department_id
FROM employees
ORDER BY department_id DESC,salary ASC;
A.可以使用不在SELECT列表中的列排序。
B.在对多列进行排序的时候,首先排序的第一列必须有相同的列值,才会对第二列进行排序。如果第
一列数据中所有值都是唯一的,将不再对第二列进行排序。
2)LIMIT 用于分页
语法:
LIMIT [从哪开始返回,] 返回多少行
MySQL 8.0中的语法:
LIMIT 返回多少行 OFFSET 从哪开始返回
需求1:每页显示20条记录,此时显示第1页
SELECT employee_id,last_name
FROM employees
LIMIT 0,20;
#需求:每页显示pageSize条记录,此时显示第pageNo页:
#公式:LIMIT (pageNo-1) * pageSize,pageSize;
注意:
ORDER BY 和 LIMIT应该位于在整个SELECT语句的最后.
LIMIT 应该在ORDER BY 的后面
-
多表查询
-
单行函数
这章可以跳过,讲的是MySQL里面提供的一些函数,用的时候再查。每个函数
PDF里面有详细的介绍
函数分类: 单行函数与多行函数
单行函数:只对一行进行变换, 每行返回一个结果
多行函数:对多行进行变换, 整体返回一个结果
单行函数有这些:
1)基本函数
求绝对值、随机值等
2)角度与弧度互换函数
3)三角函数
4)指数与对数
5)进制间的转换
6)字符串函数:
LENGTH(s) 返回字符串s的字节数,和字

最低0.47元/天 解锁文章
3万+

被折叠的 条评论
为什么被折叠?



