市建设局网站,优化关键词的步骤,怎么注册深圳公司,wordpress精简化教程MySQL 一、INSERT语句二、REPLACE语句三、UPDATE语句四、delete和TRUNCATE语句五、MySQL用户授权1、密码策略2、用户授权和撤销授权 一、INSERT语句
#在表里面插入数据#xff1a;默认情况下#xff0c;一次插入操作只插入一行
方式1#xff1a;
INSERT [INTO] 表名 [(colu… MySQL 一、INSERT语句二、REPLACE语句三、UPDATE语句四、delete和TRUNCATE语句五、MySQL用户授权1、密码策略2、用户授权和撤销授权 一、INSERT语句
#在表里面插入数据默认情况下一次插入操作只插入一行
方式1
INSERT [INTO] 表名 [(column [, column...])] VALUES(value [, value...]);
方式2
insert [into] 表名 set 字段1值1, 字段2值2
#一次性插入多条记录
INSERT [INTO] table [(column [, column...])] VALUES(value [, value...]),(value [, value...]) 注
1、如果为每列都指定值则表名后不需列出插入的列名
2、可以使用如下方式一次插入多行insert into 表名[(列名,…)] select 语句
3、如果需要插入其他特殊字符应该采用\转义字符做前缀示例
mysql8.0 [chap04]create table t1(- id int primary key,- name char(30) not null,- birthday date- );mysql8.0 [chap04]insert t1 values (1,xiaoming,20000101);
mysql8.0 [chap04]insert into t1 values (2,xiaohong,20000102),(3,xiaolan,20000103),(4,xiaohei,20000104);
mysql8.0 [chap04]insert into t1(id,name) values (5,xiaolv),(6,xiaobai);
mysql8.0 [chap04]insert into t1 set id6,namexiaozi;二、REPLACE语句
replace语句的语法格式有三种语法格式。
语法格式1replace [into] 表名 [字段列表] values 值列表
语法格式2replace [into] 目标表名[(字段列表1)] select (字段列表2) from 源表 where 条件表达式
语法格式3replace [into] 表名 set 字段1值1, 字段2值2REPLACE与INSERT语句区别
replace语句的功能与insert语句的功能基本相同不同之处在于使用replace语句向表插入新记录时如果新记录的主键值或者唯一性约束的字段值与已有记录相同则已有记录先被删除注意已有记录删除时也不能违背外键约束条件然后再插入新记录。
使用replace的最大好处就是可以将delete和insert合二为一(效果相当于更新)形成一个原子操作这样就无需将delete操作与insert操作置于事务中了
mysql replace into class values(2,02班);
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (db1.student, CONSTRAINT student_ibfk_1 FOREIGN KEY (c_num) REFERENCES class (cnum))
mysql replace into class values(3,03班);
Query OK, 2 rows affected (0.01 sec)mysql8.0 [chap04]replace t1 (id,name,birthday) values (8,xiaoqing,20010101);
mysql8.0 [chap04]replace t1 values(5,xiaolv,20000105);
mysql8.0 [chap04]select * from t1;
--------------------------
| id | name | birthday |
--------------------------
| 1 | xiaoming | 2000-01-01 |
| 2 | xiaohong | 2000-01-02 |
| 3 | xiaolan | 2000-01-03 |
| 4 | xiaohei | 2000-01-04 |
| 5 | xiaolv | 2000-01-05 |
| 6 | xiaobai | NULL |
| 7 | xiaozi | NULL |
| 8 | xiaoqing | 2001-01-01 |
--------------------------
mysql8.0 [chap04]replace t1(id,name,birthday) values (9,zhouyi,20010102),(10,zhouer,20010102);三、UPDATE语句
UPDATE 表名
SET column value [, column value]
[WHERE condition];修改可以一次修改多行数据修改的数据可用where子句限定where子句里是一个条件表达式只有符合该条件的行才会被修改。没有where子句意味着where字句的表达式值为true。也可以同时修改多列多列的修改中间采用逗号(,)隔开。
mysql8.0 [chap04]select * from t1;
--------------------------
| id | name | birthday |
--------------------------
| 1 | xiaoming | 2000-01-01 |
| 2 | xiaohong | 2000-01-02 |
| 3 | xiaolan | 2000-01-03 |
| 4 | xiaohei | 2000-01-04 |
| 5 | xiaolv | 2000-01-05 |
| 6 | xiaobai | NULL |
| 7 | xiaozi | NULL |
| 8 | xiaoqing | 2001-01-01 |
| 9 | zhouyi | 2001-01-02 |
| 10 | zhouer | 2001-01-02 |
--------------------------
10 rows in set (0.00 sec)mysql8.0 [chap04]update t1 set birthday20010101 where id6;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0四、delete和TRUNCATE语句
DELETE FROM table_name [where 条件];
TRUNCATE TABLE table_name事物处理
beign;
delete from t1;
select * from t1;
rollback;DROP、TRUNCATE、DELETE的区别 delete删除数据保留表结构可以回滚如果数据量大很慢。 truncate 删除所有数据保留表结构不可以回滚一次全部删除所有数据速度相对很快。 drop 删除数据和表结构删除速度最快。
mysql8.0 [chap04]delete from t1 where id7;
Query OK, 1 row affected (0.00 sec)
mysql8.0 [chap04]create table t2 select * from t1;
mysql8.0 [chap04]truncate table t2;五、MySQL用户授权
1、密码策略
#mysql8.0会生成临时密码查看临时密码
[rootmysql8-0-30 ~]# awk /temporary password/ {print $NF} /var/log/mysqld.log
[rootmysql8-0-30 ~]# grep password /var/log/mysqld.log#查看数据库当前密码策略
mysql8.0 [chap03]show VARIABLES like %password%;2、用户授权和撤销授权
MySql8有新的安全要求不能像之前的版本那样一次性创建用户并授权。需要先创建用户再进行授权操作。
mysql8.0 [chap03]grant all privileges on *.* to xiaoming%;
ERROR 1410 (42000): You are not allowed to create a user with GRANT1、创建用户
#创建新用户语法create user usernamehost identified by password;
说明username为自定义的用户名host为客户端的域名或者IP如果host为%时表示为任意IPpassword为密码。
mysql8.0 [mysql]create user xiaoming% identified by 123;
mysql8.0 [mysql]select user,host,authentication_string from mysql.user;
#删除用户
mysql8.0 [mysql]drop user xiaoming%;
#注意如果删除用户时显示如下提示需要执行该语句【mysql8.0 [(none)]grant system_user on *.* to root%;】
mysql8.0 [mysql]drop user xiaoming;
ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation2、授权和回收权限
授予权限的原则
1只授予能满足需要的最小权限 防止用户干坏事。比如用户只是需要查询那就只给 select 权限就可以了不要给用户赋予update 、 insert 或者 delete 权限2创建用户的时候限制用户的登录主机 一般是限制成指定 IP 或者内网 IP 段。3为每个用户设置满足密码复杂度的密码 。4定期清理不需要的用户 回收权限或者删除用户。
#查看授予用户的权限
mysql8.0 [mysql]show grants;
mysql8.0 [mysql]show grants for root%;
mysql8.0 [mysql]select * from mysql.user;
#查看某个用户从哪个服务器ip地址连接对某个数据库的操作权限这三个字段的组合构成了db表的主键。
mysql8.0 [mysql]select * from mysql.db;
#查看用户对单个表的权限
mysql8.0 [mysql]select * from mysql.tables_priv;授权语法grant 权限列表 on 库名.表名 to 用户名主机 [with GRANT option];
mysql用户常用权限列表说明all 或者all privileges授予用户所有权限create授予用户创建新数据库和表的权限drop授予用户删除数据库和表的权限delete授予用户删除表中的行的权限alter授予用户修改表结构的权限insert授予用户在表中插入行add的权限select授予用户运行select命令以从表中读取数据的权限update授予用户更新表中的数据的权限
mysql8.0 [mysql]grant all privileges on *.* to xiaoming% with grant option;
mysql8.0 [mysql]flush privileges;
#说明*.*中第一个*表示所有数据库第二个*表示所有数据表;with grant option表示授予xiaoming用户grant命令该命令可以给别的用户授权的权限
mysql8.0 [mysql]select user,grant_priv from mysql.user;
------------------------------
| user | grant_priv |
------------------------------
| root | Y |
| xiaoming | Y |
| mysql.infoschema | N |
| mysql.session | N |
| mysql.sys | N |
------------------------------
mysql8.0 [mysql]create user xiaohong% identified by 123;
Query OK, 0 rows affected (0.01 sec)mysql8.0 [mysql]select select_priv,user from mysql.user;
-------------------------------
| select_priv | user |
-------------------------------
| Y | root |
| N | xiaohong |
| Y | xiaoming |
| Y | mysql.infoschema |
| N | mysql.session |
| N | mysql.sys |
-------------------------------
6 rows in set (0.00 sec)mysql8.0 [mysql]grant select on mysql.user to xiaohong%;
mysql8.0 [mysql]select * from tables_priv;
---------------------------------------------------------------------------------------------------------------
| Host | Db | User | Table_name | Grantor | Timestamp | Table_priv | Column_priv |
---------------------------------------------------------------------------------------------------------------
| % | mysql | xiaohong | user | xiaominglocalhost | 2023-02-08 00:56:32 | Select | |
| localhost | mysql | mysql.session | user | boot | 2023-02-05 18:30:53 | Select | |
| localhost | sys | mysql.sys | sys_config | rootlocalhost | 2023-02-05 18:30:53 | Select | |
---------------------------------------------------------------------------------------------------------------
mysql8.0 [mysql]select * from db where userxiaohong;
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Create_tmp_table_priv | Lock_tables_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Execute_priv | Event_priv | Trigger_priv |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| % | chap03 | xiaohong | Y | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
mysql8.0 [mysql]show grants for xiaohong%;
--------------------------------------------------
| Grants for xiaohong% |
--------------------------------------------------
| GRANT USAGE ON *.* TO xiaohong% |
| GRANT SELECT ON chap03.* TO xiaohong% |
| GRANT SELECT ON mysql.user TO xiaohong% |
--------------------------------------------------
#usage连接登录权限建立一个用户就会自动授予usage权限默认授予。该usage权限并不能被revoke回收。#收回权限(不包含赋权权限)
REVOKE ALL PRIVILEGES ON *.* FROM username;
#收回赋权权限
REVOKE GRANT OPTION ON *.* FROM username;
mysql8.0 [(none)]revoke grant option on *.* from xiaoming%;
Query OK, 0 rows affected (0.00 sec)mysql8.0 [(none)]select grant_priv,user from mysql.user;
------------------------------
| grant_priv | user |
------------------------------
| Y | root |
| N | xiaohong |
| N | xiaoming |
| N | mysql.infoschema |
| N | mysql.session |
| N | mysql.sys |
------------------------------
mysql8.0 [(none)]revoke all on *.* from xiaoming;
#操作完后重新刷新权限
mysql8.0 [(none)]flush privileges;
mysql8.0 [(none)]revoke select on mysql.user from xiaohong;