MySQL基础篇-10-视图
视图
视图是一种虚拟表,本身是不具有数据的,占用很少的内存空间
视图建立在已有表的基础上,视图赖以建立的这些表称为基表
优点
1. 操作简单
将经常使用的查询操作定义为视图,可以使开发人员不需要关心视图对应的数据表的结构、表与表之间 的关联关系,也不需要关心数据表之间的业务逻辑和查询条件,而只需要简单地操作视图即可,极大简化了开发人员对数据库的操作。
2. 减少数据冗余
视图跟实际数据表不一样,它存储的是查询语句。所以,在使用的时候,我们要通过定义视图的查询语句来获取结果集。而视图本身不存储数据,不占用数据存储的资源,减少了数据冗余
3. 数据安全
MySQL将用户对数据的 访问限制 在某些数据的结果集上,而这些数据的结果集可以使用视图来实现。用 户不必直接查询或操作数据表。这也可以理解为视图具有 隔离性 。视图相当于在用户和实际的数据表之 间加了一层虚拟表。
同时,MySQL可以根据权限将用户对数据的访问限制在某些视图上,用户不需要查询数据表,可以直接 通过视图获取数据表中的信息。这在一定程度上保障了数据表中数据的安全性。
4. 适应灵活多变的需求
...
MySQL基础篇-9-约束
约束概念
引入原因
数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。为防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息提出约束的概念。
约束概念
约束是表级的强制规定。 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后通过 ALTER TABLE 语句规定约束。
约束分类
根据约束数据列的限制,约束可分为
单列约束:每个约束只约束一列
多列约束:每个约束可约束多列数据
根据约束的作用范围,约束可分为:
列级约束:只能作用在一个列上,跟在列的定义后面
表级约束:可以作用在多个列上,不与列一起,而是单独定义
位置
支持的约束类型
是否可以起约束名
列级约束
列的后面
语法都支持,但外键没有效果
不可以
表级约束
所有列的下面
默认和非空不支持,其他支持
可以(主键没有效果)
根据约束起的作用,约束可分为:
NOT NULL 非空约束,规定某个字段不能为空
UNIQUE 唯一约束,规定某个 ...
MySQL基础篇-8-数据处理
添加数据
添加记录
123456789101112131415161718192021-- 单行记录INSERT INTO 表名VALUES (value1,value2,....);INSERT INTO 表名(column1 [, column2, …, columnn])VALUES (value1 [,value2, …, valuen]);-- 多行记录INSERT INTO table_nameVALUES(value1 [,value2, …, valuen]),(value1 [,value2, …, valuen]),……(value1 [,value2, …, valuen]);INSERT INTO table_name(column1 [, column2, …, columnn])VALUES(value1 [,value2, …, valuen]),(value1 [,value2, …, valuen]),……(value1 [,value2, …, valuen]);
将查询结果添加
123456INSERT INTO 目标表名(tar_colum ...
MySQL基础篇-7-创建和管理表
创建和管理数据库
创建数据库
12345678-- 创建数据库CREATE DATABASE 数据库名;-- 创建数据库并指定字符集CREATE DATABASE 数据库名 CHARACTER SET 字符集;-- 判断数据库是否存在,不存在则建库CREATE DATABASE IF NOT EXISTS 数据库名;
使用数据库
12345678910111213141516-- 查看当前所有的数据库SHOW DATABASES;-- 查看当前正在使用的数据库SELECT DATABASE();-- 查看指定库下的所有表SHOW TABLES FROM 数据库名;-- 查看数据库的创建信息SHOW CREATE DATABASE 数据库名;-- 或者SHOW CREATE DATABASE 数据库名\G-- 使用数据库USE 数据库名;
修改数据库
12345678-- 更改数据库字符集ALTER DATABASE 数据库名 CHARACTER SET 字符集;-- 删除指定数据库DROP DATABASE 数据库名;-- 删除指定数据库DROP DATABSE IF EXI ...
MySQL基础篇-6-子查询
子查询的结构
123SELECT select_listFROM tabWHERE expr operator (SELECT select_list FROM tab);
子查询分类
按内查询的结果返回一条还是多条记录,将子查询分为 单行子查询 和 多行子查询
单行子查询
单行比较符
1. 查询工资大于149号员工工资的员工信息
1234567-- 查询工资大于149号员工工资的员工信息SELECT last_nameFROM employeesWHERE salary > ( -- 工资大于149号员工的工资 SELECT salary FROM employees WHERE employe_id = 149);
2. 返回job_id与141号员工相同,salary比143号员工多的员工姓名,job_id和工资
123456789101112131415SELECT LAST_NAME, JOB_ID, SALARYFROM employeesWHERE job_id = ( -- job_id == 141号员工 SELECT job_id ...
MySQL基础篇-5-聚合函数
聚合函数
聚合函数概念
聚合函数用于一组数据,并对一组数据返回一个值
聚合函数类型
AVG()
SUM()
MAX()
MIN()
COUNT()
AVG 和 SUM123SELECT AVG(salary), MAX(salary),MIN(salary), SUM(salary)FROM employeesWHERE job_id LIKE '%REP%';
MIN 和 MAX12SELECT MIN(hire_date), MAX(hire_date)FROM employees;
COUNT
注意
COUNT(*) 返回表中记录总数,适用于任意数据类型
COUNT(expr) 返回 expr 不为空 的记录总数
1234567SELECT COUNT(*)FROM employeesWHERE department_id = 50;SELECT COUNT(commission_pct)FROM employeesWHERE department_id = 50;
能不能使用 count(列名) 替换 count(*) ?
cou ...