数据库笔记
数据库 (DataBase)
存储数据的仓库,数据是有组织的进行存储
关系型数据库管理系统
MySQL (Structured Query Language)
SQL 通用语法
- SQL 语句可以单行或多行书写,以分号结尾;
- MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写;
- 注释
- 单行注释: -- 注释内容 或 # 注释内容(MySQL 特有)
- 多行注释: /* 注释 */
SQL 分类

DDL -- 操作数据库
查询
1
SHOW DATABASES;创建
- 创建数据库
1
CREATE DATABASE 数据库名称; - 创建数据库(判断,如果不存在则创建)
1
CREATE DATABASE IF NOT EXISTS 数据库名称;
- 删除
- 删除数据库
1
DROP DATABASE 数据库名称; - 删除数据库(判断,如果存在则删除)
1
DROP DATABASE IF EXISTS 数据库名称;
- 使用数据库
- 查看当前使用的数据库
1
SELECT DATABASE(); - 使用数据库
1
USE 数据库名称;
DDL -- 操作表
创建(Create)
注意:最后一行末尾,不能加逗号1
2
3
4
5
6CREATE TABLE 表名 (
字段名1 数据类型,
字段名2 数据类型,
...
字段名n 数据类型
);查询(Retrieve)
- 查询当前数据库下所有表名称
1
SHOW TABLES; - 查询表结构
1
DESC 表名称;
- 修改(Update)
- 修改表名
1
ALTER TABLE 表名 RENAME TO 新表名; - 添加一列
1
ALTER TABLE 表名 ADD 列名 数据类型; - 修改数据类型
1
ALTER TABLE 表名 MODIFY 列名 新数据类型; - 修改列名和数据类型
1
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型; - 删除列
1
ALTER TABLE 表名 DROP 列名;
- 删除(Delete)
- 删除表
1
DROP TABLE 表名; - 删除表时判断表是否存在
1
DROP TABLE IF EXISTS 表名;
数据类型
MySQL 支持多种类型,可以分为三类: - 数值 - 日期 - 字符串 
1 | |
DML -- 操作数据
- 添加(insert)
- 给指定列添加数据
1
INSERT INTO 表名 (列名1,列名2,...) VALUES(值1,值2,...); - 给全部列添加数据
1
INSERT INTO 表名 VALUES(值1,值2,...); - 批量添加数据
1
2
3INSERT INTO 表名 (列名1,列名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...)...;
INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...)...;
- 修改(update)
- 修改表数据
(不加条件,则将所有数据都修改)
1
UPDATE 表名 SET 列名1=值1,列名2=值2,... [WHERE 条件];
- 删除(delete)
- 删除数据
(不加条件,则将所有数据都删除!)
1
DELETE FROM 表名 [WHERE 条件];
DQL
查询语法 
基础查询

条件查询

排序查询

分组查询
聚合函数

分组查询

分页查询

约束
概念 & 分类
- 约束的概念
- 约束是作用于表中列上的规则,用于限制加入表的数据
- 约束的存在保证了数据库中数据的正确性、有效性和完整性
- 约束的分类
auto_increment 当不指定时自动增长
添加约束
- 创建表时添加约束
1
2
3
4
5
6CREATE TABLE 表名(
列名 数据类型 NOT NULL,
列名 数据类型 DEFAULT 默认值,
...
[CONSTRAINT] [约束名称] UNIQUE(列名)
); - 建完表后添加约束 #### 删除约束
1
2
3
4
5ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL;
ALTER TABLE 表名 MODIFY 字段名 数据类型 UNIQUE;
ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值;1
2
3
4
5ALTER TABLE 表名 MODIFY 字段名 数据类型;
ALTER TABLE 表名 DROP INDEX 字段名;
ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;
外键

数据库设计
数据库设计简介

表关系
1.
多对一实现方式:在多的一方建立外键,指向一的一方的主键;
2.
多对多实现方式:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键;
3.
一对一实现方式:在任意一方加入外键,关联另一方主键,并且设置外键为唯一(UNIQUE);
多表查询
- 笛卡尔积: 取A, B集合所有组合情况
- 多表查询:从多张表查询数据
- 连接查询
- 内连接:相当于查询A和B的交集数据
- 外连接:左外连接、右外连接
- 子查询
- 连接查询
内连接
###
外连接
### 子查询 1. 子查询概念:查询中嵌套查询,称嵌套查询为子查询; 2.
子查询根据查询结果不同,作用不同 
事务
事务简介

1 | |
事务操作
- 开启事务
- 回滚事务
- 提交事务
事务四大特征
- 原子性(Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败
- 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态
- 隔离性(Isolation):多个事务之间,操作的可见性
- 持久性(Durability):事务一旦提交或会回滚,它对数据库中的数据的改变是永久的

案例分析
音乐专辑表名 : Album | 字段名 | 数据类型 | 说明 | | ------------ | ------------- | ------------------------------- | | title | varchar(32) | 专辑名 | | style | varchar(8) | 流派(经典、流行、民谣、电子...) | | publish_time | date | 发行时间 | | publisher | varchar(16) | 出版者 | | number | tinyint | 唱片数 | | artist | varchar(16) | 艺术家 | | id | int | 编号(唯一) | | summary | varchar(1024) | 简介 |
曲目表名:Song | 字段名 | 数据类型 | 说明 | | ---------- | ----------- | ---------- | | name | varchar(32) | 歌曲名 | | serial_num | tinyint | 歌曲序号 | | id | int | 编号(唯一) |
评论表名: Review | 字段名 | 数据类型 | 说明 | | ----------- | ------------ | --------- | | content | varchar(256) | 评论内容 | | rating | tinyint | 评分(1-5) | | review_time | datetime | 评论时间 |
用户表名: User | 字段名 | 数据类型 | 说明 | | --------- | ----------- | -------------- | | username | varchar(16) | 用户名(唯一) | | image | varchar(64) | 用户头像地址 | | signature | varchar(64) | 个人签名 | | nickname | varchar(16) | 用户昵称 | | id | int | 用户编号(主键) |
表关系

代码
1 | |
1 | |
1 | |