centos7下mysql的卸载与安装
卸载:https://blog.csdn.net/Xiayebuliang/article/details/128133207
安装:https://blog.csdn.net/korry24/article/details/118079490
- 启动服务:systemctl start mysqld
- 连接服务:mysql -uroot -p
SQL分类之DQL、DDL、DML、DCL
- DQL:数据检索语句,如select(开发掌握,运维了解)
- DML:数据操作语句,如insert(开发掌握,运维了解)
- DDL:授权控制,如grant、revoke(运维掌握,开发了解)
- DCL:数据定义,如create、drop、alter(运维开发都要会)
DDL创建数据实践
DDL
创建数据库,删除数据库,添加字段,表索引
#创建数据库
create database 数据库名;
create database if not exists 数据库名; #如果该数据库不存在,就创建
create database 数据库名 default charset UTF8; #创建数据库,字符集设置为UTF8
#查看数据库(bata)
show databases;
#删除数据库
DQL指定查询用户信息
#进入到数据库
use 数据库名;
#查看当前处在的数据库
select database();
#查看当前数据库的所有表
show tables;
#查看表结构
desc 表名;
#查看表所有记录
select * from 表名;
DML查询数据与大坑注意
insert
update
delete
#delete 删除记录
delete from 数据库.表 where 条件;
DCL授权于用户权限管理
#创建mysql的用户,并设置权限
#创建一个账号,用于数据库连接,以及查看数据库信息
create user 用户名@'授权网段' identified by '密码'; #允许任何网段,则使用%号
#查询用户权限信息
show grants for 用户名@'%';
#给用户给予权限。
grant 权限 on 数据库.数据表 to 用户名@'%';
查看DDL语句帮助信息
linux命令帮助手册
man ls;
mysql帮助信息DDL
create 创建
alter 修改
drop 删除
#查看DDL语句的具体指令
? Data Definition;
#查看use命令的用法;
? use;
DCL语句帮助信息
DCL命令语句
- grant
- revoke
- commit
- rollback
帮助信息
? Account Management;
#演示
mysql> ? Account Management;
You asked for help about help category: "Account Management"
For more information, type 'help <item>', where <item> is one of the following
topics:
ALTER USER
CREATE USER
DROP USER
GRANT
RENAME USER
REVOKE
SET PASSWORD
DML语句帮助查看
? Data Manipulation;
先看DDL和DCL
- DDL:数据定义
- DCL:权限控制
创建kings数据库与查看字符集
- 创建kings数据库
#严谨的写法(大小写不敏感)
create database if not exists kings default charset utf8 collate utf8_general_ci;
- 查询当前数据库的字符集信息
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
坦克数据表详解
#创建坦克表
create table `tanks`(
id int,
name varchar(100) not null,
skills varchar(255) not null,
price int not null,
primary key(id)
)engine=innodb default charset=utf8;
drop语句
插入数据
insert into tanks(id,name,skills,price)values
(1,'程咬金','大招回血,血量越低,伤害越高',8888),
(2,'庄周','免疫所有队友的负面控制',2888);
drop语句
#删除无用的数据库
drop database if exists 数据库名;
#删除数据表
drop table if exists 数据库名;
mysql用户权限管理
#创建用户的语法
create user '用户名'@'网段' identified by '密码';
#查看权限
show grants for '用户名'@'网段';
#添加权限
grant 权限1,权限2,权限3 on 数据库.数据表 to 用户名@网段 identified by '密码';
#删除用户信息
drop user 用户名@网段;
SQL安全与linux安全防护
开发、测试需要连接数据库,
开通远程连接的账号,读写数据库
#创建一个账号,并给予读写,更新,删除权限
grant select,insert,update,delete on 数据库.数据表 to 用户名@'%' identified by '密码';
#创建好后,记得刷新权限
flush privileges;
授权的极大特性
- 权限,尽量避免使用all privileges
- 主机,尽量避免使用%,必要使用,请更改默认端口
- 授权的数据库,尽量避免使用*.*
python读写操作
安装python3
yum install python3 python3-devel
安装python操作mysql的驱动
pip3 install pymysql
编写脚本
vim pytho3_mysql_read_write.py
脚本内容
import pymysql
# 连接
# 使用该普通用户,连接数据库写入数据
conn = pymysql.Connect(host="10.211.55.12", port=3307, user="pyy",passwd="pyyu888",db="kings")
# 创建游标
cursor = conn.cursor()
# 插入数据
sql="insert into heros(id,name) values('1','芈月')"
# 执行sql,并返回受影响的行数
rows = cursor.execute(sql)
print(f" 插入了{rows} 行数据")
# 执行查询SQL
cursor.execute("select * from heros;")
print(f"查出的结果是: {cursor.fetchall()}")
# 提交事务
conn.commit()
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
执行脚本
python3 pytho3_mysql_read_write.py
alter语句
rename修改表名
rename table 旧表名 to 新表名;
alter修改表名
alter table 旧表名 rename to 新表名;
修改表字段
alter table 表名 add 字段名 数据类型 其他属性;
在指定位置插入字段
#插入到某一个字段子后
alter table 表名 add 字段名 数据类型 其他属性 after 另一个字段名
删除字段
alter table 表名 drop 字段;
修改表数据类型
alter table 表名 change 旧字段名 新字段名 新数据类型;
索引
索引
索引犹如一本书的目录,通过目录可以快速定位到内容的位置。给字段添加索引,可以加快数据查询速度。
查看索引
#结果中的primary key是主键,也是索引,key_name即是索引名
show index from 数据库.数据表;
添加索引
alter table 表名 add index 索引名(字段名);
删除索引
alter table 表名 drop index 索引名;
详解delete删除数据的坑
删除数据库
drop database 数据库名;
删除数据库表
drop table 表名;
使用delete删除数据库表内容
- delete是一行一行的删除,对于大容量表就显得效率低
- delete对于自增id的列,删除数据后,会保留id的位置(如使用该方法清除数据后,新插入的数据id就会接着之前的id进行自增)
delete from 数据表;
delete from 数据表 where 条件;
modify指令
修改数据类型,及其其他属性
alter table 表名 modify 字段名 长度 其他属性;
tuncate语句
truncate语句直接清空数据,重新建立一个表
不存在自增id的问题
truncate table 表名;
分页查询:limit
select * from 表名 limit 起点,数目;
数据表排序:order by
- asc:从小到大,默认
- desc:从大到小
#从小到大排
select * from 表名 order by 字段名 asc;
#从大到小排
select * from 表名 order by 字段名 desc;
数据修改:update
#修改单个内容
update 表名 set 字段名=需要修改的内容 where 条件;
#修改多个内容
update 表名 set 字段1=内容1,字段2=内容2 where 条件;