目录
三、Mysql------Create,Show,Describe,Drop
[四、Mysql------INSERT, DELETE, UPDATE,SELECT](#四、Mysql——INSERT, DELETE, UPDATE,SELECT)
[3.Navicat Premium测试](#3.Navicat Premium测试)
[3.刷新看一下Navicat Premium](#3.刷新看一下Navicat Premium)
前期准备
先登录数据库
一、管理数据库
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 | 创建触发器 |