首页 > 数据库 >MySQL

MySQL

时间:2023-07-12 22:33:06浏览次数:35  
标签:NULL name MySQL post male id select

目录

针对库的sql语句

#information_schema库是mysql默认在内存中创建的库
    游客模式只能查看少部分数据库,管理员身份才能查看所有数据库
1. 查看库
	show databases; # 查看所有库
    格式:show create database 库名;# 查看具体库的信息
    	show create database db1;  
2. 增加库
	格式:create database 库名;
    	create database db1;
3. 修改库 # 一般很少用,甚至于不用
格式: alter database 库名 修改内容
alter database db1 charset='gbk';#修改db1的字符编码为gbk

4. 删除库
	格式:drop database 库名;
    drop database db1;	
    
5.查看当前所在库名
	select database();
    
6. 如何选择数据库
	格式:use 库名;
    use mysql;
    
7.查看记录
  select * from user; 

针对表的sql语句

1. 查看表
	1.1show tables;  # 查看库下的所有表
    格式:desc 表名;
    1.2desc  t1;  # 查看表结构
    1.3show create table t1;#查看具体表的sql语句
    
2. 增加表
	create table t1(id int, name varchar(16),age int,gender varchar(32));
'''id,name,age,gender等在MySQL中称为字段;    
	int,varchar在MySQL中称为数据类型,是限制存储数据的
	字段与字段间用逗号隔开;
	'''
	    
3. 修改
	# 修改表名
    格式:alter table 旧名 rename 新名;
    alter table t1 rename tt1; # 重命名表名
    
 4. 删除
	drop table tt1;
    
 5.查看表数据
  select * from user;    

针对记录的SQL语句

'''肯定是要先有库和表,要有库和表的前提才能增加记录'''
# 记录:表里面的一行行数据
库   >>>>   表 >>>>> 记录
  • 增加记录
  	全字段增加:
  	insert into t1 values(1, 'kevin', 20);  # 单条数据
      insert into t1 values(3, 'kevin1', 20),(4, 'kevin2', 20),(5, 'kevin3', 20),(6, 'kevin4', 20);#多条数据,数据与数据间逗号隔开
      
      部分字段增加数据,需要在表名后面指定字段名:
      insert into t1(id, name) values(1, 'kevin');  # 单条数据
      insert into t1 (id,name) values (2,'jj'),(7,'uu');#多条数据
  • 查看
  	select * from t1;#查看t1表所有字段
      select id from t1;#只查看t1表id字段
      select id,namenamw from t1;#只查看t1表id、name字段
  格式:update 表名 set 字段1='v1',字段2='v2',字段3='v3', where id=1;
  	update t1 set name='tank' where id=2;#把id为2的name改为tank
      update t1 set name='tank',age=30 where id=2;#id为2的name改为tank age改为30
      update t1 set name='tony' where age=30 and name='tank';#改两个条件的一个字段
      
      update t1 set money=money+'1' where id=1;将id为1的money字段值加1
      ############以后写更新语句的时候,千万检查要有where条件###############################
      update t1 set money=money+'1' ;  # 没有where语句条件影响的是全表
  • 删除
  格式:delete from 表名 where id=1;
  	delete from t1 where id =1;
  delete from t1 ;# 没有where语句条件影响的是全表

配置文件统一字符编码

 步骤:
 1. 复制my-default.ini文件夹
 2. 将新复制的文件重命名为my.ini#my.ini是windows系统配置文件
 3. 将以下内容添加到复制文件my.ini中 
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
#[mysqld]代表服务端,[client]自带客户端、[mysql]代表客户端
   以后增加配置到相应的服务端或者客户端后增加配置就行,比如给服务端增加配置就到服务端下面增加响应代码
      
  '''配置文件后一定要重启服务端,若是重新配置字符编码,那在配置之前创建的库和文件还是使用之前的字符编码,需要重新创建新库新文件才能正常使用已经配置的字符编码'''

'''mac系统,它的配置文件,默认是没有的,如果你想加一个配置文件,也可以,但是需要自己手动创建
/etc/my.cnf
1、sudo vim /etc/my.cnf------->把你的配置写到这个文件里去------>:wq'''

存储引擎

'''存储引擎其实就是数据库存储数据的方式!!!'''
show engines;#查看MySQL支持的数据引擎
  
MySQL中有哪些存储引擎,MySQL一共支持9种存储引擎,我们只需要掌握MyISAM、InnoDB
  • MyISAM
  	'''
  		是MySQL5.5及之前版本的默认存储引擎,它相对InnoDB的存取速度更快了,但是,相对InnoDB数据不够安全.
  		它不支持事务、行锁(操作某一行数据时其他人不能操作)、外键(数据与数据之间建立关系),支持表锁(操作整个表时,他人不能操作)
  	'''
  • InnoDB
  	'''
  		是MySQL5.6及之后版本的默认存储引擎,它相对MyISAM的存取速度更慢了,但是相对MyISAM数据更安全.
  		它支持事务、行锁、外键,不支持表锁
  	'''
  • MEMORY
      '''数据存放在内存中,一旦断电,数据立马丢失,重启服务端数据就没了,不能长期保存数据'''
  测试验证:
  建个库:
  create database db4;
  进入库:
  use db4;
增加指定引擎的表:
  create table t1 (id int) engine=MyISAM;#engine指定存储引擎为MyISAM
create table t2 (id int) engine=InnoDB;
  create table t3 (id int) engine=MEMORY;
  
  '''
  不同的存储引擎的区别:
  	1. MyISAM引擎产生3个文件
  	  .frm  >>> 存表结构
  	  .MYD  >>> 存表数据
  	  .MYI  >>> 存数据索引,加快查询速度
      2. InnoDB 产生2个文件
      	.frm  >>> 表结构
      	.ibd  >>> 表索引+表数据
    	3. MEMORY产生1个文件
    		.frm  >>> 表结构
  '''

MySQL的基本数据类型

  • 整型(正负号也占用存储数据)# 存储数据的大小范围不一样,整型括号中的数字不代表存储的范围,不代表限制的长度,代表的是展示的位数
  	1.tinyint   
    2.smallint   
    3.int   
    4.bigint   
      
      范围的比较:bigint>int>smallint>tinyint
      tinyint: 1个字节 --8位 范围:-128~127(有符号)范围:0~255(无符号)
      smallint:2个字节 --16位 范围:-32768~32767(有符号)范围:0~65535(无符号)
      int:4个字节--32位
      bigint:8个字节--64位
      
      '''默认情况下,存储数据带不带符号
  带符号'''
      测试验证:存储数据有没有带符号:
      创建表:
      create table t4 (id tinyint);
      再增加记录:
      insert into t4 values (-128),(127);
      再查看字段记录:
       select *from t4;
+------+
| id   |
+------+
| -128 |
|  127 |
+------+  #由此得出带符号
          
      # 默认情况存储是带符号的,其他整型也是如此
  • 浮点型# 小数float、double、decimal精确度不一样
     1. float(255, 30)'''总共255位表示存储位数,小数占30位'''
     2.double(255, 30)
     3. decimal(65, 30) '''总共65位表示存储位数,小数占30位'''
      
      
      测试验证:float、double、decimal有何不一样:
      #创建表:
      create table t5 (id float(255, 30));
      create table t6 (id double(255, 30));
      create table t7 (id decimal(65, 30));
      #增加记录:
      insert into t5 values(1.1111111111111111111111);
      insert into t6 values(1.1111111111111111111111);
      insert into t7 values(1.1111111111111111111111);
      #查看字段记录:
       select *from t5;
        >> 1.111111164093017600000000000000
  +----------------------------------+
  | id                               |
  +----------------------------------+
  | 1.111111164093017600000000000000 |
  +----------------------------------+
       select *from t6;
        >> 1.111111111111111200000000000000
  +----------------------------------+
  | id                               |
  +----------------------------------+
  | 1.111111111111111200000000000000 |
  +----------------------------------+
       select *from t7;
        >>  1.111111111111111111111100000000
  +----------------------------------+
  | id                               |
  +----------------------------------+
  | 1.111111111111111111111100000000 |
  +----------------------------------+        
      # 得出结论:精确度不一样
      decimal>double> float
'''如果对数据的要求万无一失,可以使用字符串来保存'''
  • 字符串#字符串中括号中得数字代表的就是:限制存储的长度
    1.char()定长,根据我们在括号内填写的数字最多存储该数字的字符,字符不够则用空格填充,超出报错。
     优势:整存整取,速度快
     劣势:浪费存储空间  
    2.varchar()可变长,根据我们在括号内填写的数字最多存储该数字的字符 ,不够有几个存几个,超出报错。
  	 优势:节省存储空间
     劣势: 存去数据的速度较char 慢
      
  	  char(4):定长,超出4位,报错,不够4位,空格填充
      varchar(4): 可变长,不够4位,有几位存几位,超出4位,有几位存几位
      测试验证:
      #创建表:
      create table t8 (id int, name char(4));
      create table t9 (id int, name varchar(4));
      #增加记录:
      insert into t8 values(1, 'kevin');
      insert into t9 values(1, 'kevin');
      #查看字段记录:
      select *from t8;
      >>>kevi
  +------+------+
  | id   | name |
  +------+------+
  |    1 | kevi |
  +------+------+
      select *from t9;
      >>>kevi
  +------+------+
  | id   | name |
  +------+------+
  |    1 | kevi |
  +------+------+
  
  研究定长和可变长:
  insert into t8 values(1, 'k');
  insert into t9 values(1, 'e');
  验证方法1:char_length查询字段长度
  select char_length(name) from t8;
  select char_length(name) from t9;
  验证方法2:设置严格模式  
  sql_mode='STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH';   


  默认情况下MySQL针对char的存储会自动填充空格和删除空格
   '''以后建表的时候,都用varchar'''
  • 日期类型
  	1.date年月日
    2.datetime年月日时分秒
    3.time时分秒
    4.year年
    
    create table t13 (id  int, 
                      reg_time date,
                      login_time datetime,
                      logout_time time,
                      birth_day year
                     );
    insert into t13 values(1, '2023-04-04','2023-04-04 11:11:11', '11:11:11', 1995);#输入的数据必须加引号
  >>>                  
  +------+------------+---------------------+-------------+-----------+
  | id   | reg_time   | login_time          | logout_time | birth_day |
  +------+------------+---------------------+-------------+-----------+
  |    1 | 2023-04-04 | 2023-04-04 11:11:11 | 11:11:11    |      1995 |
  +------+------------+---------------------+-------------+-----------+

      '''实际工作中一般用datetime,它可以转换为其他任意时间类型''' 
  • 枚举与集合
  	 1.枚举:enum()多选一 ,必须使用enum()中固定字段任意一个
      测试创建表:
      create table t15 (
          			id int, gender 										enum('male','female','other')
                       );
      #增加记录:
      insert into t15 values(1,'aa');#没有使用enum()中字段任意一个,aa就没有增加进去
      insert into t15 values(2,'male');
      #查看记录:
       select * from t15;             
  >>                  
  +------+--------+
  | id   | gender |
  +------+--------+
  |    1 |        |  
  |    2 | male   |
  +------+--------+    

      2.集合:set()多选多 ,也包含多选一,必须使用set()中固定字段任意一个或多个
        create table t16 (
          			id int, 
            hobby set('read','music','tangtou','xijio','anmo')
                       );
      #增加记录:
       insert into t16 values(1,'rrrrrrr'); #没有使用set()中字段任意一个或多个,就没有增加进去
       select * from t16;            
  >>  
  +------+-------+
  | id   | hobby |
  +------+-------+
  |    1 |       |
  +------+-------+ 
         insert into t16 values(4,'read');
         select * from t16;            
  >>         
  +------+-------+
  | id   | hobby |
  +------+-------+
  |    1 |       |
  |    4 | read  |
  +------+-------+     
          insert into t16 values(5,'music,tangtou,xijio');  
          select * from t16;
  >>                  
  +------+---------------------+
  | id   | hobby               |
  +------+---------------------+
  |    1 |                     |
  |    4 | read                |
  |    5 | music,tangtou,xijio |
  +------+---------------------+         

严格模式

# mysql5.6 之前不会直接报错,需要设置一个参数,才会报错
show variables like '%mode%'; # 模糊查询
两种修改方式:
1. 配置文件修改(永久修改)-一定要重启服务端
步骤:
将my-default.ini文件内容最后一行sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 复制到配置文件my.ini中        
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
        
2. 临时修改
步骤:          
第一步:
          set global sql_mode='STRICT_TRANS_TABLES';
第二步:
          退出客户端,重新进客户端
3. set global sql_mode='STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH';   

整型中括号内的数字作用

"""整型中括号内的数字代表的不是数据长度,不代表存储的范围,代表的是展示的长度"""

验证整型中括号内的数字作用:
#创建表:
create table t11 (id int(3));
#增加记录:
insert into t11 values(99999);
#查看字段记录:
select *from t11;
>>> 99999#很明显不是限制长度
+-------+
| id    |
+-------+
| 99999 |
+-------+


* 补充
create table t12(id int(3) zerofill); # zerofill 可以把不足位数的数字用0填充
insert into t12 values(9);
select *from t12;
>>> 009
+------+
| id   |
+------+
|  009 |
+------+


创建表的完整语法

show create table t15;#查看具体表的sql语句
  
 格式:
CREATE TABLE `表名` (
  `字段名` 字段类型(数字) 约束条件 约束条件 约束条件,
  `字段名1` 字段类型1(数字) 约束条件1 约束条件1 约束条件1,
  `字段名1` 字段类型1(数字) 约束条件1 约束条件1 约束条件1) 

create table t15 (
  id int(11) DEFAULT NULL,
  hobby set('read','music','tangtou','xijio','anmo') 
) 



"""
	1. 字段名和字段类型是必须要写的
	2. 数字与约束条件是可选的,并且约束条件可以有多个,空格隔开
	3. 最后一条数据末尾逗号不能加
"""

约束条件

就是在记录数据的数据类型基础上再添加额外的限制

  • unsigned#不能填负号,否则报错
	create table t1(id int unsigned);
     insert into t1 values(-2);#报错
	insert into t1 values(2);
  • zerofill#0填充
	create table t12(id int(3) zerofill); # zerofill 可以把不足位数的数字用0填充
	 insert into t3 values(3);>>>003
  • not null# 非空,不能为空
    create table t2(
        id int, 
        name varchar(32)
    );
   insert into t2 (id) values (2);  #没有指定非空可以正常执行     
        
   create table t3(
        id int, 
        name varchar(32) not null#这里指姓名不能为空
    );
    insert into t3 values(2,'kk');
  • default默认值
	 create table t4(
        id int, 
        name varchar(32));
     insert into t4 values(2,'kk');
>>    
+------+------+
| id   | name |
+------+------+
|    2 | kk   |
+------+------+

	 create table t5 (id int,name varchar(32) default 'oo');#默认oo
    insert into t9 (id) values (1);
>>    
+------+------+
| id   | name |
+------+------+
|    1 | oo   |
+------+------+ #默认使用‘oo'   
  • unique唯一、unique(字段类型,字段类型)多列唯一
	# 单列唯一
    	create table t6 (
        	id int,
            name varchar(32) unique
        );#这里指姓名单列唯一
        insert into t6 values (2,'yy'),(3,'yy');#报错
    	insert into t6 values (2,'yy'),(3,'uu');#这里单列姓名就唯一没有报错
>>
+------+------+
| id   | name |
+------+------+
|    2 | yy   |
|    2 | kk   |
+------+------+

	# 联合唯一unique(字段类型,字段类型)多列唯一

    	create table t7 (
        	id int,
            host varchar(32) ,
            port varchar(32) ,
            unique(host,port)
        );#这里指host,port多列唯一
        insert into t7 values(1,'127.0.0.1',3306),(2,'127.0.0.1',3306);#报错host列和port列重复了
  • primary key主键
	# 单纯从约束条件来看,它的功能相当于是not null+unique,非空且唯一
    '''主键可以加快查询速度!!!因为主键本质上也是一种索引!!!'''
    
 '''   InnoDB存储引擎规定一张表至少要有一个主键,你会发现,我们之前创建表的时候,并没有主键,但是,也创建成功了,为什么呢?
   
    	这是因为InnoDB存储引擎内部有一个隐藏的字段,作为了主键,我们看不到,并且,这个隐藏的主键不能加快查询速度,就是因为InnoDB存储引擎建表就是由主键来构成的,加这个隐藏的字段作为主键,仅仅是为了把表创建成功。
    
        所以,以后我们在创建表的时候,都要创建一个主键字段,一般情况我们都给表中的id或者cid或者pid或者uid...字段添加主键

如果表中没有主键,但是有非空且唯一的字段,那么这个字段就自动升级为主键了;如果表中有多个非空且唯一的字段,那么第一个字段就自动升级为主键'''
    id---->(uid, cid, sid, ....id)
    
如何给字段添加主键
    id int primary key#id字段增加了primary key就变成了主键字段

    create table t8 (
        id int primary key,  # 这个id字段就已经有了主键的特性
        name varchar(32)
    );
    desc t8;
    >>
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(32) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+    #key 列PRI就代表了id是主键具有非空且唯一

下面来验证下id是不是具有非空且唯一的特性 :
insert into t8 (name) values('ii');#报错,没有id字段没有填,证明具有非空特性
insert into t8 values (2,'ii'),(2,'pp');#报错,id字段填写一样,证明具有唯一特性
insert into t8 values (3,'ii'),(2,'ii');#没报错
>>
+----+------+
| id | name |
+----+------+
|  2 | ii   |
|  3 | ii   |
+----+------+
  • auto_increment# 自增
    auto_increment配合primary key使用
    create table t9 (
    	id int primary key auto_increment,#给主键id增加自增的特性
        name varchar(32)
    );
    desc t9;
    >>
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(32) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+  
#此时id 也有自增的特性
验证:
insert into t9 (name) values ('tt'),('qq');
select * from t9;
>>
+----+------+
| id | name |
+----+------+
|  1 | tt   |
|  2 | qq   |
+----+------+   #id实现自增功能
    
    '''
    以后我们在创建id字段的时候,固定语法结构:
    id int primary key auto_increment
    主键字段在添加值的时候,就不用在单独添加了,而是自动生成。
    
    '''在一张表中,我们可以通过主键字段来唯一确定一条记录'''

补充一些其他SQL语句

  • 修改表名
      格式:alter table 旧表名 rename 新表名;
      alter table t1 rename t2;	
  • 增加字段
	添加字段到表格最后:
      格式:alter table 表名 add 字段名  数据类型 约束条件;#默认添加新字段到表格最后
    		alter table t1 add age int;
            
    添加新字段到表格首行:    
      格式:alter table 表名 add 字段名  数据类型 约束条件 first;#添加新字段到表格首行
    		alter table t1 add salary decimal(9,2) first;
            
    添加新字段到旧字段xx之后:    
      格式:alter table 表名 add 新字段名  数据类型 约束条件 after 字段名; #添加新字段到表格id之后
        	alter table t1 add gender varchar(16) after id;
  • 删除字段
    格式:alter table 表名 drop 字段名;
    alter table t1 drop salary;
  • 修改字段类型
1. modify只能改字段数据类型完整约束,不能改字段名,但是change可以!
    格式:alter table 表名 modify  需要修改的字段名  新数据类型 约束条件;
    alter table t1 modify name char(16);#把name varchar(32)改为name char(16)
    """只能修改为相同数据类型,比如把int改为varchar就不行,int改为bigint就可以"""
    
2. change修改字段名、数据类型    
    格式:alter table 表名 change 旧字段名 新字段名 数据类型 约束条件;
    alter table t1 change name name1 char(16);#name改为name1

查询关键字


where:查询条件
select * #指所有的字段
select 字段名 
from 指定表名

# 数据准备
create table emp(
  id int primary key auto_increment, #非空唯一自增
  name varchar(20) not null,	#非空
  sex enum('male','female') not null default 'male', #枚举男女不能为空 为空默认男
  age smallint(3) unsigned not null default 28,#年纪位数最多32767,不能为负数不能为空,为空默认28
  hire_date date not null,#入职日期为date类型年月日 不能为空
  post varchar(50),
  post_comment varchar(100),
  salary double(9,2),#工资总共9位 小数占两位
  office int, #一个部门一个屋子
  depart_id int#部门id
);

#录入数据
insert into emp(name,sex,age,hire_date,post,salary,office,depart_id) values
('tom','male',78,'20150302','teacher',1000000.31,401,1),#以下是教学部
('kevin','male',81,'20130305','teacher',8300,401,1),
('tony','male',73,'20140701','teacher',3500,401,1),
('owen','male',28,'20121101','teacher',2100,401,1),
('jack','female',18,'20110211','teacher',9000,401,1),
('jenny','male',18,'19000301','teacher',30000,401,1),
('sank','male',48,'20101111','teacher',10000,401,1),
('哈哈','female',48,'20150311','sale',3000.13,402,2),#以下是销售部门
('呵呵','female',38,'20101101','sale',2000.35,402,2),
('西西','female',18,'20110312','sale',1000.37,402,2),
('乐乐','female',18,'20160513','sale',3000.29,402,2),
('拉拉','female',28,'20170127','sale',4000.33,402,2),
('僧龙','male',28,'20160311','operation',10000.13,403,3), #以下是运营部门
('程咬金','male',18,'19970312','operation',20000,403,3),
('程咬银','female',18,'20130311','operation',19000,403,3),
('程咬铜','male',18,'20150411','operation',18000,403,3),
('程咬铁','female',18,'20140512','operation',17000,403,3);

mysql> select * from emp;
+----+------+--------+-----+------------+-----------+--------------+------------+--------+-----------+
| id | name | sex    | age | hire_date  | post      | post_comment | salary     | office | depart_id |
+----+-------+--------+-----+------------+-----------+--------------+------------+--------+----------+
|  1 | tom  | male   |  78 | 2015-03-02 | teacher   | NULL         | 1000000.31 |    401 |         1 |
|  2 | kevin| male   |  81 | 2013-03-05 | teacher   | NULL         |    8300.00 |    401 |         1 |
|  3 | tony | male   |  73 | 2014-07-01 | teacher   | NULL         |    3500.00 |    401 |         1 |
|  4 | owen | male   |  28 | 2012-11-01 | teacher   | NULL         |    2100.00 |    401 |         1 |
|  5 | jack | female |  18 | 2011-02-11 | teacher   | NULL         |    9000.00 |    401 |         1 |
|  6 | jenny| male   |  18 | 1900-03-01 | teacher   | NULL         |   30000.00 |    401 |         1 |
|  7 | sank | male   |  48 | 2010-11-11 | teacher   | NULL         |   10000.00 |    401 |         1 |
|  8 | 哈哈 | female |  48 | 2015-03-11 | sale      | NULL         |    3000.13 |    402 |         2 |
|  9 | 呵呵 | female |  38 | 2010-11-01 | sale      | NULL         |    2000.35 |    402 |         2 |
| 10 | 西西 | female |  18 | 2011-03-12 | sale      | NULL         |    1000.37 |    402 |         2 |
| 11 | 乐乐 | female |  18 | 2016-05-13 | sale      | NULL         |    3000.29 |    402 |         2 |
| 12 | 拉拉 | female |  28 | 2017-01-27 | sale      | NULL         |    4000.33 |    402 |         2 |
| 13 | 僧龙 | male   |  28 | 2016-03-11 | operation | NULL         |   10000.13 |    403 |         3 |
| 14 | 程咬金| male   |  18 | 1997-03-12 | operation | NULL         |   20000.00 |    403 |         3 |
| 15 | 程咬银| female |  18 | 2013-03-11 | operation | NULL         |   19000.00 |    403 |         3 |
| 16 | 程咬铜| male   |  18 | 2015-04-11 | operation | NULL         |   18000.00 |    403 |         3 |
| 17 | 程咬铁| female |  18 | 2014-05-12 | operation | NULL         |   17000.00 |    403 |         3 |
+----+------+--------+-----+------------+-----------+--------------+------------+--------+-----------+
查询关键字之where筛选
# where------>筛选条件的
"""
	模糊查询:没有明确的筛选条件
	关键字:like
	关键符号:
		%:匹配任意个数任意字符
		_:匹配单个个数任意字符
show variables like '%mode%';
"""

1.查询id大于等于3小于等于6的数据
第一种方式:select * from emp where id >= 3 and id <= 6;
第二种方式:select * from emp where id between 3 and 6; 
+----+-------+--------+-----+------------+---------+--------------+----------+--------+-----------+
| id | name  | sex    | age | hire_date  | post    | post_comment | salary   | office | depart_id |
+----+-------+--------+-----+------------+---------+--------------+----------+--------+-----------+
|  3 | tony  | male   |  73 | 2014-07-01 | teacher | NULL         |  3500.00 |    401 |         1 |
|  4 | owen  | male   |  28 | 2012-11-01 | teacher | NULL         |  2100.00 |    401 |         1 |
|  5 | jack  | female |  18 | 2011-02-11 | teacher | NULL         |  9000.00 |    401 |         1 |
|  6 | jenny | male   |  18 | 1900-03-01 | teacher | NULL         | 30000.00 |    401 |         1 |
+----+-------+--------+-----+------------+---------+--------------+----------+--------+-----------+

2.查询薪资是20000或者18000或者17000的数据
第一种方式:select * from emp where salary = 20000 or salary = 18000 or salary = 17000;
第二种方式:select * from emp where salary in (20000,18000,17000);  # 简写
+----+-----------+--------+-----+------------+-----------+--------------+----------+--------+-----------+
| id | name      | sex    | age | hire_date  | post      | post_comment | salary   | office | depart_id |
+----+-----------+--------+-----+------------+-----------+--------------+----------+--------+-----------+
| 14 | 程咬金    | male   |  18 | 1997-03-12 | operation | NULL         | 20000.00 |    403 |         3 |
| 16 | 程咬铜    | male   |  18 | 2015-04-11 | operation | NULL         | 18000.00 |    403 |         3 |
| 17 | 程咬铁    | female |  18 | 2014-05-12 | operation | NULL         | 17000.00 |    403 |         3 |
+----+-----------+--------+-----+------------+-----------+--------------+----------+--------+-----------+

3.查询员工姓名中包含o字母的员工姓名和薪资
# 在你刚开始接触mysql查询的时候,建议你按照查询的优先级顺序拼写出你的sql语句
"""
先是查哪张表 from emp
再是根据什么条件去查 where name like ‘%o%’
再是对查询出来的数据筛选展示部分 select name,salary
"""
select name,salary from emp where name like '%o%';
+------+------------+
| name | salary     |
+------+------------+
| tom  | 1000000.31 |
| tony |    3500.00 |
| owen |    2100.00 |
+------+------------+
select name,salary from emp where name like '%o';#以o结尾
select name,salary from emp where name like 'o%';#以o开头

4.查询员工姓名是由四个字符组成的员工姓名与其薪资
第一种方式:select name,salary from emp where name like '____';#4个_
第二种方式:select name,salary from emp where char_length(name) = 4; #char_length为MySQL函数获取字符串长度
+------+----------+
| name | salary   |
+------+----------+
| tony |  3500.00 |
| owen |  2100.00 |
| jack |  9000.00 |
| sank | 10000.00 |
+------+----------+

5.查询id小于3或者大于6的数据
第一种方式:select *  from emp where id not between 3 and 6;
第二种方式:select * from emp where id<3 or id>6;

6.查询薪资不在20000,18000,17000范围的数据
第一种方式:select * from emp where salary not in (20000,18000,17000);
第二种方式:select * from emp where salary != 20000 and salary != 18000 and salary != 17000;

7.查询岗位描述为空的员工名与岗位名#针对null不能用等号,只能用is
select name,post from emp where post_comment is NULL;
+-----------+-----------+
| name      | post      |
+-----------+-----------+
| tom       | teacher   |
| kevin     | teacher   |
| tony      | teacher   |
| owen      | teacher   |
| jack      | teacher   |
| jenny     | teacher   |
| sank      | teacher   |
| 哈哈      | sale      |
| 呵呵      | sale      |
| 西西      | sale      |
| 乐乐      | sale      |
| 拉拉      | sale      |
| 僧龙      | operation |
| 程咬金    | operation |
| 程咬银    | operation |
| 程咬铜    | operation |
| 程咬铁    | operation |
+-----------+-----------+
select name,post from emp where post_comment = NULL;  # 查询为空!Empty set (0.00 sec)
select name,post from emp where post_comment is not NULL;#是 非空,其实就是不是空Empty set (0.00 sec) 

'''在sql中,NULL和''表示含义不一样,前者表示空值,后者表示空字符串;在实际工作者最好设置为'',不要使用NULL尤其是两者混用'''
查询关键字之group by分组
# 为什么需要分组
分组的好处在于可以快速统计出某些数据
"""
按照某个指定的条件将单个单个的个体分成一个个整体
	eg:  按照男女分组
		按照肤色分组
		按照年龄分组
"""
5.6以上的版本默认都会直接报错
	原因是分组之后 select后面默认只能直接填写分组的字段,不能再写其他字段
    原因是分组的目的就是按照分组的条件来管理诸多数据 最小单位应该是分组的依据而不是单个单个的数据
  如果是MySQL5.6及以下版本 需要自己手动添加,在配置文件中增加:
    	set global sql_mode = 'only_full_group_by,STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH';
        
        
# 聚合函数:
	聚合函数主要就是配合分组一起使用
	max             统计最大值
    min				统计最小值
    sum				统计求和
    count			统计计数
    avg				统计平均值
    
# 数据分组应用场景:每个部门的平均薪资,男女比例等

1.按部门分组
select * from emp group by post;  # 按部门分组
+----+------+--------+-----+------------+----------+--------------+------------+--------+----------+
| id | name | sex    | age | hire_date  | post     | post_comment | salary     | office | depart_id|
+----+------+--------+-----+------------+----------+--------------+------------+--------+----------+
| 13 | 僧龙 | male   |  28 | 2016-03-11 | operation | NULL         |   10000.13 |    403 |         3|
|  8 | 哈哈 | female |  48 | 2015-03-11 | sale      | NULL         |    3000.13 |    402 |         2|
|  1 | tom | male   |  78 | 2015-03-02 | teacher   | NULL         | 1000000.31 |    401 |         1 
+----+--------+--------+-----+------------+-----------+--------------+------------+--------+--------+
#分组后显示的是每组第一条数据

"""
设置sql_mode为only_full_group_by,意味着以后但凡分组,只能取到分组的依据,
不应该在去取组里面的单个元素的值,那样的话分组就没有意义了,因为不分组就是对单个元素信息的随意获取
"""
set global sql_mode="strict_trans_tables,only_full_group_by";
# 重新链接客户端
验证:
select * from emp group by post;  # 报错
select id,name,sex from emp group by post;  # 报错
select post from emp group by post;  # 不报错获取部门信息
# 强调:只要分组了,就不能够再“直接”查找到单个数据信息了,只能获取到组名


2.获取每个部门的最高工资  
问题解析:
先对部门进行分组,然后利用max函数查询薪资最高
select post,max(salary) from emp group by post;
+-----------+-------------+
| post      | max(salary) |
+-----------+-------------+
| operation |    20000.00 |
| sale      |     4000.33 |
| teacher   |  1000000.31 |
+-----------+-------------+

select post,max(salary) from emp;#获取emp的最高工资
+---------+-------------+
| post    | max(salary) |
+---------+-------------+
| teacher |  1000000.31 |
+---------+-------------+

补充:在显示的时候还可以给字段取别名
select post as '部门',max(salary) as '最高工资' from emp group by post;
+-----------+--------------+
| 部门       | 最高工资      |
+-----------+--------------+
| operation |     20000.00 |
| sale      |      4000.33 |
| teacher   |   1000000.31 |
+-----------+--------------+
as也可以省略 但是不推荐省 因为语义不明确
3.每个部门的最低工资
select post,min(salary) from emp group by post;
4. 每个部门的平均工资
select post,avg(salary) from emp group by post;
5. 每个部门的工资总和
select post,sum(salary) from emp group by post;
6. 每个部门的人数
select post,count(id) from emp group by post;
select post,count(*) from emp group by post;#按照字段数据值最多的统计数量
select post,count(1) from emp group by post;#按照第一列统计数量
统计的时候只要是非空字段 效果都是一致的 
这里显示age,salary,id最后演示特殊情况post_comment
补充说明group_concat、concat、concat_ws
1. group_concat()  分组之后使用
如果真的需要获取分组以外的数据字段 可以使用group_concat()
# 每个部门的员工姓名
select post,group_concat(name) from emp group by post;
+-----------+------------------------------------------------+
| post      | group_concat(name)                             |
+-----------+------------------------------------------------+
| operation | 程咬铁,程咬铜,程咬银,程咬金,僧龙                    |
| sale      | 拉拉,乐乐,西西,呵呵,哈哈                           |
| teacher   | sank,jenny,jack,owen,tony,kevin,tom            |
+-----------+------------------------------------------------+

select post,group_concat(name,'|',sex,'|',age) from emp group by post;#还可增加|进行分割
+-----------+------------------------------------------------------------------------------------+
| post      | group_concat(name,'|',sex,'|',age)                                                 |     
+-----------+------------------------------------------------------------------------------------+
| operation | 程咬铁|female|18,程咬铜|male|18,程咬银|female|18,程咬金|male|18,僧龙|male|28            |     
| sale      | 拉拉|female|28,乐乐|female|18,西西|female|18,呵呵|female|38,哈哈|female|48             |        
teacher|sank|male|48,jenny|male|18,jack|female|18,owen|male|28,tony|male|73,kevin|male|81,tom|male|78 |
+-----------+------------------------------------------------------------------------------------+

select post,group_concat(distinct name) from emp group by post; #distinct name去重

select post,group_concat(distinct name separator '%') from emp group by post;
+-----------+------------------------------------------------+
| post      | group_concat(distinct name separator '%')      |
+-----------+------------------------------------------------+
| operation | 程咬铁%程咬铜%程咬银%程咬金%僧龙               |
| sale      | 拉拉%乐乐%西西%呵呵%哈哈                       |
| teacher   | sank%jenny%jack%owen%tony%kevin%tom            |
+-----------+------------------------------------------------+

2. concat()  分组之前使用
select concat(name,sex) from emp;
select concat(name,'|',sex) from emp;
+----------------------+
| concat(name,'|',sex) |
+----------------------+
| tom|male             |
| kevin|male           |
| tony|male            |
| owen|male            |
| jack|female          |
| jenny|male           |
| sank|male            |
| 哈哈|female          |
| 呵呵|female          |
| 西西|female          |
| 乐乐|female          |
| 拉拉|female          |
| 僧龙|male            |
| 程咬金|male          |
| 程咬银|female        |
| 程咬铜|male          |
| 程咬铁|female        |
+----------------------+

3. concat_ws()
select post,concat_ws('|', name, age) from emp group by post;
+-----------+---------------------------+
| post      | concat_ws('|', name, age) |
+-----------+---------------------------+
| operation | 僧龙|28                   |
| sale      | 哈哈|48                   |
| teacher   | tom|78                    |
+-----------+---------------------------+
关键字之having过滤
having 用在分组之后筛选数据,一般与聚合函数使用
"""
where与having都是筛选功能 但是有区别
	where在分组之前对数据进行筛选
	having在分组之后对数据进行筛选

关键字where group by 同时出现的情况下,group by必须在where之后
where 先对整张表进行一次筛选,group by再对筛选过后的表进行分组

我们一定要有一个简单的认识 一条SQL语句的结果也可以看成是一张全新的表
"""
1.统计各部门年龄在30岁以上的员工平均薪资,并且保留平均薪资大于10000的部门.
第一步筛选30岁以上员工
select * from emp where age>30;
第二步按照部门筛选平均工资
select post,avg(salary) from emp where age>30 group by post;
第三步保留平均工资大于10000的部门
select post,avg(salary) from emp where age>30 group by post having avg(salary)>10000;
+---------+---------------+
| post    | avg(salary)   |
+---------+---------------+
| teacher | 255450.077500 |
+---------+---------------+
关键字之distinct去重
# 对有重复的展示数据进行去重操作 一定要是重复的数据
select distinct age from emp; #对年纪去重
+-----+
| age |
+-----+
|  78 |
|  81 |
|  73 |
|  28 |
|  18 |
|  48 |
|  38 |
+-----+
select post,group_concat(distinct name) from emp group by post;
+-----------+------------------------------------------------+
| post      | group_concat(distinct name)                    |
+-----------+------------------------------------------------+
| operation | 程咬铁,程咬铜,程咬银,程咬金,僧龙               |
| sale      | 拉拉,乐乐,西西,呵呵,哈哈                       |
| teacher   | sank,jenny,jack,owen,tony,kevin,tom            |
+-----------+------------------------------------------------+
不要对主键去重没哟意义,主键就是唯一的
关键字之order by排序
升序asc
降序desc

select * from emp order by salary; #默认升序排
select * from emp order by salary desc; #降序排

#先按照age降序排,若年纪相同的情况下再按照薪资升序排
select * from emp order by age desc,salary;
+----+-----------+--------+-----+------------+-----------+--------------+------------+--------+-----------+
| id | name      | sex    | age | hire_date  | post      | post_comment | salary     | office | depart_id |
+----+-----------+--------+-----+------------+-----------+--------------+------------+--------+-----------+
|  2 | kevin     | male   |  81 | 2013-03-05 | teacher   | NULL         |    8300.00 |    401 |         1 |
|  1 | tom       | male   |  78 | 2015-03-02 | teacher   | NULL         | 1000000.31 |    401 |         1 |
|  3 | tony      | male   |  73 | 2014-07-01 | teacher   | NULL         |    3500.00 |    401 |         1 |
|  8 | 哈哈      | female |  48 | 2015-03-11 | sale      | NULL         |    3000.13 |    402 |         2 |
|  7 | sank      | male   |  48 | 2010-11-11 | teacher   | NULL         |   10000.00 |    401 |         1 |
|  9 | 呵呵      | female |  38 | 2010-11-01 | sale      | NULL         |    2000.35 |    402 |         2 |
|  4 | owen      | male   |  28 | 2012-11-01 | teacher   | NULL         |    2100.00 |    401 |         1 |
| 12 | 拉拉      | female |  28 | 2017-01-27 | sale      | NULL         |    4000.33 |    402 |         2 |
| 13 | 僧龙      | male   |  28 | 2016-03-11 | operation | NULL         |   10000.13 |    403 |         3 |
| 10 | 西西      | female |  18 | 2011-03-12 | sale      | NULL         |    1000.37 |    402 |         2 |
| 11 | 乐乐      | female |  18 | 2016-05-13 | sale      | NULL         |    3000.29 |    402 |         2 |
|  5 | jack      | female |  18 | 2011-02-11 | teacher   | NULL         |    9000.00 |    401 |         1 |
| 17 | 程咬铁    | female |  18 | 2014-05-12 | operation | NULL         |   17000.00 |    403 |         3 |
| 16 | 程咬铜    | male   |  18 | 2015-04-11 | operation | NULL         |   18000.00 |    403 |         3 |
| 15 | 程咬银    | female |  18 | 2013-03-11 | operation | NULL         |   19000.00 |    403 |         3 |
| 14 | 程咬金    | male   |  18 | 1997-03-12 | operation | NULL         |   20000.00 |    403 |         3 |
|  6 | jenny     | male   |  18 | 1900-03-01 | teacher   | NULL         |   30000.00 |    401 |         1 |
+----+-----------+--------+-----+------------+-----------+--------------+------------+--------+-----------+

'''多字段排序,如果想让后面的字段排序生效,前提:前面的排序字段必须一样'''

# 统计各部门年龄在10岁以上的员工平均工资,并且保留平均工资大于1000的部门,然后对平均工资进行排序
select post,avg(salary) from emp where age>10 group by post having avg(salary)>1000 order by avg(salary) desc;
+-----------+---------------+
| post      | avg(salary)   |
+-----------+---------------+
| teacher   | 151842.901429 |
| operation |  16800.026000 |
| sale      |   2600.294000 |
+-----------+---------------+
关键字之limit分页
# 限制展示条数
select * from emp limit 3;#展示3条
+----+-------+------+-----+------------+---------+--------------+------------+--------+-----------+
| id | name  | sex  | age | hire_date  | post    | post_comment | salary     | office | depart_id |
+----+-------+------+-----+------------+---------+--------------+------------+--------+-----------+
|  1 | tom   | male |  78 | 2015-03-02 | teacher | NULL         | 1000000.31 |    401 |         1 |
|  2 | kevin | male |  81 | 2013-03-05 | teacher | NULL         |    8300.00 |    401 |         1 |
|  3 | tony  | male |  73 | 2014-07-01 | teacher | NULL         |    3500.00 |    401 |         1 |
+----+-------+------+-----+------------+---------+--------------+------------+--------+-----------+

# 查询工资最高的人的详细信息
select * from emp order by salary desc limit 1;
+----+------+------+-----+------------+---------+--------------+------------+--------+-----------+
| id | name | sex  | age | hire_date  | post    | post_comment | salary     | office | depart_id |
+----+------+------+-----+------------+---------+--------------+------------+--------+-----------+
|  1 | tom  | male |  78 | 2015-03-02 | teacher | NULL         | 1000000.31 |    401 |         1 |
+----+------+------+-----+------------+---------+--------------+------------+--------+-----------+

# 分页显示
select * from emp limit 3,2;  # 第一个参数表示起始位置,第二个参数表示的是条数,不是索引位置
+----+------+--------+-----+------------+---------+--------------+---------+--------+-----------+
| id | name | sex    | age | hire_date  | post    | post_comment | salary  | office | depart_id |
+----+------+--------+-----+------------+---------+--------------+---------+--------+-----------+
|  4 | owen | male   |  28 | 2012-11-01 | teacher | NULL         | 2100.00 |    401 |         1 |
|  5 | jack | female |  18 | 2011-02-11 | teacher | NULL         | 9000.00 |    401 |         1 |
+----+------+--------+-----+------------+---------+--------------+---------+--------+-----------+

select * from emp limit 5,5;
+----+--------+--------+-----+------------+---------+--------------+----------+--------+-----------+
| id | name   | sex    | age | hire_date  | post    | post_comment | salary   | office | depart_id |
+----+--------+--------+-----+------------+---------+--------------+----------+--------+-----------+
|  6 | jenny  | male   |  18 | 1900-03-01 | teacher | NULL         | 30000.00 |    401 |         1 |
|  7 | sank   | male   |  48 | 2010-11-11 | teacher | NULL         | 10000.00 |    401 |         1 |
|  8 | 哈哈   | female |  48 | 2015-03-11 | sale    | NULL         |  3000.13 |    402 |         2 |
|  9 | 呵呵   | female |  38 | 2010-11-01 | sale    | NULL         |  2000.35 |    402 |         2 |
| 10 | 西西   | female |  18 | 2011-03-12 | sale    | NULL         |  1000.37 |    402 |         2 |
+----+--------+--------+-----+------------+---------+--------------+----------+--------+-----------+
关键字之regexp正则
select * from emp where name regexp '^j.*(n|y)$';
+----+-------+------+-----+------------+---------+--------------+----------+--------+-----------+
| id | name  | sex  | age | hire_date  | post    | post_comment | salary   | office | depart_id |
+----+-------+------+-----+------------+---------+--------------+----------+--------+-----------+
|  6 | jenny | male |  18 | 1900-03-01 | teacher | NULL         | 30000.00 |    401 |         1 |
+----+-------+------+-----+------------+---------+--------------+----------+--------+-----------+

清空表补充

创建一个表:create table t1(id int primary key auto_increment,name varchar(32));
录入字段:insert into t1 (name) values('kevin'),('jack');
select *from t1;
+----+-------+
| id | name  |
+----+-------+
|  1 | kevin |
|  2 | jack  |
+----+-------+

1. delete from t1;  # 不能把主键重置
select *from t1;
Empty set (0.00 sec) #删除t1记录,但是表还存在
insert into t1 (name) values('kevin'),('jack');#重新录入字段验证
select *from t1;
+----+-------+
| id | name  |
+----+-------+
|  3 | kevin |
|  4 | jack  |
+----+-------+# 不能把主键重置,新增记录从3开始

2. truncate 清空主键从1开始
create table t15(id int primary key auto_increment,name varchar(32));
insert into t15(name)values('jack'),('tony');
truncate t15;# 清空把主键值重置从1开始
insert into t15(name)values('bibi'),('jerry');
+----+-------+
| id | name  |
+----+-------+
|  1 | bibi  |
|  2 | jerry |
+----+-------+#删除后可以主键重置从1开始

'''所以,以后如果有清空表的需求,我们选择truncate,因为truncate清空表之后,还可以恢复数据'''
 DBA可以恢复数据------>binlog日志----->记录你操作sql语句的过程
 DBA:数据库管理员

标签:NULL,name,MySQL,post,male,id,select
From: https://www.cnblogs.com/Super-niu/p/17548995.html

相关文章

  • MySQL铺垫
    目录数据的演变史数据存储发展史数据库的本质数据库的分类sql与NoSqlMySQL简介修改管理员密码及忘记密码怎么办概念补充基本SQL语句数据的演变史#以ATM为例#1.把数据存放在单个文件里面 1.文件名不规范2.数据格式也不规范 kevin|123kevin$123kevin*123#......
  • 说透MySQL:从数据结构到性能优化,附实际案例和面试题
    typora-copy-images-to:imgmysql索引第一章MySQL性能(掌握)1分析-数据库查询效率低下我们进入公司进行项目开发往往关注的是业务需求和功能的实现,但是随着项目运行的时间增加,数据量也就增加了,这时会影响到我们数据库的查询性能。所以我们要提高操作数据库的性能,有如下两种方式:1.......
  • com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not al
    在做学成在线项目时,启动项目报错:com.mysql.cj.exceptions.UnableToConnectException:PublicKeyRetrievalisnotallowedatsun.reflect.NativeConstructorAccessorImpl.newInstance0(NativeMethod)atsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstr......
  • docker 安装 docker 并下载mysql redis镜像
    **步骤:1.Uninstalloldversions(卸载旧版本): sudoyumremovedocker\         docker-client\         docker-client-latest\         docker-common\         docker-latest\  ......
  • PostgreSQL(pg) /MYSQL数据库,使用递归查询(WITH RECURSIVE)功能来实现获取指定菜单ID的
      PostgreSQL/MYSQL数据库,使用递归查询(WITHRECURSIVE)功能来实现获取指定菜单ID的所有下级菜单数据。下方用例是假设菜单表menu的改成自己的表即可WITHRECURSIVEmenu_hierarchyAS(SELECTid,name,parent_idFROMmenuWHEREid=<指......
  • Linux(Centos)安装Mysql的步骤
    因为Mysql收费所以Centos7不能像原来那么丝滑的去安装了,之前很多可行的安装方式现在都需要换个姿势。本人环境是CentOS7,安装的MySQL版本是5.7.34,从卸载到安装全过程记录。一.卸载MySQL(没安装过的可直接跳过)​ ​最后查看一下还有没有MySQL依赖的包名和文件夹,按上面步骤全部......
  • MySQL条件查询
    前言从今天开始,健哥就带各位小伙伴学习数据库技术。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深,全面讲解数据库体系。非常适合零基础的小伙伴来学习。 前戏已做完,精彩即开始全文大约【1263】字,不说废话,只讲可以让你学到技......
  • IDEA中mysql无法自动补全解决办法
    1.前言本人在跟着b站视频学习时,发现无法如视频中显示的那样进行sql提示,上网查找了一些资料,进行了解决2.解决后的提示示例图1图23.解决方式3.1我的解决方式本人使用的IDEA是2021.2.3设置——语言和框架——SQL方言,修改全局SQL方言与项目SQL方言为MySQL。(最初是“无”)......
  • 基于C#连接Mysql,并进行增删改查操作
    记录一下今天的学习内容。前置条件(括号里是我用的):VisualStudio (2022)、Mysql(8.0.33CommunityServer)、NavicatPremium(16) 1.开发准备首先,打开VisualStudio,选择控制台应用并创建,框架应该影响不大,我用的.net6.0然后新建一个名为MysqlDbContext.cs的项。......
  • MySql开启日志 --记录每条执行的SQL语句
    --第一条SETGLOBALlog_output='TABLE';SETGLOBALgeneral_log='ON';--在重启mysql重启Mysql详情请看:(10条消息)如何重启MySQL,正确启动MySQL_mysqlrestart_wuyepiaoxue789的博客-CSDN博客--重启完成之后可以去数据库`Mysql`中的general_log表里查看,也可以执行一下的......