MySQL笔记

  1. 基本概念
    DBMS 和 RDBMS
    发展历史
    关系型数据库和非关系型数据库

2.ER模型与表记录的4种关系:
表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用
关系模型来表示。
一对一: 这种通常将所有数据放在一张表中
一对多: 一个用户有多个订单(客户和订单是一对多的关系)、一个部门多个员工
多对多: 要表示多对多关系,必须创建第三个表,该表通常称为联接表,它将多对多关系划分为两个一对多关
系。将这两个表的主键都插入到第三个表中。

例子: 学生与课程就是多对多: 一个学生可以选多门课, 一门课可以被多个学生选择
选课信息表作为中间表,记录了每个学生的选课信息

订单与产品是多对多: 一个订单可以有多个产品,每个产品可以出现在多个订单中
订单明细表就是中间表

自我引用: 自己引用自己
例子: 员工表中,有员工id,Managerid,一个人他可能即是员工又是管理者,
Managerid是103的记录和员工id是103的记录,之间就是自我引用

  1. 基本的Select语句

1)SQL语句分类:

  1. DDL(Data Definition Languages、数据定义语言),这些语句定义了不同的数据库、表、视图、索
    引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。 --> 对库和表结构的的定义、增删改
    主要的语句关键字包括CREATE 、DROP 、ALTER 等。
  2. DML(Data Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库记
    录,并检查数据完整性。
    主要的语句关键字包括INSERT 、DELETE 、UPDATE 、SELECT 等。
    SELECT是SQL语言的基础,最为重要。 --> 对数据的增删改查
  3. DCL(Data Control Language、数据控制语言),用于定义数据库、表、字段、用户的访问权限和
    安全级别。

因为查询语句使用的非常的频繁,所以很多人把查询语句单拎出来一类:DQL(数据查询语言)。
还有单独将COMMIT 、ROLLBACK 取出来称为TCL (Transaction Control Language,事务控制语
言)。

  1. 列取别名:
    as:全称:alias(别名),可以省略

列的别名可以使用一对""引起来,不要使用’'。

SELECT employee_id emp_id,last_name AS lname,department_id “部门id”,salary * 12 AS “annual sal”
FROM employees;

  1. 去除重复行
    DISTINCT
    SELECT DISTINCT department_id
    FROM employees;

两点:
DISTINCT放到所有列名的最前面.
ISTINCT 其实是对后面所有列名的组合进行去重.

  1. 空值参与运算
    所有运算符或列值遇到null值,运算的结果都为null

5)使用WHERE过滤数据
#练习:查询90号部门的员工信息
SELECT *
FROM employees
#过滤条件,声明在FROM结构的后面
WHERE department_id = 90;

  1. 运算符
  2. 算术运算符: + - * / div % mod
  3. 比较运算符
    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 位运算符: & | ^ ~ >> <<

  1. 排序与分页
  1. 使用 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 的后面

  1. 多表查询

  2. 单行函数
    这章可以跳过,讲的是MySQL里面提供的一些函数,用的时候再查。每个函数
    PDF里面有详细的介绍

函数分类: 单行函数与多行函数
单行函数:只对一行进行变换, 每行返回一个结果
多行函数:对多行进行变换, 整体返回一个结果

单行函数有这些:
1)基本函数
求绝对值、随机值等
2)角度与弧度互换函数
3)三角函数
4)指数与对数
5)进制间的转换
6)字符串函数:
LENGTH(s) 返回字符串s的字节数,和字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值