文章目录
- MySQL数据库
- 1 基本概念
- 2 数据库系统
- 2.1 操作数据库
- 2.2 分类
- 2.3 常见数据类型
- 3 SQL语句
- 3.1 DDL
- 3.1.1 创建数据库
- 3.1.2 创建表
- 3.1.3 删除数据库
- 3.1.4 删除表
- 3.1.5 查看所有数据库
- 3.1.6 查看数据表
- 3.2 DML
- 3.2.1 插入数据
- 3.2.2 删除数据
- 3.2.3 更新数据
- 3.3 DQL
- 3.3.1 显示数据表所有数据
- 3.3.2 查看特定行数据
- 3.3.3 修改表名字
- 3.3.4 增加表字段
- 3.3.5 修改表字段名
- 3.3.6 删除字段
- 3.4 DCL
- 3.4.1 创建用户
- 3.4.2 重命名
- 3.4.3 删除用户
- 3.4.4 设置密码
- 3.4.5 找回root用户密码
- 3.4.6 权限管理
MySQL数据库
1 基本概念
表的集合,是存储数据的仓库
以一定的组织方式存储的相互有关的数据集合
是按照数据结构来组织、存储和管理数据的仓库
关系型数据库存储结构是二维表格
库->表->列
每一行称为一条记录,用来描述一个对象的信息
每一列称为一个字段,用来描述对象的一个属性
2 数据库系统
是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库用户组成
2.1 操作数据库
- 应用程序将数据请求发送到DBMS
- DBMS将底层指令发送到DB
- DB将查询到的结果转换成数据给DBMS
- DBMS将数据处理的结果给应用程序
2.2 分类
关系型数据库
关系数据库系统是基于关系模型的数据库系统
关系模型的数据结构使用简单易懂的二维数据表
关系模型可用简单的实体-关系 E-R图来表示
名称 | 适用 |
---|---|
SQL Server | 面向windows操作系统简单易用 |
Oracle | 面向所有主流平台,安全、完善、操作复杂 |
DB2 | 面向所有主流平台 大型 安全 完善 |
MySQL | 免费开源(5.7/8.0) |
Mariadb | 轻量级数据库 |
MySQL搭配使用PostgreSQL开源关系型数据库,实现平移Oracle
非关系型数据库
NoSQL 存储结构 键值对k/v key/value
名称 | 类型 |
---|---|
Redis Memcached | 缓存型 |
MongoDB | 文档型 |
ElasticSearch | 搜索型 |
Prometheus InfluxDB | 时序性 |
2.3 常见数据类型
名称 | 特点 |
---|---|
int | 整型,无符号[0,2^32-1] 有符号[-2^31 2^32-1] |
float | 单精度浮点,4字节32位 |
double | 双精度浮点,8字节64位 |
char | 固定长度的数据类型,占用大,但是修改容易 |
varchar | 可变长度的字符类型,删除修改情况下回产生数据碎片 |
text | 文本 |
image | 图片 |
decimal | 5个有效长度数字,小数点后面有2位 |
3 SQL语句
3.1 DDL
用于创建数据库对象:库、表、索引
3.1.1 创建数据库
create database <库名>;
3.1.2 创建表
create table <表名> (字段名1 数据类型 [字段属性],字段名2 数据类型 [字段属性].... [primary key(字段)]);
3.1.3 删除数据库
drop database <库名>;
3.1.4 删除表
drop table <表名>;
3.1.5 查看所有数据库
show databases;
3.1.6 查看数据表
1. use <库名>;
show tables;
2. show tables from <库名>;
#不进入数据库查看数据表
3.2 DML
管理数据表数据
3.2.1 插入数据
insert into <表名> (字段1, 字段2, ...) values (字段1的值, 字段2的值, ...);
或
insert into <表名> values (按照字段顺序的所有字段的值);
3.2.2 删除数据
delete from <表名> where 条件表达式;
3.2.3 更新数据
update <表名> set 字段=值,..... where 条件表达式;
3.3 DQL
用于根据条件查询表数据
3.3.1 显示数据表所有数据
select 字段1,字段2,...,最后字段 from <表名> where 条件表达式;
或者
select * from <表名>;
3.3.2 查看特定行数据
select * from <表名> limit N;
#显示表前N行
select * from <表名> limit N,M;
#显示从第N行之后的M行记录,不包括第N行
3.3.3 修改表名字
alter table <旧表名> rename <新表名>;
3.3.4 增加表字段
alter table <表名> add 新字段 数据类型 字段属性;
3.3.5 修改表字段名
alter table <表名> change 旧字段名 新字段名 数据类型 字段属性;
3.3.6 删除字段
alter table <表名> drop 字段名;
delete from 表名 [where 条件表达式];
3.4 DCL
用户管理
3.4.1 创建用户
create user '用户名'@'源地址' identified by '密码';
#源地址可以localhost或%
3.4.2 重命名
select user,host,authentication_string from mysql.user;
rename user '旧用户名'@'源地址' to '新用户名'@'源地址';
3.4.3 删除用户
drop user '用户名'@'源地址';
3.4.4 设置密码
set password [for '用户名'@'源地址'] = password('.....');
3.4.5 找回root用户密码
1. 修改配置文件,在[mysqld]下面添加skip-grant-tables
2. 重启mysqld服务,使用mysql命令直接免密进入数据库系统
3. update mysql.user set authentication_string=password ('新密码') where user='root'
4. 还原配置文件,重启服务
3.4.6 权限管理
grant 权限1,权限2,... on 库名,表名 to '用户名'@'源地址' [identified by '密码'];
show grants for '用户名'@'源地址';
查看用户权限
revoke 权限1,权限2(所有权限用all) on 库名,表名 from '用户名'@'源地址';
#撤销权限
权限列表