表的集合,是存储数据的仓库
以一定的组织方式存储的相互有关的数据集合
是按照数据结构来组织、存储和管理数据的仓库
关系型数据库存储结构是二维表格
库->表->列
每一行称为一条记录,用来描述一个对象的信息
每一列称为一个字段,用来描述对象的一个属性
是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库用户组成
关系型数据库
关系数据库系统是基于关系模型的数据库系统
关系模型的数据结构使用简单易懂的二维数据表
关系模型可用简单的实体-关系 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 | 时序性 |
名称 | 特点 |
---|---|
int | 整型,无符号[0,2^32-1] 有符号[-2^31 2^32-1] |
float | 单精度浮点,4字节32位 |
double | 双精度浮点,8字节64位 |
char | 固定长度的数据类型,占用大,但是修改容易 |
varchar | 可变长度的字符类型,删除修改情况下回产生数据碎片 |
text | 文本 |
image | 图片 |
decimal | 5个有效长度数字,小数点后面有2位 |
用于创建数据库对象:库、表、索引
create database <库名>;
create table <表名> (字段名1 数据类型 [字段属性],字段名2 数据类型 [字段属性].... [primary key(字段)]);
drop database <库名>;
drop table <表名>;
show databases;
1. use <库名>;
show tables;
2. show tables from <库名>;
#不进入数据库查看数据表
管理数据表数据
insert into <表名> (字段1, 字段2, ...) values (字段1的值, 字段2的值, ...);
或
insert into <表名> values (按照字段顺序的所有字段的值);
delete from <表名> where 条件表达式;
update <表名> set 字段=值,..... where 条件表达式;
用于根据条件查询表数据
select 字段1,字段2,...,最后字段 from <表名> where 条件表达式;
或者
select * from <表名>;
select * from <表名> limit N;
#显示表前N行
select * from <表名> limit N,M;
#显示从第N行之后的M行记录,不包括第N行
alter table <旧表名> rename <新表名>;
alter table <表名> add 新字段 数据类型 字段属性;
alter table <表名> change 旧字段名 新字段名 数据类型 字段属性;
alter table <表名> drop 字段名;
delete from 表名 [where 条件表达式];
用户管理
create user '用户名'@'源地址' identified by '密码';
#源地址可以localhost或%
select user,host,authentication_string from mysql.user;
rename user '旧用户名'@'源地址' to '新用户名'@'源地址';
drop user '用户名'@'源地址';
set password [for '用户名'@'源地址'] = password('.....');
1. 修改配置文件,在[mysqld]下面添加skip-grant-tables
2. 重启mysqld服务,使用mysql命令直接免密进入数据库系统
3. update mysql.user set authentication_string=password ('新密码') where user='root'
4. 还原配置文件,重启服务
grant 权限1,权限2,... on 库名,表名 to '用户名'@'源地址' [identified by '密码'];
show grants for '用户名'@'源地址';
查看用户权限
revoke 权限1,权限2(所有权限用all) on 库名,表名 from '用户名'@'源地址';
#撤销权限
权限列表