关系型数据库(SQL) 存储结构:二维表格 存储的数据:结构化数据 使用场景:存储业务数据、账户信息等
对象: 库 -> 表 -> 二维表格形式的结构化数据 : 行(记录):用来描述一个对象的信息
列(字段):用来描述对象的一个属性
非关系型数据库(NoSQL) 存储结构:非二维表格结构,不同类型的NoSQL采用不同的存储结构,比如 键值对、文档、索引、时间序列 等
缓存型 Redis Memcached
文档型 MongoDB
索引型 Elasticsearch
时序型 Prometheus InfluxDB
列式型 HBase
- create database 库名; #查看数据库
-
- 创建表
- use 库名; #进入库
- create table 表名 (字段一 数据类型,字段二 字段类型 PRIMARY KEY(字段));
- show databases; #查看数据库
- show tables from 数据库名; #从查看数据库中的表
- desc 表名 +查看表的结构
- show create table 表名 #复杂查看表的结构
- drop tables 库名.表名 #删除某库中的表
- drop database 数据库; #删除数据库
修改表的结构:
- 增删改字段
- alter table 旧表名 rename 新表名称; #修改表名称
- alter table 表名 add 新字段 数据类型; 可以加约束类型 #新增表的字段
- alter table 表名 change 旧字段 新字段数据类型 可以加约束类型 #修改表的字段
- alter table 表名 drop 字段名称 #删除字段
-
- 增加约束
- alter table 表名 add 约束类型;
- 删除约束
- alter table 表名 drop 约束类型;
-
- 克隆:
- crate table 新表名称 like 旧表名; #克隆旧表结构
- insert into 新表名称 select * from 旧表名 #克隆就表数据 可实现表结构和表数据与旧表都一样
-
- create table 新表明 select * from 旧表名 #表数据和旧表是一样的,新表的结构和旧表的不一定一样
-
- 清空表:
- delete from 表名 #一条一条的删除记录,清空表效率较慢;自增字段仍保持原有的记录
-
- truncate table 表名 #直接重建表,清空表效率较快;自增字段的记录也会重置
- 表中数据增删改查
- insert into 表名 (字段1, 字段2 ) values (字段1的值, 字段二的值...);
- insert into 表名 (所有对应字段的值)
-
- 修改数据:
- update 表名 set 字段1=值1, 字段2=值2 where 条件表达式;
-
- 删除数据:
- delete from 表名 where 条件表达式;
- 查询:
- select * from 表名 #查看表全部的数据
- select 字段1,字段2 from 表名 where 条件表达式;
-
- 分页查询:
- select * from 表名 limit N; #查看表的前N行的记录
- select 字段 from 表名 limit N,M; #查看表的第N行之后的连续M行的记录
-
- select * from 表名\G #以列表方式竖向显示
- create user '用户名'@'来源地址 identified by '密码';
- 来源地址:
- localhost ip 网段 %(任意地址) 主机名
-
- 修改用户名
- rename user 'vc'@'%' to 'dvd'@'%';
- 修改密码
- set password for '用户名'@'来源地址' = password('密码');只可以root用户
- alter user '用户名'@'来源地址' identified by '密码'; 修改密码
- 用户权限管理:
- grant 权限1, 权限2 ON 库名.表名 to '主机名'@'来源地址'identified by 密码
- 查看权限
- show grant for '用户名'@'来源地址';
- 撤回权限
- revoke 权限列表 on 数据库名.表名 from '用户名'@'来源地址'
1.修改MySQL配置文件,在 [mysqld] 配置项下面添加配置 skip-grant-tables
2.重启MySQL服务,使用 mysql 命令即可直接登录数据库
- vim /etc/my.conf
- skip-grant-tables #添加,使登录mysql不使用授权表
- systemctl restart mysqld
-
3.执行命令 update mysql.user set authentication_string=password('密码') where user='root'; 来修改root用户密码
- 使用 update 修改 root 密码,刷新数据库
- UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('abc123') where user='root';
-
- FLUSH PRIVILEGES; #刷新数据库
- quit
4.再把 /etc/my.cnf 配置文件里的 skip-grant-tables 删除,并重启 mysql 服务
mysql -u root -pabc123
保证数据的完整性和一致性(插入数据时,需要先保证主键表的公共字段有相关数据,才能在外键表插入相关联的数据;删除数据时,需要先保证外键表已经没有相关数据,才能在主键表删除相关联的数据)
- 主键表: alter table 主表名 add primary key (公共字段);
- 外键表: alter table 从表名 add foreign key(公共字段) references 主表名(公共字段);
- # foreign key 自动生成外键名
-
- 删除外键
- alter table 表名 drop foreign key 键名别称
- alter table 表名 drop key 键名