数据库
- MySQL服务器可以创建多个数据库
- 每个数据库中可以包含多张数据表
- 数据表中含有许多数据
通用语法规则:
- SQL(Structured Query Language):结构化查询语言
- SQL语句可以单行或多行书写,以分号结尾
- 关键字建议大写,不区分大小写
- 可以使用空格和缩进来增强语句的可读性
- 单行注释:--注释内容 #注释内容(MySQL独有)
- 多行注释:/注释内容/
SQL分类
- DDL(Date Definition Language):数据定义语言。用来操作数据库,表,列等。
- DML(Date Manipulation Language):数据操作语言。用来对数据库中表的数据进行增删改
- DQL(Date Query Language):数据查询语言,用来查询数据库中表的记录(数据)。
- DCL(Date Control Language):数据控制语言。用来定义数据库的访问权限,及创建用户
DDL 操作数据库和数据表
数据库:
- 查询所有数据库:SHOW DATABASES;
- 查询数据库的创建语句:SHOW DATABASESE 数据库名称;
- 创建数据库:CREATE DATABASE 数据库名称;
- 创建数据库(判断是否存在,如果不存在则创建)CREATE DATABASE IF NOT EXISTS 数据库名称;
- 创建数据库(指定字符集):CREATE DATABASE 数据库名称 CHARACTER SET 字符集名称;
- 修改数据库(修改字符集):ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称;
- 删除数据库:DROP DATABASE 数据库名称;
- 删除数据库(判断,如果存在就删除):DROP DATABASE IF EXISTS 数据库名称;
- 使用数据库:USE 数据库名称;
- 查看当前使用的数据库:SELECT DATABASE();
数据表:
- 查询所有数据表:SHOW TABLES;
- 查询表结构:DESC 表名;
- 查询表字符集:SHOW TABLE STATUS FROM 库名 LIKE '表名';
--创建数据表:
CREATE TABLE 表名(
列名 数据类型 约束,
列名 数据类型 约束,
...
列名 数据类型 约束,
);
- 常用数据类型:
- int 整数类型 double :小数类型 date :日期类型,包含年月日,格式:yyyy-MM-dd
- datatime 日期类型,包含年月日时分秒,格式:yyyy-MM-dd HH:mm:ss
- timestamp:时间戳类型,包含年月日时分秒,格式:yyyy-MM-dd HH:mm:ss <如果不赋值,默认使用系统当前时间
- varchar(长度):字符串类型
--修改数据表:
ALTER TABLE 表名 RENAME TO 新表名;(修改表名)
ALTER TABLE 表名 CHARATACTER SET 字符集名称;(修改表的字符集)
ALTER TABLE 表名 ADD 列名 数据类型;(单独添加一列)
ALTER TABLE 表名 MODIFY 列名 新数据类型;(修改某列的数据类型)
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;(修改列名的数据类型)
ALTER TABLE 表名 DROP 列名;(删除某一列)
DROP TABLE 表名;(删除数据表);
DROP TABLE IF EXISTS表名;(删除数据表,如果存在则删除)
DML表数据的增删改操作:
- DML新增表数据:
- 给指定列添加数据:INSERT INFO 表名(列名1,列名2,...)VALUES (值1,值2,...)
- 给全部列添加数据:INSERT INFO 表名 VALUES (值1,值2...);
- 批量添加数据:INSER INFO 表名(列名1,列名2,..)VALUES (值1,值2,...),(值1,值2,...)...;
- INSER INFO 表名 VALUES (值1,值2,...),(值1,值2,...)...;
- 列名和值的数量以及数据类型要对应,除了数字类型,其他数据类型都需要加单引号
- DML修改和删除表数据
- 修改表中数据:UODATE 表名 SET 列名1=值1,列名2=值2,....[WHERE 条件];(修改语句中必须加条件,不加条件,则所有数据都会修改。
- 删除表中的语句:DELETE FROM 表名 [WHERE 条件];同上,必须加条件
DQL表数据的查询操作:
- 查询语法: SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段 HAVING 分组后的过滤条件 ORDER BY 排序 LIMIT 分页
-- 查询全部数据:
SELECT * FROM 表名;
--查询指定字段的表的数据:
SELECT 列名1,列名2,...FROM 表名;
-- 去除重复查询
SELECT DISTINCT 列名1,列名2,... FROM 表名;
--计算列的值(四则运算):
SELECT 列名1 运算符(+-*/)列名2 FROM 表名;
--起别名查询:
SELECT 列名 AS 别名 FROM 表名;
--条件查询:
SELECT 列名列表 FROM 表名 WHERE 条件;
-- 聚合函数查询:将一列数据作为一个整体,进行纵向计算
-- count(列名) max min sum avg
SELECT 函数名(列名) FROM 表名 WHERE 条件;
--排序查询: ASC-升序 DESC-降序 默认升序
SELECT 列名列表 FROM 表名 WHERE 条件 ORDER BY 列名 排序方式 ,列名,排序方式,...;
--分组查询:
SELECT 列名列表 FROM 表名 WHERE 条件 GROUP BY 分组列名 HAVING 分组后的条件过滤 ORDER BY 排序列名 排序方式;
--分页查询
SELECT 列名列表 FROM 表名 WHERE 条件 GROUP BY 分组列名 HAVING 分组后的条件过滤 ORDER BY 排序列名 排序方式 LIMIT 当前页数,每页显示的条数;
约束:
- 对表中的数据进行限定,保证数据的正确性、有效性、完整性!
- 约束的分类
- PRIMARY KEY 主键约束
- PRIMARY KEY AUTO_INCREMENT 主键自增
- UNIQUE 唯一约束
- NOT NULL 非空约束
- FOREIGN KEY 外键约束
- FOREIGN KEY ON UPDATE CASCADE 外键级联更新
- FOREING KEY ON DELECT CASCADE 外键级联删除
--主键约束:默认包含非空和唯一两个功能 一张表只能有一个主键 主键一般用于表中数据的唯一标识
--创建表的时候可以添加主键约束
SELECT TABLE 表名(
列名 数据类型 PRIMARY KEY,
...
列名 数据类型 约束
);
--删除主键约束
ALTER TABLE 表名 DROP PRIMARY KEY;
-- 建表之后单独添加主键约束
ALTER TABLE 表名 MODIFY 列名 PRIMARY KEY
-- 主键自增约束:
--建表时添加主键自增约束:
CREATE TABLE 表名(
列名 数据类型 PRIMARY KEY AUTO_INCRENT,
...
列名 数据类型 约束
);
--删除主键自增约束:
ALTER TABLE 表名 MODIFY 列名 数据类型;
--建表后单独添加主键约束:
ALTER TABLE 表名 MODIFY 列名 数据类型 AUTO_INCREMENT;
--唯一约束
--建表时添加唯一约束
CREATE TABLE 表名(
列名 数据类型 UNIQUE,
...
列名 数据类型 约束
);
-- 删除唯一约束
ALTER TABLE 表名 DROP INDEX 列名;
-- 建表后单独添加唯一约束:
ALTER TABLE 表名 MODIFY 列名 数据类型 UNIQUE;
--非空约束:
--建表时添加非空约束:
CREATE TABLE 表名(
列名 数据类型 NOT NULL;
...
列名 数据类型 约束
);
--删除非空约束
ALTER TABLE 表名 MODIFY 列名 数据类型;
--建表后添加唯一约束:
ALTER TABLE 表名 MODIFY 列名 数据类型 NOT NULL;
--外键约束:当表与表之间的数据有相关联性的时候,如果没有相关约束,则无法保证数据的准确性!
--建表时添加外键约束:
CREATE TABLE 表名(
列名 数据类型 约束;
...
CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名 (主表主键列名)
);
--删除外键约束:
ALTER TABLE 表名 DROP FOREIGN KEY 外键名;
--建表后单独添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名 (主键列名);
--外键的级联更新和级联删除
--当把主表中的数据进行修改或者删除时,希望从表中有关联的数据也会随之修改或删除;
-- 添加级联更新
ALTER TABLE 表名 ADD
CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名)
ON UPDATE CASADE;
-- 添加级联删除
ALTER TABLE 表名 ADD
CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名)
ON DELETE CASADE;
-- 同时添加级联删除和更新
ALTER TABLE 表名 ADD
CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名)
ON UPDATE CASADE ON DELETE CASADE;