Part01_MySQL数据库的基本操作
------------------------------------------------------------------------------------
内容大纲:
1. 对数据库的操作(创建数据库、删除数据库、数据库的存储引擎)
2. 对表的操作(创建、修改、删除和查看表)
3. 索引(创建、删除、查看索引)
4. 视图(创建、删除、查看、修改视图)
5. 触发器(创建、删除、查看、使用触发器)
------------------------------------------------------------------------------------
正文:
------------------------------- [ 我是每章的分界线 ] -------------------------------
00. 登录进去数据库
01. WIN + CMD -> mysql –u –root -p
------------------------------- [ 我是每章的分界线 ] -------------------------------
00. 第01章:数据库概述
01. 数据库_是指长期存储在计算机内、有组织、可共享的数据集合。
02. 数据库泛型_是指数据库应遵循的规则。(最低要求的范式是第一范式(1NF),然后2NF...)
03. 数据库系统(DataBase System,DBS)_ 由数据库、数据库管理系统、应用开发工具等构成。
04. 数据库管理系统(DataBase Management System, DBS)_定义数据、管理和维护数据的软件。
05. SQL语言(Structured Query Language 结构化查询语言)_ 用于存储数据、管理数据、更新数据和管理关系数据库系统。
00.SQL分为三个部分数据定义语言(Data Definition Language, DDL)
01.数据库定义语言(Data Definition Language, DDL)_定义数据库、表、视图、索引和触发器等。
02.数据库操作语言(Data Manipulation Language, DML)_ 插入数据、查询数据、更新数据和删除数据。
03.数据库控制语言(Data Control Language, DCL) _ 控制用户的访问权限。
------------------------------- [ 我是每章的分界线 ] -------------------------------
00. 第05章:创建数据库
01. 创建数据库: CREATE DATABASE 数据库名;
02. 展示数据库列表: SHOW DATABASES;
03. 删除数据库: DROP DATABASE 数据库名;
04. 显示数据库存储引擎: SHOW ENGINES;
05. 显示数据库支持的引擎: SHOW VARIABLES LIKE ‘have%’;
06. 查询默认存储引擎: SHOW VARIABLES LIKE ‘storage_engine’;
07. 使用数据库: USE 数据库名;
------------------------------- [ 我是每章的分界线 ] -------------------------------
00. 第06章:创建、修改和删除表
--------------> 我是小节的小小分界线 <--------------(创建表)
01. 创建表:
CREATE TABLE 表名(属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件], ...);
02. 设置表的主键:
概念_主键是表的能唯一标识表中的每条信息的一个特殊字段。
作用_帮助MySQL以最快速度查找到表中的某一条信息。
单字段主键: 属性名 PRIMARY KEY;
多字段主键: PRIMARY KEY(属性名1, 属性名2, ... 属性名n);
03. 设置表的外键:
概念_通过外键为该子表(外键)建立与父表(主键)的联系。
原则_必须依赖于与其父表的关联关系。
语法_CONSTRAINT 外键别名 FOREIGN KEY (属性名, 属性名...)
REFERENCES 表名(父表主键对应的属性名,父表主键对应的属性名)
04. 设置表的非空约束
概念_非空性是指字段的值不能为空值(NULL)。
作用_保证所有记录中该字段都有值。
语法_属性名 数据类型 NOT NULL
05. 设置表的唯一性约束
概念_唯一性是指所有记录中该字段的值不能重复出现。
作用_保证所有记录中该字段的值不能重复出现。
语法_属性名 数据类型 UNIQUE
06. 设置表的属性的值自动增加
作用_为表中插入的新记录自动生成唯一的ID。
使用注意_一个表中只能有一个作为主键一部分的字段使用AUTO_INCREMENT约束。
默认情况下,该字段的值是从1开始自增的。
语法_属性名 数据类型 AUTO_INCREMENT
07. 设置表的默认值。
语法1_属性名 数据类型 DEFAULT 默认值
语法2_属性名 数据类型 某约束条件 DEFAULT 默认值
08. 查看表的结构
查看表基本结构语句:DESCRIBE 表名;
DESC 表名;
查看表详细结构语句:SHOW CREATE TABLE 表名;
SHOW CREATE TABLE 表名 \G;
SHOW CREATE TABLE 表名 \g;
--------------> 我是小节的小小分界线 <--------------(修改表)
09. 修改表名
ALTER TABLE 旧表名 RENAME [TO] 新表名;(在使用时[TO]不用写上)
10. 修改字段的数据类型
ALTER TABLE 表名 MODIFY 属性名 数据类型;
11. 修改字段名
ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型;
12. 修改字段的排列位置
00. 通用语句
ALTER TABLE 表名 MODIFY 属性名1 数据类型 FIRST | AFTER 属性名2;
01. 字段修改到第一个位置
ALTER TABLE 表名 MODIFY 属性名1 数据类型 FIRST;
02. 字段修改到指定位置(属性名2的后面)
ALTER TABLE 表名 MODIFY 属性名1 数据类型 AFTER 属性名2;
13. 增加字段
00. 通用语句
ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] [FIRST | AFTER 属性名2];
01. 在表的最后位置增加字段
ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件];
02. 在表的第一位置增加字段
ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] FIRST;
03. 在表的某一位置增加字段:(排列在属性名2后面加上字段)
ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] AFTER 属性名2;
14. 删除字段
ALTER TABLE 表名 DROP 属性名;
15. 更改表的存储引擎
ALTER TABLE 表名 ENGINE=存储引擎名;
16. 删除表的外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键别名;
--------------> 我是小节的小小分界线 <--------------(删除表)
17. 删除没有被关联的普通表
DROP TABLE 表名;
18. 删除被其他表关联的父表
00. 有两步骤:
01. 删除该表的外键约束: ALTER TABLE 表名 DROP FOREIGN KEY 外键别名;
02. 以删除普通表的方法删除: DROP TABLE 表名;
------------------------------- [ 我是每章的分界线 ] -------------------------------
00. 第07章:索引
01. 索引的含义及特点
概念_索引是创建在表上的,是对数据库表中一列或多列的值进行排序的一种结构。
作用_提高对表中数据的查询速度。(通过索引,查询数据时可不必读完记录的所有信息,而只是查询索引列。)
约束_不同的存储引擎定义了每个表中的最大索引数和最大索引长度。所有存储引擎对每个表至少支持16个索引,总索引长度至少为256字节。
优点_提高检索数据的速度。
缺点_创建和维护索引需要耗费时间,增加、删除和修改数据时,要动态维护索引。
02. 索引的分类
1.普通索引_创建普通索引时,不附加任何限制条件。这类索引可以创建在任何数据类型中,其值是否唯一和非空由字段本身的完整性约束条件决定。
2.唯一性索引_UNIQUE_限制该索引的值必须是唯一的,主键就是一种特殊唯一性索引。
3.全文索引_FULLTEXT_查询数据量较大的字符串类型的字段时,使用全文索引可以提高查询速度。全文索引只能创建在CHAR、VARCHAR或TEXT的字段上。
4.单列索引_在表中的单个字段上创建索引。单列索引可以是普通索引,也可以是唯一必性索引,还可以是全文索引。
5.多列索引_在表的多个字段上创建一个索引,该索引指向创建时对应的多个字段,可以通过这几个字段进行查询。(只有查询条件使用了这些字段中第一个字段时,索引才会被使用。
6.空间索引_SPATIAL_空间索引只能建立在空间数据类型上,这样可以提高系统获取空间数据的效率。
03.创建表的时候创建索引
CREATE TABLE 表名(属性名 数据类型 [完整性约束条件],
属性名 数据类型 [完整性约束条件],
...
属性名 数据类型 [完整性约束条件],
[UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY [别名] (属性名1 [(长度)] [ASC|DESC])
);
04.创建普通索引_INDEX(属性名);
05.创建唯一性索引_UNIQUE INDEX 别名(属性名 ASC|DESC);
06.创建全文索引_FULLTEXT INDEX 别名(属性名); (目前只有MyISAM存储引擎支持全文索引)
07.创建单列索引_INDEX(属性名);
08.创建单列索引_INDEX(属性名1, 属性名2...);
09.创建空间索引_SPATIAL INDEX 别名(属性名)
10.在已存在的表上创建索引
方法1: CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 ON 表名 (属性名[(长度)] [ASC|DESC]);
方法2: ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名(属性名[(长度)] [ASC|DESC]);
11.删除索引
DROP INDEX 索引名 ON 表名;
------------------------------- [ 我是每章的分界线 ] -------------------------------
00. 第08章:视图
01. 视图相关概念
定义_视图是一种虚拟的表,是从数据库中一个或多个表中导出来的表。
特点_数据库中只存放了视图的定义,而并没有存放视图中的数据。视图中的数据是依赖于原来的表中的数据的。
作用_使操作简单化、增加数据的安全性、提高表的逻辑独立性。
02. 创建视图的语法形式
CREATE [ALGORITHM = {UNDEFINED|MERGE|TEMPTABLE}]
VIEW 视图名 [(属性清单)]
AS SELECT 语句
[WITH [CASCADED|LOCAL] CHECK OPTION];
03.查看用户是否有权限使有视图
SELECT Select_priv, Create_view_priv FROM mysql.user WHERE user = '用户名';
04.在单表上创建视图
CREATE
VIEW 视图名(字段...)
AS SELECT (表字段...) * FROM 表名;
05.在多表上创建视图
CREATE ALGORITHM = MERGE
VIEW 视图名(视图字段...)
AS SELECT(表字段...)
FROM 表名,表名 WHERE
WITH LOCAL CHECK OPTION;
06.查看视图的基本信息
DESCRIBE 视图名;
DESC 视图名;
SHOW TABLE STATUS LIKE '视图名';[\G \g]
SHOW CREATE VIEW 视图名;[\G \g]
07.在表中查看视图的详细信息
SELECT * FROM 数据库名.表名;[\G \g]
08.修改或创建视图语句
CREATE OR REPLACE [ALGORITHM = {UNDEFINED|MERGE|TEMPTABLE}]
VIEW 视图名 [(属性清单)]
AS SELECT 语句
[WITH [CASCADED|LOCAL] CHECK OPTION];
09.修改视图语句
ALTER [ALGORITHM = {UNDEFINED|MERGE|TEMPTABLE}]
VIEW 视图名[(属性清单)]
AS SELECT 语句
[WITH [CASCADED|LOCAL] CHECK OPTION];
10.更新视图(通过视图来插入,更新和删除表中的数据)
UPDATE 视图名 SET 属性名 = 值, 属性名 = 值...;
11.删除视图
DROP VIEW [IF EXISTS] 视图名列表 [RESTRICT|CASCADE];
------------------------------- [ 我是每章的分界线 ] -------------------------------
00. 第09章:触发器
01.触发器的基本概念
定义_触发器(TRIGGER)是由事件来触发某个操作。满足触发器的触发条件时,数据库系统就会执行触发器中定义的程序语句。
02.创建只有一个执行语句的触发器
CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件
ON 表名 FOR EACH ROW 执行语句
03.创建有多个执行语句的触发器
CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件
ON 表名 FOR EACH ROW
BEGIN
执行语句列表
END
04.查看触发器信息_SHOW TRIGGERS;
05.在triggers表中查看触发器信息_ SELECT * FROM information_schema.triggers;
06.查询指定触发器的详细信息_ SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME = '触发器名';
07.删除触发器 DROP TRIGGER 触发器名;