
mysql
bang152101
这个作者很懒,什么都没留下…
展开
-
MySQL中count(字段) ,count(主键 id) ,count(1)和count(*)的区别
注:下面的讨论和结论是基于 InnoDB 引擎的。首先要弄清楚 count() 的语义。count() 是一个聚合函数,对于返回的结果集,一行行地判断,如果 count 函数的参数不是 NULL,累计值就加 1,否则不加。最后返回累计值。所以,count(*)、count(1)和count(主键 id) 都表示返回满足条件的结果集的总行数;而 count(字段),则表示返回满足条件的数据行里面,参数“字段”不为 NULL 的总个数。至于分析性能差别的时候,记住这么几个原则: server转载 2020-09-18 17:34:08 · 584 阅读 · 0 评论 -
mysql 求第二高的薪水
题目描述:编写一个 SQL 查询,获取 Employee表中第二高的薪水(Salary)。+----+--------+| Id | Salary |+----+--------+| 1 | 100 || 2 | 200 || 3 | 300 |+----+--------+例如上述Employee表,SQL查询应该返回200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。+---------------------+|...原创 2020-09-15 10:27:16 · 199 阅读 · 0 评论 -
mysql:名次排名 (并列与不并列)
说明做后台的难免与sql接触,到目前为止搞过的sql大致都是一些简单的sql语句构造,在这里准备把自己在写sql时遇到的一些比较少见的用法记录一下。 又学习了一些之前一直没搞清的: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 正文mysql用户最近自己安装了一个mysql,需要配置上和测试转载 2020-09-14 17:29:24 · 1628 阅读 · 0 评论 -
mysql 查询获取排名的方法
需求:获取分类平均值的名次? 比如10个班级的平均分,按照班级名称排序,后面跟着名次。记录表:student ;字段:banji 班级;AvgS 平均分;pm 排名;解决方法:SELECT class, AVG(score) AS avgs FROM student GROUP BY class ORDER BY avgs DESC;SELECT A.*, @rank:=@rank+1 AS pm FROM (SELECT class, AVG(score) AS avgs FROM s.转载 2020-09-14 17:28:16 · 5143 阅读 · 1 评论 -
mysql alter add一列、drop一列、change列名
如果想在一个已经建好的表中添加一列,可以用以下代码:alter table 表名 add column 列名 varchar(20) not null;这条语句会向已有的表中加入一列,这一列在表的最后一列位置。如果我们希望添加在指定的一列,可以用:alter table 表名 add column 列名 varchar(20) not null after user1;注意,上面这个命令的意思是说添加addr列到user1这一列后面。如果想添加到第一列的话,可以用:alter tabl.原创 2020-09-14 16:41:28 · 685 阅读 · 0 评论 -
mysql id自增长
mysql 修改id为自增: alter table 表名 modify column 列名 类型 not null auto_increment ; 例: alter table classmodify column id int(100) not null auto_increment;mysql 把id自增去掉:alter table 表名 modify column 列名 类型 not null ; 例:alter table classmodify colum...原创 2020-09-14 16:29:59 · 245 阅读 · 0 评论 -
mysql 常用语句
limit和offset用法mysql里分页一般用limit来实现1. select* from article LIMIT 1,32.select * from article LIMIT 3 OFFSET 1上面两种写法都表示取2,3,4三条条数据当limit后面跟两个参数的时候,第一个数表示要跳过的数量,后一位表示要取的数量,例如select* from article LIMIT 1,3 就是跳过1条数据,从第2条数据开始取,取3条数据,也就是取2,3,4三条数据当.原创 2020-09-14 16:17:29 · 272 阅读 · 0 评论 -
mysql中in的用法
in常用于where表达式中,其作用是查询某个范围内的数据。用法:select * from where fieldin(value1,value2,value3,…)示例:查询book表中id为2和4的所有数据:有book数据表,内容如下:查询语句和查询结果见如下图示:PS: not in与in作用相反,用法和示例如下:用法:select * from where fieldnot in(value1,value2,value3,…)。not in 示例:...转载 2020-09-14 16:16:29 · 744 阅读 · 0 评论 -
MYSQL 连表查询及别名用法
MYSQL连表查询是两个表之间的查询或者更多表之间查询,通过外键的方式查询所有的数据,在查询过程中产生字段的重复,为了区分这种情况数据库设计别名,有的表很长,也可以用别名。1,连表查询 INNER JOIN ,LEFT JOIN,RIGHT JOININNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有转载 2020-09-14 16:15:44 · 1958 阅读 · 0 评论 -
MySQL 笔记(三)round函数、百分比显示并加百分号
最近发现一个SQL学习网站,感觉很实用,对于零基础的初学者来说很好用,练习题很多,很实用,推荐给大家学习网站sqlzoo:http://zh.sqlzoo.net/在做数据提取时,经常会遇到数据所占百分比的问题,在SQL中有专门的语句可以实现。语法:selectconcat(round(值A/值B*100,m),'%')round函数返回数字表达式并四舍五入为指定的长度或精度。ROUND的格式:ROUND(p1,p2,p3),其作用是取四舍四入值P1:要被四舍五入的数字P2..转载 2020-09-14 16:14:21 · 3444 阅读 · 0 评论 -
mysql having和where的区别
having的用法having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前。而 having子句在聚合后对组记录进行筛选。实例:select id, country, count(*) as t from websites group by country having t > 1;用的对象不同。WHERE 子句作用于表和视图,HAVING 子句作用于组。WHERE 在分组和聚集计算之前选取输入行.原创 2020-08-27 15:18:12 · 152 阅读 · 0 评论 -
SQL中 and or in的用法
1 .SQLIN运算符IN运算符允许您在WHERE子句中指定多个值。IN运算符是多个OR条件的简写。SELECT "栏位名"FROM "表格名"WHERE "栏位名" IN('值一', '值二', ...)假设我们有两个表格:tb_Teachers_infotb_City_info然而我们要在tb_Teachers_info中找出所有来自American的教师姓名SQL语句:selectTeachersNamefromtb_Teache...转载 2020-08-26 17:49:16 · 2265 阅读 · 0 评论 -
MySQL实现类似窗口函数(rank)的排名
需求:学生表如下,按分数排序,且需要相同成绩的具有相同的排名,输出排名,根据大牛的提供的排名方法,自己做了进一步扩充,实现如下:SELECT tmp.id, tmp.name, tmp.sex, tmp.age, tmp.score, tmp.class, -- 顺序一直在变大 @j:=@j+1 as j, -- 只有在前后二次排序值不同时才会使用顺序号 @k:=(case WHEN @pre_score=tmp.score THEN @k ELSE @j END) as ran原创 2020-08-26 14:18:38 · 883 阅读 · 0 评论 -
MySQL (@i:=@i+1) 增加序号
1、单表查询SELECT (@i:=@i+1) AS ranking, t.* FROM student t, (select @i:=0) AS j;(@i:=@i+1)代表定义一个变量,每次叠加1;(SELECT @i:=0) AS j 代表建立一个临时表,j是随便取的表名,但别名一定要的。2、按年龄排序SELECT (@i:=@i+1), p.* FROM (SELECT t2.name, t2.sex, t2.age, t2.score, t2.class FROM stud原创 2020-08-26 13:51:53 · 662 阅读 · 0 评论 -
mysql limit和offset用法
imit和offset用法mysql里分页一般用limit来实现1. select* from test_tableLIMIT 1,32.select * from test_table LIMIT 3 OFFSET 1上面两种写法都表示取2,3,4三条条数据当limit后面跟两个参数的时候,第一个数表示要跳过的数量,后一位表示要取的数量,例如select* from test_table LIMIT 1,3 就是跳过1条数据,从第2条数据开始取,取3条数据,也就是取2,3,4...原创 2020-08-25 15:57:36 · 324 阅读 · 0 评论 -
MySQL 开启慢查询日志
开启mysql的慢查询日志,可以记录查询超过指定时间的sql语句,可以方便更好的优化数据库系统的性能。一、参数说明slow_query_log: 慢查询日志开启状态slow_query_log_file: 慢查询日志存放位置long_query_time: 查询超过多少秒才记录二、设置步骤1、查询相关参数配置mysql> show variables like 'slow_query%';+---------------------+-----------------...原创 2020-06-24 17:28:36 · 264 阅读 · 1 评论 -
mysql模糊匹配like及批量替换replace
1、mysql 模糊匹配 like 与 not like 用法 :SELECT*FROM`users`where`nicknames`LIKE'%2323%'SELECT*FROM`users`where`nicknames` not LIKE'%123213%'2、mysql 批量替换replace函数用法 :替换某个字段,replace可以替换某个字段中的指定的某个部分,replace(column_name,oldregexstr,n...原创 2020-06-24 17:16:18 · 1833 阅读 · 0 评论