mysql基础增删改查语句汇总17认证网

正规官方授权
更专业・更权威

mysql基础增删改查语句汇总

mysql基础查询修改语句
mysql一个字段值挪到另一个字段

#将 test2 的值移动到 test3
UPDATE your_table SET test3 = test2;
AI写代码
bash
mysql取某一字段内的某部分值,赋予其他字段

#字段path的值为/test/old/a/cer/ne/qww/,编写sql取第四个/后,第五个/前的内容,赋予test字段,这只是其中一条数据,其他数据path的值都不一致,但是/数量一致
UPDATE your_table
SET test = SUBSTRING_INDEX(SUBSTRING_INDEX(path, ‘/’, 5), ‘/’, -1);
#SUBSTRING_INDEX(path, ‘/’, 5) 提取到第五个 / 为止的所有内容,包括第五个 /。
#然后,SUBSTRING_INDEX(…, ‘/’, -1) 从上一个函数的结果中提取最后一个 / 后的内容(即第五个 / 前的部分
AI写代码
bash
mysql只保留字段内容前几位

#test字段的值为00-01-02-03,编写sql,将test字段的现有值改为只保留前五位,变成00-01, 这只是其中一条数据,其余数据都不一致但格式相同
UPDATE your_table
SET test = LEFT(test, 5);
AI写代码
bash
两表指定数据匹配修改

#当表test_new内的字段A=test_old的字段A时,test_new内的字段1改为test_old的字段1
UPDATE test_new
INNER JOIN test_old ON test_new.字段A = test_old.字段A
SET test_new.字段1 = test_old.字段1
WHERE test_new.字段A = test_old.字段A;
AI写代码
bash
mysql数据分割导入(将一条数据分成几条插入其他表中)

#前提条件
表A中有字段test,new,old
表B中有字段test,new,old1,old2,old3
如何使用sql语句将,表B数据同步至表A,表B字段test对应表A字段test,new对应new,old1和old2和old3对应表A中的old,相当于,表B中test字段第一行内容为1,new字段第一行为2,old1第一行内容为3,old2第一行内容为4,old3第一行内容为5,传输到表A时,则test=1,new=2,old=3 。test=1,new=2,old=4 。test=1,new=2,old=5,表B中的一行数据在表A中会变成三行,因为表B中old有三个结果
#sql
INSERT INTO 表A (test, new, old) #可以不要此行直接查询,加此行插入
SELECT test, new, old1 FROM 表B
UNION ALL
SELECT test, new, old2 FROM 表B
UNION ALL
SELECT test, new, old3 FROM 表B;
#第一个SELECT语句选择表B中的test字段、new字段和old1字段,并插入到表A中。
#第二个SELECT语句选择表B中的test字段、new字段和old2字段,并插入到表A中。
#第三个SELECT语句选择表B中的test字段、new字段和old3字段,并插入到表A中。
#通过UNION ALL,将三个SELECT结果合并起来并插入到表A,从而实现表B中的一行数据在表A中变成三行数据。

#如果表B中除了old123,还有其余字段例如Aq12,两个字段,则
INSERT INTO 表A (test, new, old,Aq)
SELECT test, new, old1,Aq1 FROM 表B
UNION ALL
SELECT test, new, old2,Aq2 FROM 表B
UNION ALL
SELECT test, new, old3,null FROM 表B;
AI写代码
bash

mysql一个字段匹配多个值

#一个字段同时匹配多个值
#使用 IN 操作符来实现。例如,如果你有一个表 table_name,并且你想要查询字段 column_name 同时匹配多个值(如 1, 2, 3),可以使用以下语句
SELECT *
FROM table_name
WHERE column_name IN (1, 2, 3);

#一个字段同时不匹配多个值的条件
#使用 NOT IN 操作符来实现。例如,如果你想要查询字段 column_name 不匹配多个值(如 1, 2, 3),可以使用以下语句:
SELECT *
FROM table_name
WHERE column_name NOT IN (1, 2, 3);
AI写代码
bash

mysql合并字段(合并字段成表格)

#条件
mysql编写sql语句,如何将四个字段的四行值合并为一个二维表,导进另一张表的其中一个字段的值内
#示例说明
假设我们有一个表 source_table,其中有5个字段id, field1, field2, field3, field4,每个字段有多行值。我们希望将其中四个字段组合成一个二维表的形式,并插入到目标表 target_table 的一个字段 combined_field 中。
#sql 先查询出来
SELECT
CONCAT(
GROUP_CONCAT(CONCAT(field1, ‘,’, field2, ‘,’, field3, ‘,’, field4) ORDER BY id SEPARATOR ‘\n’)
) AS combined_field
FROM source_table;
#CONCAT(field1, ‘,’, field2, ‘,’, field3, ‘,’, field4):这个函数将每一行的四个字段通过,连接起来,形成该行的一种“列式”展示。GROUP_CONCAT(… ORDER BY id SEPARATOR ‘\n’):GROUP_CONCAT函数将所有行连接起来,使用\n作为行分隔符。这意味着每一行都将在结果字符串中单独显示,通过换行符分隔。
AI写代码
bash

查询字段在哪张表里面

SELECT
*
FROM
information_schema.COLUMNS
WHERE
table_schema = ‘库名’
AND COLUMN_NAME = ‘字段名’;
AI写代码
bash
mysql查询表在哪个库

SELECT table_schema FROM information_schema.TABLES WHERE table_name = ‘表名’;
AI写代码
bash
修改数据库root默认密码

#查看root默认密码
grep ‘temporary password’ /var/log/mysqld.log
#登录数据库修改密码
mysql -uroot -p
SET PASSWORD=PASSWORD(‘新密码’); #5.7以前版本
ALTER USER USER() IDENTIFIED BY ‘密码’; #5.7以后版本
#如果密码修改失败,修改两个全局参数
set global validate_password_policy=0;
set global validate_passowrd_length=1;
#再次执行修改密码就可以了
AI写代码
bash

允许root用户远程登录

GRANT ALL ON *.* TO root@’%’ IDENTIFIED BY ‘1qaz@WSX’ WITH GRANT OPTION;

#mysql8.0以上操作
use mysql;
update user set host=’%’ where user=’root’;
GRANT ALL ON *.* TO ‘root’@’%’; #执行两次
FLUSH PRIVILEGES;
AI写代码
bash
mysql设置忽略大小写

#在MySQL的my.cnf文件里,找到mysqld,mysqld下加入下面这一行
lower_case_table_names=1 #(0:大小写敏感 1:大小写不敏感)
AI写代码
bash
Mysql关闭 only_full_group_by模式

#登录数据库,查看是否有CNLY_FULL_GROUP_BY字样
select @@glohal.sql_mode;
#如果有该字段,表示该模式开启,想要关闭该模式则修改my.cnf
#在mysqld字样下加一句配置
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
AI写代码
bash
配置默认编码为UTF-8

show variables like “%character%”; #查看默认编码

在【mysqld】节点下,配置服务端编码,
character_set_server=utf8 [mysqld]节点的,这个是配置客户端信息的
我们也添加【mysqld】节点,并配置编码UTF-8
default-character-set=utf8
AI写代码
bash
MySQL数据库设置慢查询

在/etc/my.cnf文件下找到[mysqld]字段,在[mysqld]字段下加入如下几句话
long_query_time=2 #定义查过多少秒算是慢查询,这里定义2秒
\#5.0 5.1等版本配置如下选项
log-slow-queries=mysql_slow_query.log
\#5.5以及以上版本配置如下选项
slow-query-log=on#开启慢查询
slow_query_log_file=”mysql_slow_query.log” #慢查询日志保存路径
log-queries-not-using-indexes=on #记录下没有使用索引的慢查询sql
log-bin=D:/soft/xampp/mysql/logs
AI写代码
bash
Mysql备份

#备份符合条件的数据
CREATE TABLE new_table AS
SELECT *
FROM old_table
WHERE test = 1;
#备份全部数据库的数据和结构
mysqldump -uroot -p -A > 要备份的路径
#备份全部数据库的结构
mysqldump -uroot -p -A -d > 要备份的路径
#备份全部数据库的数据
mysqldump -uroot -p -A -t > 要备份的路径
#备份单个数据库的数据和结构时把-A改成要备份的数据库名称
#备份mysql单个表
mysqldump -uroot -p 库名 表名 > 要备份的路径

#要备份MySQL数据库中指定库的全部内容,包括函数、触发器、存储过程以及其他信息,可以使用mysqldump命令的一系列参数来实现。以下是一个示例:
mysqldump -u 用户名 -p –routines –triggers –events –all-databases > 备份文件名.sql
#请将命令中的用户名替换为实际的MySQL用户名,数据库名替换为您要备份的指定数据库名称,备份文件名替换为您想要保存备份内容的文件名。
#上述命令使用–databases参数指定要备份的数据库,包括指定的库和其它可能的库。使用–routines参数备份函数和存储过程,–triggers参数备份触发器,–events参数备份事件。
AI写代码
bash

数据库的还原(表的还原也是如此)

方法一:
在命令行执行
mysql -u root -p < 备份的路径

方法二:
在数据库中执行
source 备份的路径
AI写代码
bash
MySQL表的删除

delete from 表名 #清除表中所有数据
drop table 表名 #删除表
AI写代码
bash
mysql创建用户

CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’;
AI写代码
bash
mysql修改用户权限

grant all privileges on *.* to username@localhost identified by “123456” ; #设置用户可以访问mysql所有库
grant all privileges on *.* to username@localhost identified by “123456” with grant option; #设置用户拥有所有权限
AI写代码
bash
mysql删除用户

drop user ‘user’@’host’;
AI写代码
bash
mysql修改用户密码

update 库.表 set password=password(‘新密码’) where username=’用户名’ #如果密码字段是password
update user set authentication_string=password(‘新密码’) where user=’root’ and host=’%’; #如果密码字段是authentication_string
AI写代码
bash
mysql查询行数

select COUNT(*) from 表名;
select count(*) from table where 字段 = “”; #符合该条件的记录总数
AI写代码
bash
mysql同一个库内表数据传输

INSERT INTO 目标表 SELECT * FROM 来源表; #两张表的字段一致
INSERT INTO 目标表 (字段1, 字段2, …) SELECT 字段1, 字段2, … FROM 来源表; #两张表的字段不一致,或指定字段
AI写代码
bash
mysql修改字段类 型和表的字符编码

alter table 表名 modify column 字段名 字段类型(字段长度);
alter table ‘表名称’ convert to character set utf8mb4; #修改编码为utf8
AI写代码
bash
mysql查看全库数据表创建时间

select * from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA = ‘数据库名’ order by create_time desc;
AI写代码
bash
mysql新建表

CREATE TABLE dws_production (
id INT(11) NOT NULL AUTO_INCREMENT COMMENT ‘注释’,
name VARCHAR(50) NOT NULL COMMENT ‘注释’,
email VARCHAR(100) NOT NULL COMMENT ‘注释’,
hire_date DATE NOT NULL COMMENT ‘注释’,
salary DECIMAL(10, 2) NOT NULL COMMENT ‘注释’,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’注释’;
AI写代码
bash
mysql匹配一个字段的值修改另一个字段

UPDATE 表名 SET 字段1 = ‘值1’ WHERE 字段A = ‘值A’ #当字段A=值A时,字段1改为值1
UPDATE 表名 SET 字段1 = ‘值1’,字段2 = ‘值2’ WHERE 字段A = ‘值A’ #当字段A=值A时,字段1改为值1,字段2改为值2
UPDATE 表名 SET 字段1 = ‘值1’ WHERE 字段A = ‘值A’ and 字段B = ‘值B’ #当字段A=值A,字段B=值B时,字段1改为值1

#不同表匹配修改
UPDATE new
JOIN old
ON new.aa = old.11
— AND new.bb = old.22
— AND new.cc = old.33
SET new.time = old.time;
#当表new的aa字段等于,表old的11字段时,把old表的time字段的值赋予new表的time字段,ON后面可跟多个条件
AI写代码
bash

多表关联查询

1,
#说明:拿g_workorder表里的ProductBatchID去匹配g_wip表里的ProductBatchID字段,当两个表的两个字段相同时展示g_workorder表的MaterialID字段和ProductBatchID字段,然后拿g_wip表的id字段去匹配g_taskproduction表的WIPID字段,当两表的两字段相同时,展示g_taskproduction表的StationID字段
SELECT
c.StationID,
a.MaterialID,
a.ProductBatchID
FROM g_workorder a
INNER JOIN g_wip b ON a.ProductBatchID = b.ProductBatchID
INNER JOIN g_taskproduction c ON b.ID = c.WIPID
WHERE a.ProductBatchID = ’76b22e0a016740b8aacb8faa21440ab6′
AND EXISTS (
SELECT 1 FROM g_wip WHERE ProductBatchID = a.ProductBatchID
)
AND EXISTS (
SELECT 1 FROM g_taskproduction WHERE WIPID = b.ID
);
#传统的关联方式查询时间较长,使用EXISTS和INNER JOIN来优化sql提高查询率,还可以创建索引减少查询时间
#为 g_workorder 表的 ProductBatchID 字段添加索引
CREATE INDEX idx_g_workorder_productbatchid ON g_workorder (ProductBatchID);

#为 g_wip 表的 ProductBatchID 字段添加索引
CREATE INDEX idx_g_wip_productbatchid ON g_wip (ProductBatchID);

#为 g_taskproduction 表的 WIPID 字段添加索引
CREATE INDEX idx_g_taskproduction_wipid ON g_taskproduction (WIPID);

2,
#当AA表的test字段等于BB表的year字段时,把BB表的new1,new2,new3的值赋予AA表的sele,alla,qsqs,字段
#同库内的表
UPDATE AA
JOIN BB ON AA.test = BB.year
SET AA.sele = BB.new1,
AA.alla = BB.new2,
AA.qsqs = BB.new3;
AI写代码
bash

mysql查询单表内重复数据

单个字段查重
#test表内app字段有重复数据,依据app字段查找重复的app字段数据
select app,COUNT(app) as count from test GROUP BY app;
select app from test group by app having count(app) > 1; #重复数据单独筛选出来
#例如
#字段 重复数量
app count
张三 2 #两条相同
李四 1
王五 3 #三条相同

多个字段查重
#查找t_b_company_info表内DEVCOMPANY字段和qm字段同时相同的数据
select DEVCOMPANY,count(DEVCOMPANY),qm,count(qm) from t_b_company_info group by DEVCOMPANY,qm having (count(DEVCOMPANY) > 1) and (count(qm) > 1);
#列出该数据
SELECT t.* FROM t_b_company_info t, (
SELECT DEVCOMPANY, COUNT(DEVCOMPANY), qm, COUNT(qm)
FROM t_b_company_info
GROUP BY DEVCOMPANY, qm
HAVING (COUNT(DEVCOMPANY) > 1) AND (COUNT(qm) > 1)
) a
WHERE t.DEVCOMPANY=a.DEVCOMPANY AND t.qm=a.qm
AI写代码
bash

mysql查询表结构

分别使用 DESCRIBE 和 DESC 查看表结构
DESCRIBE 表名称;
DESC 表名称;

#查询表结构带注释
SELECT
table_name 表名,
COLUMN_NAME 列名,
COLUMN_TYPE 数据类型,
DATA_TYPE 字段类型,
CHARACTER_MAXIMUM_LENGTH 长度,
IS_NULLABLE 是否为空,
COLUMN_DEFAULT 默认值,
COLUMN_COMMENT 备注
FROM
INFORMATION_SCHEMA.COLUMNS
where
table_schema =’库名’
AND
table_name = ‘表名’
#此处不写表名则会查询当前库全库的表结构

#查询库中所有表名和表注释
select table_name 表名,TABLE_COMMENT 表注释 from INFORMATION_SCHEMA.TABLES Where table_schema = ‘库名’ ;

#查询sh_credit库下所有表的表结构
SELECT
t.table_name AS ‘表名’,
t.table_comment AS ‘表注释’,
c.column_name AS ‘列名’,
c.column_type AS ‘数据类型’,
c.column_comment AS ‘列注释’
FROM
information_schema.tables t
JOIN
information_schema.columns c
ON
t.table_name = c.table_name
AND t.table_schema = c.table_schema
WHERE
t.table_schema = ‘sh_credit’
ORDER BY
t.table_name, c.ordinal_position;
AI写代码
bash

mysql查看表中id最大的数据

select max(id+0) id from test;
#注:id字段,test是表名
AI写代码
bash
mysql查询匹配条件的行数

select count(*) from 表名 where 条件;
AI写代码
bash
mysql匹配一个表删除另一个表中相同的数据(多表关联)

#从MySQL数据表t1中把那些id值在数据表t2里有匹配的记录全删除掉
DELETE t1 FROM t1,t2 WHERE t1.id=t2.id
DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id

#从MySQL数据表blade_user里的数据在sd_blade_user_ids表里没有匹配的记录查找出来并删除掉
select e.id from blade_user e
LEFT JOIN sd_blade_user_ids c on e.ID=c.ID where and c.ID is null; #查询
delete e from blade_user e
LEFT JOIN sd_blade_user_ids c on e.ID=c.ID where and c.ID is null; #删除

#从两个表中找出相同记录的数据并把两个表中的数据都删除掉
DELETE t1,t2 from t1 LEFT JOIN t2 ONt1.id=t2.id WHERE t1.id=25 #(注意此处的delete t1,t2 from 中的t1,t2不能是别名)
AI写代码
bash

mysql修改密码策略和连接失败连接超时处理策略

#修改mysql配置文件
#加载密码策略插件
plugin-load-add=validate_password.so
#加载密码失败策略插件
plugin-load-add=connection_control.so
#密码长度的最小值
validate_password_length=8
#指定了密码中大小字母的最小个数
validate_password_mixed_case_count=1
#指定了密码中数字的最小个数
validate_password_number_count=1
#指定了密码策略的强度validate_password_policy的值可以使用数值0、1、2或相应的符号值LOW、MEDIUM、STRONG来指定。0/LOW:只检查长度。对于长度测试,所需的长度是validate_password_length系统变量的值 1/MEDIUM:检查长度、数字、大小写、特殊字符2/STRONG:检查长度、数字、大小写、特殊字符字典文件。
validate_password_policy=MEDIUM
#特殊字符的最小个数。
validate_password_special_char_count=1
#密码过期时间(单位天)
default_password_lifetime=180
#允许密码错误次数5次
connection_control_failed_connections_threshold=5
#密码错误后最小等待时间1分钟(单位毫秒)
connection_control_min_connection_delay=60000
connection_control_failed_connections_threshold=5
#密码错误后最大等待时间(单位毫秒)
connection_control_max_connection_delay=2147483000
#允许因为网络异常导致链接失败的最大次数
max_connect_errors =10
#非交互式连接超时时间(单位秒)
wait_timeout=1200
#交互式连接超时时间(单位秒)
interactive_timeout=1200

SHOW VARIABLES LIKE “%password%”; #查看密码策略
show variables like ‘%connection_control%’; #查看登录超时处理策略
AI写代码
bash

mysql配置加密ssl

(1) #查看ssl是否开启如果have_ssl为DISABLED,说明未开启
show variables like ‘%ssl%’;

(2)生成证书
./mysql_ssl_rsa_setup –data-dir=/data/mysql-ssl –uid=mysql #用户mysql,生成路径/data/mysql-ssl,然后将/data/mysql-ssl路径下.pem文件属猪主改成mysql

(3)配置ssl
修改my.cnf文件,在client和mysqld模块下添加以下内容
ssl-ca=/data/mysql-ssl/ca.pem
ssl-cert=/data/mysql-ssl/client-cert.pem
ssl-key=/data/mysql-ssl/client-key.pem

./mysql –ssl-ca=/data/mysql-ssl/ca.pem –ssl-cert=/data/mysql-ssl/client-cert.pem –ssl-key=/data/mysql-ssl/client-key.pem -uroot -p #登录时指定证书

(4)重启服务后连接数据库执行status查看
SSL: Cipher in use is DHE-RSA-AES256-SHA    #这里有对应的算法名称,说明该连接启用了ssl

#配置用户启用ssl
#修改已存在用户使用ssl
mysql> ALTER USER ‘dba’@’%’ REQUIRE SSL;
#修改已存在用户关闭ssl
mysql> ALTER USER ‘dba’@’%’ REQUIRE NONE;
#新建必须使用SSL用户
mysql> grant select on *.* to ‘dba’@’%’ identified by ‘xxx’ REQUIRE SSL;
则远程登录命令如下:
mysql -h 10.126.xxx.xxx -u dba -p –ssl

#关闭数据库ssl功能
vim /etc/my.cnf
[mysqld]
skip-ssl #在mysqld下添加此行
AI写代码
bash

mysql开启日志审计功能

show global variables like ‘plugin_dir’; #查看插件安装目录
INSTALL PLUGIN server_audit SONAME ‘server_audit.so’; #安装日志审计插件,如果没有server_audit.so这个文件的话在网上下一个放到插件安装目录并授予755权限更改属组和属主,再执行安装(F盘有mariadb包,lib目录里有server_audit)
show variables like ‘%audit%’; #查看日志审计初始化功能
set global server_audit_events=’CONNECT,QUERY,TABLE,QUERY_DDL’ #指定哪些操作被记录到日志文件中
set global server_audit_logging=on #开启审计功能
set global server_audit_file_path =/data/mysql/auditlogs/ #默认存放路径,可以不写,默认到data文件下
set global server_audit_file_rotate_size=200000000 #设置文件大小
set global server_audit_file_rotations=200 #指定日志文件的数量,如果为0日志将从不轮转
set global server_audit_file_rotate_now=ON #指定日志文件的数量,如果为0日志将从不轮转

#写入配置文件(永久开启)
[mysqld]
plugin_load_add = server_audit.so
#开启审计功能
server_audit_logging = ON
#防止插件被卸载
server_audit = FORCE_PLUS_PERMANENT
#是否强制切割审计日志
server_audit_file_rotate_now = ON
#定义切割审计日志的文件大小1073741824=1GB(单位K)
server_audit_file_rotate_size = 1073741824
#定义审计日志文件名
server_audit_file_path = server_audit.log
#指定那些操作被记录到日志中
server_audit_events = connect,query,table,query_ddl,query_dml,query_dcl

#参数配置说明
server_audit_output_type: #指定日志输出类型,可为SYSLOG或FILE
server_audit_logging:#启动或关闭审计
server_audit_events:#指定记录事件的类型,可以用逗号分隔的多个值(connect,query,table),如果开启了查询缓存(query cache),查询直接从查询缓存返回数据,将没有table记录
server_audit_file_path:#如server_audit_output_type为FILE,使用该变量设置存储日志的文件,可以指定目录,默认存放在数据目录的server_audit.log文件中
server_audit_file_rotate_size:#限制日志文件的大小
server_audit_file_rotations:#指定日志文件的数量,如果为0日志将从不轮转
server_audit_file_rotate_now:#强制日志文件轮转
server_audit_incl_users:#指定哪些用户的活动将记录,connect将不受此变量影响,该变量比server_audit_excl_users优先级高
server_audit_syslog_facility:#默认为LOG_USER,指定facility
server_audit_syslog_ident:#设置ident,作为每个syslog记录的一部分
server_audit_syslog_info:#指定的info字符串将添加到syslog记录
server_audit_syslog_priority:#定义记录日志的syslogd priority
server_audit_excl_users:#该列表的用户行为将不记录,connect将不受该设置影响
server_audit_mode:#标识版本,用于开发测试

#设置日志保存180天
如果设置了服务器日志审计(rsyslog)的话可以直接添加
查看/etc/logrotate.d/目录下有没有mysql-server_auditx文件,没有的话创建一个并填入一下内容
/data/mysql/data/server_audit.log {
daily
missingok
rotate 180
compress
delaycompress
notifempty
create 640 mysql mysql
sharedscripts
postrotate
/usr/local/mysql/bin/mysql –defaults-file=/etc/mysql/debian.cnf -e “SELECT @@global.server_audit_logging INTO @old_value; SET GLOBAL server_audit_logging = OFF; SET GLOBAL server_audit_logging = @old_value;” || true
endscript
}
解释:
/var/log/mysql/server_audit.log 指定了需要轮换的日志文件路径。
daily 表明每天对日志进行轮换处理。
rotate 180 设置了日志文件保留180个周期(在这个配置中是180天)。
compress 和 delaycompress 将轮换后的日志文件压缩存储。
notifempty 确保当日志文件为空时不会进行轮换。
create 设置了新日志文件的权限和所有者。
sharedcripts 表明后续的postrotate脚本在所有日志轮换后只运行一次。
postrotate 脚本部分确保了MySQL服务能够在日志文件轮换后正确地继续写入新的日志,通过暂时关闭再开启日志记录来实现。
创建/etc/mysql/debian.cnf,写入
[client]
user = your_username
password = your_password
host = localhost
设置权限
chmod 600 /etc/mysql/debian.cnf
chown root:root /etc/mysql/debian.cnf
#最后,您可以测试您的logrotate配置是否有效,方法是手动运行logrotate命令:
logrotate /etc/logrotate.d/mysql-server_auditx –debug
AI写代码
bash

数据库表加密

1,查询是否有值
select SHA2(concat(ifnull(字段1,”), ifnull(字段1,”), ifnull(字段1,”), ifnull(字段1,”), ifnull(字段1,”), ifnull(字段1,”), ifnull(字段1,”), ifnull(字段1,”), ifnull(字段1,”), ifnull(字段1,”), ifnull(字段1,”), ifnull(字段1,”), ifnull(字段1,”), ifnull(字段1,”), ifnull(字段1,”), ifnull(字段1,”)), 256) from jo_user ;
#下列语句字段位置一样

3,添加sha256字段,并执行此语句加密
update jo_user set sha256=SHA2(concat(ifnull(user_id,”), ifnull(username,”), ifnull(email,”), ifnull(password,”), ifnull(register_time,”), ifnull(register_ip,”), ifnull(last_login_time,”), ifnull(last_login_ip,”), ifnull(login_count,”), ifnull(reset_key,”), ifnull(reset_pwd,”), ifnull(error_time,”), ifnull(error_count,”), ifnull(error_ip,”), ifnull(activation,”), ifnull(activation_code,”)), 256) where sha256 is null;

2,查询字段是否有值
select ifnull(user_id,”), ifnull(group_id,”), ifnull(username,”), ifnull(email,”), ifnull(register_time,”), ifnull(register_ip,”), ifnull(last_login_time,”), ifnull(last_login_ip,”), ifnull(login_count,”), ifnull(rank,”), ifnull(upload_total,”), ifnull(upload_size,”), ifnull(upload_date,”), ifnull(is_admin,”), ifnull(is_self_admin,”), ifnull(statu,”), ifnull(session_id,”), ifnull(is_viewonly_admin,”), ifnull(day_count,”) from jo_user;

4,使用MD5方式对表的某一个字段进行加密
UPDATE 表
SET 加密后的字段 = MD5(加密字段);
AI写代码
bash

mysql字段根据当前时间戳更新日期

 

#设置了CURRENT_TIMESTAMP为默认值,勾选了根据当前时间更新,表示每次更新这条数据的时候,该字段都会更新成当前时间

CREATE TABLE `mytest` (
`text` varchar(255) DEFAULT ” COMMENT ‘内容’,
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间’,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间’
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
AI写代码
bash
生成唯一uuid

update 表名 set 字段名 = UUID();
AI写代码
bash
统计库占用总量

select TABLE_SCHEMA as ‘Database’, SUM(ROUND((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2)) AS ‘Size(MB)’ FROM information_schema.T
————————————————
版权声明:本文为CSDN博主「包子的包」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_60433728/article/details/160628684

内容来源网络,版权归原创者所有,如有侵权请联系删除

想了解更多干货,可通过下方扫码关注

可扫码添加上智启元官方客服微信👇

未经允许不得转载:17认证网 » mysql基础增删改查语句汇总
分享到:0

评论已关闭。

400-663-6632
咨询老师
咨询老师
咨询老师