目录
前期准备
先登录数据库
一、管理数据库
1.数据表结构解析
2.常用数据类型
3.适用所有类型的修饰符
4.使用数值型的修饰符
二、SQL语句
1.SQL语言分类
三、Mysql——Create,Show,Describe,Drop
1.创建数据库
2.查看数据库
3.切换数据库
4.创建数据表
5.查看数据表
6.显示表结构
7.删除数据表
8.删除数据库
四、Mysql——INSERT, DELETE, UPDATE,SELECT
1.插入表数据
编辑
2.查看插入数据
3.修改表数据
4.删除表中数据
五、临时表
1.创建表
编辑
2.插入数据(自增长)
编辑
3.退出数据库
六、清空表,删除表内所有数据
1.delete
2.truncate
3.drop、truncate、delete对比
1.drop
2.truncate
3.delete
4.小结
七、克隆表
方法一:
方法二:
八、修改表名
九、增加字段
十、修改字段名
11、删除字段
12、用户管理
1.使用明文创建用户
2.重命名用户
3.删除用户
4.忘记root密码解决方法
4.1修改配置文件
4.2修改当前root用户密码
5.修改其他用户密码
13、用户授权
1.授权
1.数据库授权
编辑
1.用qq用户登录
编辑
2.测试权限
编辑
2.远程登录授权
1.没有授权之前
编辑
2.授权
2.撤销权限
1.查看用户权限
2.撤销权限
编辑
3.权限列表
前期准备
-
先登录数据库
一、管理数据库
1.数据表结构解析
Field | 字段名称 |
Type | 数据类型 |
Null | 是否允许为空 |
Key | 主键 |
Default | 默认值 |
Extra | 扩展属性 |
Id | 例如:1 3 4 |
2.常用数据类型
int | 整型,定义整数类型的数据 |
float | 单精度浮点4字节32位;准确表示到小数点后6位 |
double | 双精度浮点8字节64位 |
char | 固定长度的字符类型 |
varchar | 可变长度的字符类型 |
text | 文本 |
image | 图片 |
decimal(5,2) | 5个有效长度数字,小数点后面有2位 |
主键是唯一的,但主键可以由多个字段构成
3.适用所有类型的修饰符
名称 | 含义 |
NULL | 数据列可包含NULL值,默认值 |
Not null | 数据列不允许包含NULL值,*为必填选项 |
default | 默认值 |
primary key | 主键,所有记录中此字段的值不能重复,且不能为NULL |
unique key | 唯一键,所有记录中此字段的值不能重复,但可以为NULL |
character set | name指定一个字符集 |
4.使用数值型的修饰符
名称 | 作用 |
AUTO_INCREMENT | 自动递增,适用于整数类型 |
UNSIGNED | 无符号 |
二、SQL语句
SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能
1.SQL语言分类
- DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
- DML:数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据
- DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
- DCL:数据控制语言,用于设置或者更改数据库用户或角色权限(数据控制语句,用于控制不通数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别,如COMMIT、ROLLBACK、GRANT、REVOKE)
三、Mysql——Create,Show,Describe,Drop
1.创建数据库
create datadase nj;
2.查看数据库
show databases;
3.切换数据库
use nj;
4.创建数据表
create table k3(id int not null,name char(10) not null,score decimal(4,2),passwd char(40) default'',primary key(id));
5.查看数据表
show tables;
6.显示表结构
describe k3;
describe nj.k3;
##########
describe 数据库名.表名;###显示表结构
7.删除数据表
drop table k3;
drop table nj.k3;
###########
drop table 库名.表名;###删除表
8.删除数据库
drop database nj(库名);
四、Mysql——INSERT, DELETE, UPDATE,SELECT
1.插入表数据
如果在mysql库中插入数据,会自动变成密文
insert into k3(id,name,score,passwd) values(1,'xzq',99,password('12345'));
password('12345'):密文
insert into k3 values(2,'hyb',80,11111);
11111:明文
insert into k3 values(3,'cyq',90,22222);
2.查看插入数据
select * from k3;
select * from k3 where name='hyb';
select * from k3 limit 2;
select * from k3 limit 3,2;
select * from k3\G;
3.修改表数据
update k3 set score='85' where name='hyb';
update k3 set score='92' where id='4';
4.删除表中数据
delete from k3;####删除k3表中所有数据,不会删除表
delete from k3 where name='clj';
五、临时表
临时表是隐形的
1.创建表
create temporary table k4(id int(4) zerofill primary key auto_increment,name varchar(15) not null,cardid int(18) not null unique key,hobby varchar(50));
2.插入数据(自增长)
insert into k4 values(1,'xzq',11111,'cg');
insert into k4 values(2,'hyb',22222,'sg');
insert into k4 (name,cardid,hobby) values('cyq',33333,'ych');
3.退出数据库
退出数据库之后,内容就没有了
六、清空表,删除表内所有数据
1.delete
delect:清空数据后,会有遗留(当表中数据有1、2、3时;删除1后,数据会从2开始)
2.truncate
truncate:不会有任何遗留(当表中数据有1、2、3时;删除1后,数据会从1开始)
3.drop、truncate、delete对比
1.drop
- 属于DDL
- 不可回滚(无法恢复)
- 不可带where
- 表内容和结构删除
- 删除速度快
2.truncate
- 属于DDL
- 不可回滚
- 不可带where
- 表内容删除
- 删除速度快
3.delete
- 属于DML
- 可回滚(可回复)
- 可带where
- 表结构在,表内容要看where执行的情况
- 删除速度慢,需要逐行删除
4.小结
- 不再需要一张表的时候用drop
- 想删除部分数据行的时候用delete,并且带上where子句
- 保留表而删除所有数据的时候用truncate
- 删除速度:drop>truncate> delete
- 安全性 delete 最好
七、克隆表
方法一:
数据和字段都有;用作迁移
create table 新表名 like 复制的表名;
复制格式,能够复制表的格式到新表,但是没有内容
insert into 新表名 select * from 复制的表名;
复制原表内容到新表
create table k5 like k3;
insert into k5 select * from k3;
方法二:
主键和唯一键会丢失,只能复制数据
create table k6(select * from k3);
八、修改表名
rename###修改表名
alter table k6 rename k8;
九、增加字段
add###扩展表结构字段
alter table k8 add address varchar(88) default 'cg';
十、修改字段名
change###修改表结构字段
alter table k8 change name cyq char(22) unique key;
11、删除字段
drop###删除 字段
alter table k8 drop address;
12、用户管理
1.使用明文创建用户
create user 'qq'@'localhost' identified by '123';
2.重命名用户
rename user 'qq'@'localhost' to 'xx'@'localhost';
select user,authentication_string,host from user;
3.删除用户
drop user 'xx'@'localhost';
4.忘记root密码解决方法
4.1修改配置文件
vim /etc/my.cnf
#添加此行
skip-grant-tables
systemctl restart mysqld.service
mysql -u root
4.2修改当前root用户密码
一直报错;解决方法:先刷新一下数据库
flush privileges;
###刷新数据库
set password for root@localhost=password('123');
###修改root密码
5.修改其他用户密码
set password for 'qq'@'localhost'=password('123');
13、用户授权
GRANT语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将会创建新的用户;当指定的用户名存在时, GRANT 语句用于修改用户信息。
1.授权
GRANT 权限列表 ON 数据库名/表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];
- 权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update”。使用“all”表示所有权限,可授权执行任何操作。
- 数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符。
- 用户名@来源地址’:用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP 地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.accp.com”、“192.168.48.%”等。
- IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略“IDENTIFIED BY”部分, 则用户的密码将为空。
1.数据库授权
grant select on nj.* to 'qq'@'localhost' identified by '123';
1.用qq用户登录
mysql -u qq -p123
2.测试权限
2.远程登录授权
1.没有授权之前
2.授权
grant all privileges on nj.* to 'qq'@'192.168.91.%' identified by '123';
3.Navicat Premium测试
2.撤销权限
1.查看用户权限
show grants for 'qq'@'192.168.91.%';
2.撤销权限
revoke all on nj.* from 'qq'@'192.168.91.%';
3.刷新看一下Navicat Premium
3.权限列表
权限 | 功能 |
select | 查询数据 |
insert | 插入数据 |
update | 更新数据 |
delete | 删除数据 |
create | 创建库、表 |
drop | 删除库、表 |
index | 建立索引 |
alter | 更改表属性 |
event | 事件 |
trigger on | 创建触发器 |