数据库的重要性相信不需要我在这里着重强调了,这个专栏重点介绍的就是MySQL数据库,我所使用的版本为5.6,大致思路是先介绍MySQL的操作,然后再深入了解其底层原理,那就开始吧
目录
- 1.数据库相关概念
- 2.MySQL数据模型
- 3.SQL语法
- 3.1 通用语法
- 3.2 SQL语法分类
- 3.3 DDL语句
- 3.3.1数据库操作
- 3.3.2数据类型
- 3.3.3数据表操作
- 3.4 DML语句
- 3.5 DQL语句
- 3.5.1 基础查询
- 3.5.2 条件查询
- 3.5.3 分组查询
- 3.5.4 排序查询
- 3.5.5 分页查询
- 3.6 DCL语句
- 3.6.1 管理用户
- 3.6.2 权限控制
1.数据库相关概念
- 数据库(DB):从名称上来看我们大致可以知晓其意思,即存储数据的仓库
- 数据库管理系统(DBMS):操纵和管理数据库的软件
- 关系型数据库:使用表结构来存储数据,特点是使用SQL语言操作,有统一的标准,格式统一,便于维护
MySQL就是数据库管理系统,操作MySQL是使用SQL语言进行操作,所以学习MySQL的操作实际上就是在学习SQL语言
2.MySQL数据模型
3.SQL语法
3.1 通用语法
1.SQL语句可以单行或多行书写,以分号作为结尾
2.MySQL的SQL语句不区分大小写,但还是建议在书写的时候统一大小写
3.单行注释使用--或#注释(#是MySQL特有),多行注释使用/**/
3.2 SQL语法分类
分类 | 说明 |
---|---|
DDL | 定义数据库对象 |
DML | 对数据表的数据进行增删改操作 |
DQL | 查询数据 |
DCL | 创建数据库用户以及控制访问权限 |
3.3 DDL语句
3.3.1数据库操作
查询:
show databases; 查询所有的数据库
select database(); 查询当前所处的数据库
创建:
create database 数据库名; 如果数据库名已存在的话会报错
使用:
use 数据库名;
删除:
drop database 数据库名; 这个操作很危险,不要轻易使用
3.3.2数据类型
在介绍数据表操作之前需要先对MySQL里面常用的数据类型进行介绍
主要可以分为3类:数值类型,字符串类型和日期类型
- 数值类型
tinyint : 大小为1字节
smallint: 大小2字节
int: 大小4字节
bigint: 大小8字节
float: 单精度浮点数,大小4字节
double: 双精度浮点数,大小8字节
- 字符串类型
varchar(size): 可变长度字符串
text: 长文本数据
- 日期类型
date: 日期,格式是yyyy-mm-dd
time: 时间,显示到秒
datetime: date和time的混合
timestamp: 和datetime类似,但是是以时间戳的形式显示
3.3.3数据表操作
对数据表进行操作的前提是已经创建好数据库并使用了某一个数据库
查询:
show tables; 查询当前数据库的所有数据表
desc 表名; 查询数据表结构
show create table 表名; 查询建表的SQL语句
创建:
create 表名(字段1 字段类型,
字段2 字段类型,
......
); 最后一个字段后面没有逗号
修改表结构:
alter table 表名 add 字段名 字段类型; 数据表中添加字段
alter table 表名 modify 字段名 新字段类型; 修改字段数据类型
alter table 表名 change 旧字段名 新字段名 新字段类型; 修改字段名和数据类型
alter table 表名 drop 字段名; 删除字段
alter table 表名 rename to 新表名; 修改数据表名
删除:
drop table 表名; 这个操作同样危险
3.4 DML语句
DML语句是对数据表里面的数据进行增删改的操作,三个操作对应着三个关键字:insert,delete和update
添加数据:
insert into 表名(字段1,字段2......) values(值1,值2......);
这是给指定的字段添加数据,字段和值要对应,不加字段的话就是给全部字段添加数据,values后面可以有多个括号,一个括号就是一个一行数据,括号之间使用逗号隔开,添加的数据如果是字符串或者是日期的话需要包含在引号中
修改数据:
update 表名 set 字段1=值1,字段2=值2......where 条件;
如果没有条件的话就是修改整个数据表的数据
删除数据:
delete from 表名 where 条件;
不加上条件同样代表的是删除数据表所有数据
3.5 DQL语句
查询所使用的关键字为select;当然,这个关键字会和其它的关键字配合进行使用
3.5.1 基础查询
select 字段1,字段2......from 表名;
这是最基础的查询语句,如果你要返回所有的字段,使用通配符"*"即可
此外,我们还可以给返回的字段设置别名来增加可读性
select 字段1 as 别名1,字段2 as 别名2......from 表名;
在select后面加上关键字distinct就可以做到对查询结果去重
select distinct 字段1,字段2......from 表名;
3.5.2 条件查询
这里需要select和where进行配合操作
select 字段1,字段2......from 表名 where 条件;
where后面的条件可以有多个
常用的条件运算符如下:
此外SQL语句中也有逻辑运算符
3.5.3 分组查询
在介绍分组查询之前需要介绍下聚合函数,因为二者经常配合使用
聚合函数是指将一列数据作为一个整体进行纵向计算(即函数是作用于某一列的)
常见的聚合函数如下:
函数 | 说明 |
---|---|
count | 统计数量 |
max/min | 求最大/最小值 |
sum | 求和 |
avg | 求平均值 |
注:null不参与聚合函数运算
在书写SQL语句的时候聚合函数作用于字段
select 聚合函数(字段1,字段2......) from 表名;
分组查询所使用的关键字为group by,有些情况下可能会使用到where和having
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后的过滤条件];
[]中表示可能会用到的语句,并不是说所有的分组查询都会使用到
这里要注意的是where和having的区别
- where是在分组之前进行筛选,条件不满足的话就不会参与分组;having是在分组之后对结果进行筛选
- where不能对聚合函数进行判断,having可以
3.5.4 排序查询
排序查询使用的关键字为order by
select 字段列表 from 表名 order by 字段1 排序方式,字段2 排序方式......;
排序方式里面asc代表升序,desc代表降序,一般默认为升序
3.5.5 分页查询
使用关键字limit
select 字段列表 from 表名 limit 起始索引,查询记录数;
起始索引从0开始
起始索引公式:(页码-1)*每页展示的记录数
3.6 DCL语句
DCL语句所控制的是管理数据库用户以及用户的访问权限
3.6.1 管理用户
查询用户:
1. use mysql;
2. select * from user;
创建用户:
create user 用户名@主机名 identified by 用户密码;
修改用户密码:
alter user 用户名@主机名 identified with mysql_native_password by 用户密码;
删除用户:
drop user 用户名@主机名;
mysql是MySQL自己本身就有的数据库,里面的user数据表就是存储用户信息的位置,主机名是规定用户能够在哪些主机上访问数据库,默认为localhost(即当前主机)
3.6.2 权限控制
MySQL中有很多权限,但常用的也就只有少数的几种,如下:
权限 | 说明 |
---|---|
all | 所有权限 |
select | 查询数据 |
insert | 插入数据 |
update | 修改数据 |
delete | 删除数据 |
alter | 修改数据表 |
drop | 删除数据库/数据表/视图 |
create | 创建数据库/数据表 |
查询用户权限:
show grants for 用户名@主机名;
授予用户权限:
grant 权限列表 on 数据库名.表名 to 用户名@主机名;
撤销权限:
revoke 权限列表 on 数据库名.表名 from 用户名@主机名
数据库名和表名之间有一个英文状态下的句号,别忘了
授予多个权限,权限之间可以使用逗号隔开
本篇文章就到这里,完