数据库(SQL)
原创
©著作权归作者所有:来自51CTO博客作者认真敲代码的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、数据库相关概念
数据库:存储数据的仓库,数据是有组织的进行存储(DB)
数据库管理系统:操纵和管理数据库的大型软件(DBMS)
SQL:操作关系数据库的编程语言,定义了一套操作关系型数据库统一标准
主流的关系型数据库管理系统:Oracle、MySQL、Microsoft SQL Server
MySQL数据库
关系型数据库(RDBMS)
概念:建立在关系模型基础上,由多张相互链接的二维表组成
特点:
1.使用表存储数据,格式统一,便于维护
2.使用SQL语言操作,标准统一,使用方便
MySQL数据模型:数据库、表
二、SQL
1.SQL通用语法:
- 1.SQL语句可以单行或多行书写,以分号结尾
- 2.SQL语句可以使用空格/缩进来增强语句的可读性
- 3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
- 4.注释:
- 单行注释:--注释内容或#注释内容(MySQL特有)
- 多行注释:/*注释内容*/
2.SQL分类:
- DDL:数据定义语言,用来定义数据库对象
- DML:数据操作语言,用来对数据库表中的数据进行增删改
- DQL:数据查询语言,用来查询数据库中表的记录
- DCL:数据控制语言,用来创建数据库用户、控制数据库的访问权限
(1)DDL
1.DDL-数据库操作:
1.查询
查询所有数据库
SHOW DATABASES;
查询当前数据库
SELECT DATABASE();
2.创建
CREATE DATABASE[IF NOT EXISTS]数据库名[DEFAULT CHARSET字符集][COLLATE 排序规则];
3.删除
DROP DATABASE[IF EXISTS]数据库名;
4.使用
USE数据库名;
2.DDL-表操作-查询
查询当前数据库所有表
SHOW TABLES;
查询表结构
DESC表名
查询指定表的建表语句
SHOW CREATE TABLE表名;
3.DDL-表操作-创建
CREATE TABLE 表名(
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
字段3 字段3类型[COMMENT 字段3注释],
......
字段n 字段n类型[COMMENT 字段n注释]
)[COMMENT 表注释];
4.DDL-表操作-修改
1.添加字段
ALTER TABLE表名ADD 字段名 类型(长度)[COMMENT注释][约束];
2.修改数据类型
ALTER TABLE表名MODIFY字段名 新数据类型(长度);
3.修改字段名和数据类型
ALTER TABLE表名CHANGE 旧字段名 新字段名 类型(长度)[COMMENT注释][约束];
4.删除字段
ALTER TABLE 表名 DROP 字段名;
5.修改表名
ALTER TABLE 表名 RENAME TO新表名;
5.DDL-表操作-删除
1.删除表
DROP TABLE[IF EXISTS]表名;
2.删除指定表,并重新创建该表
TRUNCATE TABLE表名;
(2)DML
1.添加数据(INSERT)
1.给指定字段添加数据
INSERT INTO表名(字段名1,字段名2,...)VALUES(值1,值2,...);
2.给全部字段添加数据
INSERT INTO表名VALUES(值1,值2,...);
3.批量添加数据
INSERT INTO表名(字段名1,字段名2,...)VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
INSERT INTO表名VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
2.修改数据(UPDATE)
DML-修改数据
UPDATE表名 SET字段名1=值1,字段名2=值2,...[WHERE条件];
3.删除数据(DELETE)
DML-删除数据
DELETE FROM表名[WHERE条件]
(3)DQL
1.DQL-语法
1.SELECT 字段列表
2.FROM 表名列表
3WHERE 条件列表
4.GROUP BY 分组字段列表
5.HAVING 分组后条件列表
6.ORDER BY 排序字段列表
7.LIMIT 分页参数
基本查询
条件查询(WHERE)
聚众函数(count、max、min、avg、sum)
分组查询(GROUP BY)
排序查询(ORDER BY)
分页查询(LIMIT)
2.DQL-基本查询
1.查询多个字段
SELECT 字段1,字段2,字段3...FROM 表名;
SELECT * FROM 表名;
2设置别名
SELECT 字段1[AS 别名1],字段2[AS 别名2]...FROM 表名;
3.去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
3.DQL-条件查询
1.语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;
2.条件
比较运算符、逻辑运算符
4.DQL-聚合函数
1.介绍
将一列数据作为一个整体,进行纵向计算
2.常见聚合函数
count 统计数量 max 最大值 min 最小值
avg 平均值 sum 求和
3.语法
select 聚合函数(字段列表)from表名;
5.DQL-分组查询
1.语法
select 字段列表 from 表名[where 条件]group by 分组字段名[having 分组后过滤条件];
2.where和having的区别:
1.执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
2.判断条件不同:where不能对聚合函数进行判断,而having可以。
3.注意:
执行顺序:where > 聚合函数 > having.
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
6.DQL-排序查询
1.语法
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
2.排序方式
ASC:升序(默认值)
DESC:降序
如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
7.DQL-分页查询
1.语法
select 字段列表 from 表名 limit 起始索引,查询记录数;
- 起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数。
- 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
- 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10。
8.DQL-执行顺序
from->where->group by->having->select->order by->limit
(4)DCL
1.DCL介绍
DCL英文全称Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限。
2.DCL-管理用户
1.查询用户
use mysql;
select * from user;
2.创建用户
create user '用户名'@'主机名' identified by '密码';
3.修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
4.删除用户
drop user '用户名'@'主机名';
3.DCL-权限控制
1.查询权限
show grants for '用户名'@'主机名';
2.授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
3.撤销权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';