欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

Mysql的操作应用

发布时间:2025/5/22 数据库 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Mysql的操作应用 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
1.创建数据库格式:create database if not exists 数据库名 default charset utf8;注意:1、数据库是唯一的2、if not exists先判断是否存在这个数据库,存在不创建,不存在就创建。3、创建数据库,并设定编码集为utf82.显示当前数据库服务器下所有的数据库名show databases;use 数据库名 选择数据库注意:windows下面数据库名是不区分大小写的,在Linux下面严格区分。3.删除数据库 drop database 数据库名查看已经选择的数据库select database(); 查看当前的数据库的版本号select version();4.数据表的操作show tables 查看数据库中的数据表。创建数据表格式:create table 表名(列的一些信息);例子:create table t1(id int(12), name varchar(100));create table `test t1`(id int(10), name varchar(50));desc 表名 查看表的结构.show create table 表名 查看建表的语句\G 格式化输出(文本式,竖立显示)drop table 数据表名drop table [if exists] 数据表名 尝试性的删除表。5.记录操作 增、删、改、查(1)插入数据格式: insert into 表名(字段1,字段2,字段3) values(值1,值2,值3);insert into 表名(字段1,字段2,字段3) values(a值1,a值2,a值3);(2)查询表数据格式: select * from 表名;select 字段1,字段2,字段3 from 表名;select * from 表名 where 字段=某个值;(3)修改表数据 格式:update 表名 set 字段=某个值 where 条件;update 表名 set 字段1=值1,字段2=值2 where 条件;update 表名 set 字段=字段+值 where 条件;(4)删除数据格式: delete from 表名 where 字段=某个值;delete from 表名; (慎重使用)delete from 表名 where 字段 = 值;清空表数据truncate table 表名;6.修改用户密码在退出mysql服务的情况下 输入1、mysqladmin -u 用户名 -p password 新密码输入旧密码:2、登录到mysql的时候使用set password for '用户名'@'登录主机'=password('新密码');7.修改表的字段信息修改表的字符集alter table 表名 charset utf8修改字段的类型alter table 表名 modify 字段名 字段类型修改字段的名字并同时修改字段类型alter table 表名 change 旧字段名 新字段名 字段类型修改字段的字符集alter table 表名 modify 字段名 类型 charset utf8添加新字段alter table 表名 add 字段名 类型删除字段alter table 表名 drop 字段名修改表名 alter table 旧表名 rename as 新表名8.删除默认匿名的账户为什么我直接输入mysql也能进入数据库中。是匿名用户,MySQL默认创建的。他有test和information_schema这两个库的权限。我们可以把他删掉删除匿名用户:drop user ''@'localhost';9.MySQL数据库的数据类型:MySQL的数据类型分为四大类:数值类型、字串类型、日期类型、NULL。1 数值类型:*tinyint(1字节) 0~255 -128~127smallint(2字节)mediumint(3字节)*int(4字节)bigint(8字节)*float(4字节) float(6,2) float(m,d)*double(8字节) double (m,d)decimal(自定义)字串形数值 decimal(m,d) m精度 d标度2 字串类型普通字串*char 定长字串 char(8):长度为8位 *varchar 可变字串 varchar(8):最长为8位二进制类型tinyblobblobmediumbloblongblob文本类型tinytext*text 常用于<textarea></textarea>mediumtextlongtext*enum枚举set集合3 时间和日期类型:date 年月日time 时分秒datetime 年月日时分秒timestamp 时间戳year 年4 NULL值NULL意味着“没有值”或“未知值”可以测试某个值是否为NULL不能对NULL值进行算术计算对NULL值进行算术运算,其结果还是NULL0或NULL都意味着假,其余值都意味着真MySQL的运算符:算术运算符:+ - * / % 比较运算符:= > < >= <= <> != 数据库特有的比较:in,not in, is null,is not null,like, between and 逻辑运算符:and or notlike: 支持特殊符号%和_ ; 其中 %表示任意数量的任意字符,_表示任意一位字符。表的字段约束:unsigned 无符号(正数)zerofill 前导零填充default 默认值not null 非空auto_increment 自增 在产生一个唯一的标识或顺序值的时候,可以利用这个约束条件。这个约束条件只能用于整数类型,值一般从1开始。每行加1,插入一个null到一个auto_increment列时,MySQL将插入一个比出现过的最大值+1的值。一个表中只能有一个auto_increment列,并且必须定义为primary key或unique才能够使用primary key 主键索引 (非null并不重复)unique 唯一索引 (可以为null但不重复)index 常规索引9.建表语句格式:create table 表名(字段名 类型 [字段约束],字段名 类型 [字段约束],字段名 类型 [字段约束]...);实例:create table stu(id int unsigned not null auto_increment primary key,name varchar(8) not null unique,age tinyint unsigned,sex enum('m','w') not null default 'm',classid char(6));10.插入数据1 插入指定字段insert into t1(字段1,字段2,字段3...) values ('值1','值2','值3',....);2 插入所有的字段insert into t1 values ('值1','值2','值3',....);3 插入多条数据insert into t1(字段1,字段2,字段3...) values ('值1','值2'),('值1','值2')....;4 插入结果insert into t1(字段1,字段2,字段3...) select 字段1,字段2,字段3... from t1;insert into t1() select * from t1;5 插入单条数据insert into t1 set 字段1=值1,字段2=值2....;11.查询数据格式:select [字段列表]|* from 表名[where 搜索条件][group by 分组字段 [having 子条件]][order by 排序 asc|desc][limit 分页参数]查看stu表中的信息: select * from stu;where条件查询1. 查询班级为lamp138期的学生信息select * from stu where classid='lamp138';2. 查询lamp138期的男生信息(sex为m)select * from stu where classid='lamp138' and sex='m';3. 查询id号值在10以上的学生信息select * from stu where id>10;4. 查询年龄在20至25岁的学生信息select * from stu where age>=20 and age<=25;select * from stu where age between 20 and 25;5. 查询年龄不在20至25岁的学生信息select * from stu where age not between 20 and 25;select * from stu where age<20 or age>25;6. 查询id值为1,8,4,10,14的学生信息select * from stu where id in(1,8,4,10,14);select * from stu where id=1 or id=8 or id=4 or id=10 or id=14;7. 查询lamp138和lamp94期的女生信息select * from stu where classid in('lamp138','lamp94') and sex='w';select * from stu where (classid='lamp138' or classid='lamp94') and sex='wLIKE 子句这时我们就需要在 WHERE 子句中使用 SQL LIKE 子句。LIKE 子句中使用百分号%字符来表示任意字符,类似于UNIX或正则表达式中的星号*。如果没有使用百分号%, LIKE 子句与等号=的效果是一样的。LIKE 通常与 % 一同使用,类似于一个元字符的搜索。你可以使用 AND 或者 OR 指定一个或多个条件。你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件。可以使用regexp正则来代替 like1.查询name字段值是以zh开头的所有信息select * from stu where name like "zh%";select * from stu where name regexp "^zh"; --正则写法2.查询姓名name中含有ang子串的所有信息select * from stu where name like "%ang%";select * from stu where name regexp "ang";3.查询姓名是任意四位字符构成的信息。select * from stu where name like "____";select * from stu where name regexp "^[a-z0-9]{4}$";创建一个表结构和另一个表一样的结构:create table t3 like t1;那么现在t3表的结构和t1表的结构是一样的,但是要注意数据是没有的MySQL的统计函数(聚合函数):max() min() count() sum() avg()1.获取学生表中最大、最小以及平均年龄是多少?select max(age),min(age),avg(age) from stu;2.获取学生表中男生m的数量select count(*) from stu where sex='m';GROUP BY 语句 分组GROUP BY 语句根据一个或多个列对结果集进行分组。统计班级信息,按性别分组,并统计每组人数;select sex,count(*) from stu group by sex;1.统计每个班级的人数select classid,count(*) from stu group by classid;2.统计每个班级的,男生和女生各多少人数。select classid,sex,count(*) from stu group by classid,sex;ORDER BY 排序 -- asc 默认升序 desc 降序我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的ORDER BY子句来 设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。你可以设定多个字段来排序。你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。你可以添加 WHERE...LIKE 子句来设置条件。1.按年龄升序排序查询学生信息select * from stu order by age;select * from stu order by age asc; --默认asc升序 可省略2.年龄降序排序select * from stu order by age desc;3.查询学生信息,按班级做升序排序,相同班级按年龄降序排序select * from stu order by classid asc,age desc;LIMIT 关键字 查询部分数据-- 例如: .... limit m; 查询数据只显示前m条-- 例如: .... limit m,n; 排除前m条,然后再查询出前n条1.查询前5条信息select * from stu limit 5;2.排除前2条后再获取4条信息select * from stu limit 2,4;12.修改数据格式:update 表名 set 字段1=值1,字段2=值2,字段n=值n... where 条件 -- 将id为11的age改为35,sex改为m值update stu set age=35,sex='m' where id=11;-- 将id值为12和14的数据值sex改为m,classid改为lamp92update stu set sex='m',classid='lamp92' where id=12 or id=14 --等价于下面update stu set sex='m',classid='lamp92' where id in(12,14);13.删除操作格式:delete from 表名 [where 条件]-- 删除stu表中id值为100的数据delete from stu where id=100;-- 删除stu表中id值为20到30的数据delete from stu where id>=20 and id<=30;-- 删除stu表中id值为20到30的数据(等级于上面写法)delete from stu where id between 20 and 30;-- 删除stu表中id值大于200的数据delete from stu where id>200;14.导入和导出注意: 在操作导入和导出数据的时候 不要登录到mysql服务中,要退出mysql服务进行操作-- 将lamp138数据库里面的所有的表导出C:\>mysqldump -u root -p lamp138 > C:\lamp138.sqlEnter password:---- 将lamp138数据库中的stu表导出C:\>mysqldump -u root -p lamp138 stu > C:\lamp138_stu.sqlEnter password:-- 将lamp138库中的所有表导入C:\>mysql -u root -p lamp138 < C:\lamp138.sqlEnter password:-- 将lamp138库中stu表导入C:\>mysql -u root -p lamp138 < C:\lamp138_stu.sqlEnter password:*********************-- 将所有的数据库进行导出mysqldump -uroot -p密码 --all-databases --events > /tmp/bak.sql 所有数据库备份15.MySQL的权限管理格式:grant 权限 on 数据库.数据表 to '用户名'@'登录主机' identified by '密码'刷新权限flush privileges;举例:grant select,insert,update,delete on *.* to 'wjs'@'%' identified by '12345'; 安全的做法grant select,insert,update,delete on pass.* to 'root'@'localhost' identified by '12345'; 只针对localhost主机里面的 pass数据库里面的数据表进行增删该查 删除用户drop user 'xxoo'@'%' 16.索引的作用:索引是数据库中用来提高搜索性能的。我们通常在做数据库优化的时候通常先做索引的优化,数据量少的时候没效果,数据越多效果越明显。查看表中都有哪些索引show index from 表名\G索引的分类:常规索引(index)最基本的索引,没有任何限制添加表字段的常规索引create index 索引名 on 表名(字段名)alter table 表名 add index 索引名(字段名) 在创建表的时候也可以进行添加create table t2(id int(10) unsigned auto_increment primary key,name varchar(255), index 索引名(字段名));删除表字段常规索引**drop index 索引名 on 表名alter table 表名 drop index 索引名唯一索引(unique)唯一索引是可以给每个字段进行添加的,添加完了之后字段里面的值就不可以重复了,主键索引和唯一索引类似,但是数据表里的主键索引只能加在一个字段里(一般都加在id上),id是自增的,索引不会有重复的时候出现添加表字段的唯一索引create unique index 索引名 on 表名(字段名)alter table 表名 add unique 索引名(字段名)在创建表的时候也可以进行添加create table t2(id int(10) unsigned auto_increment primary key,name varchar(255), unique 索引名(字段名));删除唯一索引drop index 索引名 on 表名主键索引(primary key)主键索引是关系数据库中最常见的索引类型,主要作用是确定数据表里一条特定的数据记录的位置。我们可以在字段后添加PRIMARY KEY来对字段设置为主键索引。注意:1.最好为每张表指定一个主键,但不是必须指定。2.一个表只能指定一个主键,而且主键的值不能为空3.主键可以有多个候选索引(例如NOT NULL,AUTO_INCREMENT)添加表字段的主键索引alter table 表名 add primary key (字段名)添加自增alter table 表名 modify id int(4) auto_increment删除主键索引如果字段有了auto_increment 和 primary key的时候,需要删除主键的话,先删除自增,然后再删除主键 删除自增alter table 表名 change 字段名 字段名 类名删除主键alter table 表名 drop primary key 全文索引(fulltext)全文索引在MySQL中是一个FULLTEXT类型索引,但FULLTEXT索引只能用于MyISAM表,并且只可以在CHAR、VARCHAR或TEXT类型的列上创建,也允许创建在一个或多个数据列上。添加表字段的全文索引alter table 表名 add fulltext 索引名(字段名)删除全文索引drop index (索引名) on 表名alter table 表名 drop index 索引名注意:如果在创建索引的时候,不添加索引名的话 默认会把字段名当做索引名17.表的存储引擎存储引擎: 是MySQL的一个特性之一,用户可以根据应用的需要选择如何存储MySQL支持MyISAM、InnoDB、HEAP、BOB、ARCHIVE、CSV、MEMORY等多种数据表引擎,在创建一个新MySQL数据表时,可以为它设置一个引擎类型。MyISAM和InnoDB两种表类型最为重要:1.MyISAM数据表类型的特点是成熟、稳定和易于管理。2.MyISAM表类型会产生碎片空间,要经常使用OPTIMIZE TABLE命令去清理表空间3.MyISAM不支持事务处理,InnoDB支持4.MyISAM不支持外键,InnoDB支持5.MyISAM表类型的数据表效率更高6.MyISAM表类型的数据表会产生三个文件---.frm (表结构)---.myd (表数据)---.myi (表索引)InnoDB表类型表默认只会产生两个文件---.frm (表结构)---.ibd (表数据+表索引)7.MyISAM表,其优势就是访问的速度快。对事务没有完整性的要求或以select、insert为主的通常使用MyISAM表8.InnoDB表:会占用更多的磁盘空间锁机制:MyISAM 表锁:开销小,加锁快,发生冲突的概率高。InnoDB 行锁:开销大,加锁慢,发生冲突的概率低。9.默认是InnoDB引擎 数据存储在 innodb_data_home_dir选项所选的文件名的目录里查看默认的引擎show variables like 'default_storage_engine';查看支持的引擎show engines查看当前库里面所有的表引擎show table status from 库名修改表引擎alter table 表名 engine = 新的表引擎ubuntu下//mysql配置文件sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf//重启sudo /etc/init.d/mysqld restart18.表的结构要满足三范式1NF 原子性 字段不可再分,否则就不是关系数据库; 即表的列的具有原子性,不可再分解,即列的信息,不能分解, 只要数据库是关系型数据库(mysql/oracle/db2/informix/sysbase/sql server),就自动的满足1NF。数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。如果实体中的某个属性有多个值时,必须拆分为不同的属性 。通俗理解即一个字段只存储一项信息。2NF 唯一性 要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要我们设计一个主键来实现(这里的主键不包含业务逻辑)。3NF 无冗余性 要求一个数据库表中不包含已在其它表中已包含的非主键字段。就是说,表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放(能尽量外键join就用外键join)。很多时候,我们为了满足第三范式往往会把一张表分成多张表。29.left join、right join、inner join的区别left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只返回两个表中联结字段相等的行举例:left joinselect * from p1 left join p2 on p1.id = p2.id;right joinselect * from p1 right join p2 on p1.id = p2.id;inner joinselect * from p1 inner join p2 on p1.id = p2.id;20.子查询1、单行子查询select name,age,scorefrom userwhere age=(select age from stu where id = 1);2、多行子查询select name,age,class from user where age in (select age from stu where id < 10);select name,age.class from user where age in (select age from stu where name like '王%');21.分组 group by1 查询各个班级中年龄大于20,性别为男的人数、姓名和班级 (数据表: stu) 为了防止班级里面有重名的现象发生(例如 两个男生都是20岁 以上的) 所以会有count(*)select count(*),classid,name from t1 where sex='男' group by classid,age having age > 20; 2 学校评选先进学生,要求平均成绩大于等于90分的学生,并且语文课必须在95分以上,请列出有资格的学生 (数据表: score)select classid,name from sc where (yw+sx+en)/3 >= 90 and yw>=95 group by classid,name;select classid,group_concat(name) from sc where (yw+sx+en)/3>=90 and yw>=95 group by classid;3 用一条sql语句查询出每门课都大于80分的学生姓名 (数据表: courseinfo)select name from courseinfo group by name having min(score) > 80;select DISTINCT name from courseinfo where name not in (select distinct name from courseinfo where score < 80);22.创建视图视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。如果你想创建视图的话 首先你的数据库要有创建视图的权限,不然的话是创建不成功的create view v1 as select * from t1 where id > 1;创建v1的视图 把查询t1表里面的符合条件的数据放到v1里面注意:如果主表不存在 那么视图表失效删除视图表drop view v1;23.mysql内置函数字符串链接 concat('name','id');最大值 max('price')最小值 min('price')平均值 avg('price')定义变量 set @a = 10获取变量的值 select @a计算 select @a + @b; select 10 + 20字符串转换成大写和小写 select ucase('name') select lcase('NAME')计算字符串的长度 select length('namesss') as len;select * from user where length(name) > 5; 名字大于5的长度找出来去除两侧的空白 select trim(' pass ');select length(trim(' over '));随机数 从0-1之间的随机数 select rand();获取0-10之间的随机整数向上取整 select ceil(rand()*10)获取时间戳 select unix_timestamp();24.mysql预处理**设置一个占位符prepare 名字 from "select * from t2 where id > ?";设置变量set @id = 2;执行execute 名字 using @id;**设置多个占位符prepare 名字 from "select * from t2 where id > ? and id < ?";设置变量set @id = 2;set @id1 = 5;执行execute 名字 using @id,$id1;25.mysql存储过程简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能MySQL存储过程的创建创建的格式:CREATE PROCEDURE 过程名 ([过程参数[,...]])[特性 ...]过程体举个例子:**修改结束符mysql-> delimiter //**创建mysql-> create procedure proc() -> begin-> select * from user; ->end// **使用mysql-> call proc()//**修改结束符 mysql-> delimiter ;注意:(1)这里需要注意的是DELIMITER //和DELIMITER ;两句,DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。格式:\d // 把结束符的分号改成 //结束本条sql语句\d 和 delimiter 是一样的 都可以修改mysql的结束符(2)过程体的开始与结束使用BEGIN与END进行标识(3)存储过程根据需要可能会有输入输出参数,输入参数x 类型int型 ,输出参数num 类型是int型,如果有多个参数用","分割开。create procedure lamp172(in x int,out num int)-> begin-> set num = x + 20;-> end//调用 call lamp172(10,@s)//select @s as num//使用循环插入数据create procedure total(num int(10))->begin->set @i = 0;->while @i<num do->insesrt into t1 values (null,'www',20);->set @i = @i+1;->end while;->end//注意 : 写存储过程名字的时候 不要使用关键字 和 数字例如:create procedure 111() 数字错误create procedure add() 关键字错误删除存储名drop procedure if exists 存储名;26.mysql触发器 trigger 在t2表插入数据的同时使用trigger 修改其他表的信息格式: create trigger 名字 after/before insert/update/delete on 表名 for each row begin语句end例如:create trigger tg_1 before insert on t2 for each rowbegininsert into t3(name) values (new.name);end//插入数据insert into t3(name) values ('wwww')//create trigger tg_2 after update on t1 for each rowbeginupdate t2 set t2.name= new.name where t2.id = old.id;end//update t1 set name = 'xxoo' where id = 2//create trigger tg_3 after delete on t1 for each rowbegindelete from t2 where id = old.gid; // old.gid 这里面的gid是t1表与t2表相关的id号end//delete from t1 where gid = 2// gid=2 ====> old.gid//查看触发器show triggers;//删除触发器drop trigger 名字;27.mysql 读写锁 读锁: 所有的终端都可以读取数据 但是不能操作数据(增 删 改)lock table t2 read解锁unlock tables;写锁: 当前的终端对表进行写锁之后,代表本终端可以进行读写操作,但别的终端不可以进行读写操作lock table t2 write; 解锁unlock tables;28.mysql表数据的备份与恢复操作 使用SQL语句备份和恢复你可以使用SELECT INTO OUTFILE语句备份数据,并用LOAD DATA INFILE语句恢复数据。 这种方法只能导出数据的内容,不包括表的结构,如果表的结构文件损坏,你必须要先恢复原来的表的结构。格式:备份操作SELECT * INTO {OUTFILE | DUMPFILE} 'file_name' FROM tbl_name恢复操作LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE tbl_name举例:导出select * from t2 into outfile '../lamp185.txt'; //相对于mysql.exe文件的路径 清空truncate table t2;导入load data infile '../lamp185.txt' into table t2; 29.增量备份一种mysql操作记录的备份(1)操作修改配置文件my.ini[mysqld]log-bin=c:/mysql/mysql-log #(这里是备份文件存放的位置) 文件夹要存在才行expire_logs_days=7 # binlog过期清理时间 单位为天binlog_format = MIXED #binlog日志格式(2)查看可以使用mysql的命令进行查看增量备份中的内容mysqlbinlog c:/mysql/mysql-log.000001(3)数据恢复通过时间: mysqlbinlog --stop-datetime="2016-10-10 10:20:30" c:/mysql/mysql-log.000001 | mysql -uroot -p通过位置: mysqlbinlog --stop-position="150" c:/mysql/mysql-log.000001 | mysql -uroot -p#171208 15:50:06 server id 1 end_log_pos 2227 CRC32 0x7ff79ffa这里面的171208 15:50:06 时间是上面的datetime的时间这里面的end_log_pos 2227 是上面 position="150"(4)重新记录增量备份reset master 在mysql命令行中进行输入30.查询处理语句分析 explain指令格式:explain select * from usertype 类型快慢顺序system> const >eq_ref > ref > fulltext >ref_or_null >index_merge > unique_subquery > index_subquery > range>index > allconst:表中满足条件的记录最多一条,通常会出现在主键和unique索引中explain select * from test where id=1explain select * from test_2 where name = 'zhangsan'eq_ref:对于每个来自于前面的表的行组合,从该表中读取一行。这可能是最好的联接类型,除了const类型。它用在一个索引的所有部分被联接使用并且索引是unique或primary keyexplain select type.name,typechild.childname from type,typechild where type.id = typechild.pid;ref:使用普通索引进行查询explain select * from test where name = 'abc';ref_or_null:通过普通索引检索,并且会检索null值explain select * from test_2 where nickname = 'zhangsan' or nickname = null;range :当查询范围的时候explain select * from test where id < 3;或explain select * from test where id in (1,2,3);或explain select * from test where id between 1 and 3;index:跟all一样,不过只会扫描索引explain select id from test;all:全表扫描explain select * from test注意:查询一定或者尽量不要出现all类型(全表扫描,速度是最慢的)key(代表的是搜索时使用到的索引名)31.开启慢查询记录需要进行配置 在mysql中的my.ini中进行设置slow-query-log = 1 # 开启慢查询操作slow-query-log-file = slow.log # 文件默认存放在mysql的data目录下 (文件名自定义)long-query-time = 1 # 超时时间定为1秒 如果执行的sql语句超过1秒钟就把语句存放到slow.log文件中 (不能使用小数)# 菜鸟教程.链接python的一个网站: www.runoob.com

  

转载于:https://www.cnblogs.com/w-zc/p/8029115.html

总结

以上是生活随笔为你收集整理的Mysql的操作应用的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。