1.数据库的定义:
数据库就是用来存储和管理数据的仓库!
数据库的优点:
-
可存储大量数据;
-
方便检索;
-
保持数据的一致性、完整性;
-
安全,可共享;
-
通过组合分析,可产生新数据。
2.数据库分类*(重点面试题)
-
DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
-
DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);
-
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
-
DQL(Data Query Language):数据查询语言,用来查询记录(数据)。
3.DDL数据定义语言
DDL(数据定义语言):CREATE DROP ALTER
--数据库的创建 CREATE DATABASE [IF NOT EXISTS] 数据库名称
[DEFAULT CHARACTER SET 字符集 COLLATE 排序规则字符集];
--删除数据库 DROP DATABASE [IF EXISTS] 数据库名称
;
--修改数据库 ALTER DATABASE 数据库名称
CHARACTER SET utf8
--查看表数据: SHOW 表名
--查看表结构: DESC 表名
4.数据表定义
-数据类型
非空约束 | NOT NULL |
---|---|
主键约束 | PRIMARY KEY |
自增列 | AUTO_INCREMENT (默认1,增量1) |
默认约束 | DEFAULT |
检查约束 | CHECK |
唯一约束 | UNIQUE KEY |
外键约束 | FOREIGN KEY |
-创建表 CREATE TABLE [IF NOT EXISTS] 表名
( 字段名 数据类型 约束 , 字段名 数据类型 约束 , 字段名 数据类型 约束 , ... 字段名 数据类型 约束 );
-删除表 DROP TABLE [IF EXISTS] 表名
;
-
不能删除外键约束 TURNCATE
表名
;
5.DML数据操作语言
DML(数据操作语言):主要进行插入元组、删除元组、修改元组的操作。主要由insert(主要用于插入数据库插入数据插入一行或者多行数据)、update(用于数据库修改数据更改表中的现有数据)、delete(删除数据从表中删除一行或者多行数据) 语法组成。
6.DQL数据库查询语言
6.1.DQL(数据库查询语言):用来进行数据库中数据的查询的select语句。
SELECT 字段列表 FROM 表名
[where + 条件语句]
[GROUP BY + 字段]
[HAVING 分组条件]
6.2.WHERE和HAVING区别
WHERE条件是筛选分组的之前的数据,后不能使用聚合函数
HAVING条件是筛选分组后的数据,支持使用聚合函数
聚合函数:1>.COUNT() 统计函数
2>.SUM() 求和函数
3>.MAX() 求最大值函数
4>.MIN() 求最小值函数
5>.AVG() 求平均值函数
6.3多表查询
a.子查询
b.复合查询
c.内连接:
INNER JOIN ....... ON .......
d.外连接:
[LEFT|RIGHT] JOIN ....... ON .......
~ 注意:内连接和外连接的区别 内连接只要有一张表的所有数据是NULL,则查结果不显示。 外连接如果有一张表的所有数据是NULL,则取决主从表的关系。
6.4查询函数
-数值型
-字符串型
-日期型
7.DCL数据控制语言
DCL(数据控制语言):用来授权或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,能够对数据库进行监视。
8.Mysql高级
-视图
视图与数据表的区别:数据表(保存数据+数据字段信息)(真实存在的表)、 视图(虚拟表+查询逻辑)
1>视图创建
CREATE [OR REPLACE] VIEW 视图名称 AS SELECT .......
2>删除视图
DROP VIEW 视图名称,视图名称 ......
3>查询视图
SELECT * FROM 视图名称
4>修改视图
ALTER VIEW 视图名称 AS SELECT ......
5>CASCADED级联与LOCAL本地
CASCADED不仅会检查v2,还会级联检查v2关联的v1.
LOCAL只会检查v2,不会检查v2关联的视图v1.
-存储过程
1)定义存储过程
CREATE PROCEDURE 存储过程名称 ([ IN/OUT/INOUT 参数名 参数类型 ])
BEGIN
-- SQL语句
END ;
2)存储过程删除
DROP PROCEDURE IF EXISTS 存储过程名称;
3)存储过程调用
CALL 存储过程名称;
4)查看存储过程
SHOW CREATE PROCEDURE 存储过程名称;
-变量定义和使用
1).系统变量
#查看所有系统变量 SHOW [ SESSION | GLOBAL ] VARIABLES ;
#可以通过LIKE模糊匹配方 式查找变量 SHOW [ SESSION | GLOBAL ] VARIABLES LIKE '......';
#查看指定变量的值 SELECT @@[SESSION | GLOBAL] 系统变量名;
A. 全局变量(GLOBAL): 全局变量针对于所有的会话。 B. 会话变量(SESSION): 会话变量针对于单个会话,在另外一个会话窗口就不生效了。
2).设置变量
SET [ SESSION | GLOBAL ].系统变量名 = 值 ;
SET @@[SESSION | GLOBAL].系统变量名 = 值 ;
3).用户自定义变量
->定义变量
SET @var_name = expr [, @var_name = expr] ... ;
SET @var_name := expr [, @var_name := expr] ... ;
->变量查询
SELECT 字段名 INTO @var_name FROM 表名;
->使用变量
SELECT @var_name ;
4).局部变量
->局部变量的定义
DECLARE 变量名 变量类型 [DEFAULT ... ] ;
变量类型就是数据库字段类型:INT、BIGINT、CHAR、VARCHAR、DATE、TIME等。
->变量赋值
SET 变量名 = 值 ; SET 变量名 := 值 ; SELECT 字段名 INTO 变量名 FROM 表名 ... ;
-索引
数据库索引是为了提高查询速度而对表字段附加的一种标识。