目录
一、认识数据库
数据库管理系统是数据库系统的核心,数据库系统实际上是指引入数据库技术的计算机应用系统,数据、数据库、数据库管理系统与操作数据库的应用开发工具、应用程序以及与数据库有关的人员一起构成了一个完整的数据库系统。
sql是结构化的语言,容易学习。
Mysql数据库的超级管理员名称:voot
断开MySQL服务器的命令:quit
MySQL服务器的配置文件名是my.ini
二、数据库设计
数据库关系模型:1:1,1:n,m:n
第一范式:每个数据项都不能拆分成两个或两个以上的数据项,即数据库表中的字段都是单一属性的,不可再分。
第二范式:如果一个表已经满足了第一范式,而且该数据表中的任何一个非主键字段的数值都依赖于该数据表的主键字段,那么该数据表满足第二范式。
第三范式:如果一个表已经满足了第二范式,而且该数据表中的任何两个非主键字段的数值之间不存在函数依赖关系,那么该数据表满足第三范式。
三、数据定义
创建数据库:CREATE DATABASE或CREATE SCHEMA
打开数据库:USE+数据库名
修改数据库:ALTER {DATEBASE | SCHEMA} 数据库名
[[DEFAULT] CHARACTER SET 字符集名
| [DEFAULT] COLLATE 校对规则名]
删除数据库:DROP DATEBASE 数据库名
创建表:CREATE TABLE 表名
数据类型:NULL | NOT NOT NLL
DEFAULT:默认值
ENGINE=存储引擎
管理数据表
ADD [COLUMN] 列名 [FARST | AFTER 列名] /*添加列*/
{SET DEFAULT 默认值| DROP DEFAULT} /*修改默认值*/
DROP [COLUMN] 列名 /*删除列*/
RENAME [TO] /*新表名*/
数据完整性约束分为:实体完整性、域完整性、引用完整性及用户定义的完整性。
完整性类型 | 约束类型 | 描述 | 约束对象 |
域完整性 | DEFAULT | 当使用INSERT语句插入数据时,若已经定义默认值的列没有提供指定值,则将该默认值插入记录中 | 列 |
CHECK | 指定某一列可接受的值 | ||
实体完整性 | PRIMARYKEY | 每行记录的唯一标识符,确保用户不能输入重复值,并自动创建索引,提高性能,该列不允许使用控制 | 行 |
UNIQUE | 在列集内强制执行值的唯一性,防止出现重复值,表中不允许有两行的同一列包含相同的非空值 | 行 | |
引用完整性 | FOREIGN KEY | 定义一列或几列,其值与本表或其他表的主键或UNIQUE列相匹配 | 表之间 |
定义主键:PRIMARY KEY(唯一性)
自增主键:PRIMARY KEY AUTO_INCREMENT
外键:FOREIGN KEY
四、数据操作
数据插入:INSERT INTO 表名
VALUES() | SET列名={}
数据修改:UPDATE 表名+WHERE条件
多数据修改:UPDATE 表名列表+WHERE条件
数据删除:DELETE FROM 表名+WHERE(单个表)
DELETE FROM 表名1.*表名2、、、 FROM 表名列表+WHERE(多个表)
TRUNCATE TABLE 表名(清除表数据语句)
五数据查询
SELECT 输出列表达式 FROM 表名 +WHERE(条件)
SELECT 列名 [AS] 别名 /*定义列别名*/
CASE /*替换查询结果中的数据*/
WHEN 条件1 THEN 表达式1
WHEN 条件2 THEN 表达式2
ELSE 表达式n
END
消除结果集中的重复行:SELECT DISTINCT 列名
WHERE <判定运算>
模式匹配:表达式 LIKE 表达式(模糊查询,"_" :一个字符," %":多个字符)
范围比较:表达式 BETWEEN 表达式1 AND 表达式2(也可以用来做查询,用于WHERE条件语句中)
空值比较:表达式 IS [NOT] NULL
多表查询:FROM 表名1 别名1,表名2 别名2、、、
JOIN子句
多表连接:全连接、内连接、外连接(左、右)
JOIN子句:表名1 INNER JOIN 表名2
表名1 {LEFT | RIGHT} JOIN 表名2
ON 连接条件
IN子查询:表达式 [NOT] IN (子查询)
联合查询:SELECT 语句1 UNION [UNION A选项] SELECT 语句2
分类汇总排序
COUNT(表达式) /*计数*/
MAX(表达式) /*求最大值*/
MIN(表达式) /*求最小值*/
SUM(表达式) /*求和*/
AVG(表达式) /*求平均值*/
GROUP BY+{列名 | 表达式} [ASC(降序) | DESC(升序)](用来分组和排序)
HAVING 子句:HAVING +条件
(在GROUP BY子句后选择行,有GROUP BY 不一定要有HAVING,但是有HAVING就一定要有 GRORP BY)
ORDER BY子句:ORDER BY {列名| 表达式| 列编号} [ASC(降序) | DESC(升序)]
LIMIT子句:LIMIT{[偏移量,] 行数(返回的行数)|行数 OFFSET 偏移量}
六、数据视图
创建视图:
CREATE [OR REPLACE] VIEW 视图名[(列名列表)]
AS SELECT 语句
[WITH [CASCADED |LOCAL] CHECK OPTION]
查询视图:SELECT 列名、、、
FROM 表名;
删除视图:DROP VIEW [IF EXISTS]
视图名1,视图名n、、
七、索引与分区
普通索引(INDEX)、唯一性索引(UNIQUE )、主键(PRIMARY KEY)、全文索引 (FULLTEXT)
创建索引:CREATE [UNIQUE | FULLTEXT] INDEX 索引名(在表中必须是唯一)
ON 表名(列名[(长度)] [ASC | DESC]···)
ALTER TABLE 表名
ADD INDEX [索引名] (列名,···) (添加普通索引)
ADD PRIMARY KEY [索引名] (列名,···) (添加普通索引)
ADD UNIQUE [索引名] (列名,···) (添加主键索引)
ADD FULLTEXT [索引名] (列名,···) (添加全文索引)
CREATE TABLE 表名(列名,···| 索引项) (在创建表时创建索引)