sql
文章平均质量分 69
sql基本问题汇总
用数据说话
这个作者很懒,什么都没留下…
展开
-
回表
因为主键索引树的叶子节点直接就是我们要查询的整行数据了。而非主键索引的叶子节点是主键的值,查到主键的值以后,还需要再通过主键的值再进行一次查询。面试官:刚刚你提到主键索引查询只会查一次,而非主键索引需要回表查询多次。(后来我才知道,原来这个过程叫做回表)是所有情况都是这样的吗?非主键索引一定会查询多次吗?我:(额、这个问题我回答的不好,后来我自己查资料才知道,通过覆盖索引也可以只查询一次)科...原创 2019-08-28 17:03:35 · 16406 阅读 · 3 评论 -
mysql存储过程及常见问题
需求:当月最购买的秤数量分析:表里要有两个字段,日期(YYYY-MM)、秤数量;从相关表中获取这两个字段,设置时间;建立事件,调用存储过程1.建表drop table `rate_a`create table `rate_a`(`id` int(11) not null auto_increment,`date_a` date,`num_a` int(11) default "0...原创 2019-10-24 17:29:27 · 1393 阅读 · 1 评论 -
mysql 求中位数、四分位数
create table student_t (id varchar(32) primary key,value int);insert into student_t (id,value)values (‘A’,40),(‘B’,50),(‘C’,60),(‘D’,70),(‘E’,80),(‘F’,90);SELECTgroup_concat( id ),avg( VA...原创 2019-08-28 19:51:41 · 14418 阅读 · 5 评论 -
mysql 主键id不连续的解决办法
mysql解决删除(或同步)数据后,主键不连续问题1.去掉id的主键,自动递增(在navicate可用鼠标点击操作)2.增加一列idd作为主键,设置为自动递增3.-- 若让 第一行从id=1开始(否则自行改变i的初始值)SET @i=0;UPDATE table_name SET `id`=(@i:=@i+1);注意:主键id只针对int类型,bigint不可以使用。但是可以先将字...原创 2019-08-30 19:10:49 · 5516 阅读 · 1 评论 -
sql null和(‘ ‘)和(‘‘)的区别
https://www.zhihu.com/collection/141177027?page=2原创 2023-04-20 17:37:36 · 11647 阅读 · 0 评论 -
性能对比:Count(字段)、Count(主键)、Count(1)、Count(*)
以下讨论是基于InnoDB引擎。至于分析性能差别的时候,可以记住以下几个原则:1.server层要什么就给什么;2.InnoDB只给必要的值3.现在的优化器只优化了count(*)的语义为“取行数”,其它“显而易见”的优化并没有做。接下来,我们一个个来进行分析。对于count(主键id)来说,InnoDB引擎会遍历整张表,把每一行的id值都取出来,返回给server层。server层拿到...转载 2019-08-30 18:12:50 · 335 阅读 · 1 评论 -
mysql 组内排序
问题:对每门课程 的分数由高到低进行排序首先我们看表sid为学生id,cid为课程id,分数为score我们先对其进行全表排序SELECT@rank := @rank + 1 AS row_num , a.*FROM sc AS a INNER JOIN ( SELECT @rank := 0 ) AS b ON 1 =1理解了上面的,然后进行 分组,并进行组内排序...原创 2019-09-18 12:41:00 · 2166 阅读 · 1 评论 -
case...when...
max(case time_status when ‘10’ then testcount else 0 end) 'testcount1原创 2019-08-30 15:50:28 · 1638 阅读 · 1 评论 -
SQL50道练习
create table Student(sid varchar(10),sname varchar(10),sage datetime,ssex nvarchar(10),PRIMARY key (sid)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;insert into Student values(‘01’ ...原创 2019-08-11 11:42:40 · 171 阅读 · 0 评论 -
SQL几种删除方式区别 drop、delete、truncate
复制表https://www.runoob.com/mysql/mysql-clone-tables.htmlReference:https://www.jianshu.com/p/15023d3d76eahttps://www.cnblogs.com/pingzhe/p/8126529.html原创 2019-09-03 19:19:28 · 1240 阅读 · 1 评论 -
mysql事件
1.事件简介事件自Mysql5.1起开始被支持,它通过服务器中的 事件调度器 模块进行监视,并判断其是否需要被调用。事情调度器可以在指定的时刻执行特定的任务,从而实现系统的自动化操作,而这些特定的任务就是事件,这些特定的任务通常是一些确定的SQL语句目前,Mysql的事件调度器可以精确到每秒钟执行一个任务1.1事件与触发器的异同相同点:两者都是在某些事情发生的时候启动不同点:事件...原创 2019-08-11 13:45:08 · 840 阅读 · 0 评论 -
一份非常完整的 MySQL 规范
一、数据库命令规范所有数据库对象名称必须使用小写字母并用下划线分割所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)数据库对象的命名要能做到见名识意,并且最后不要超过32个字符临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关...转载 2019-08-27 22:17:00 · 181 阅读 · 0 评论 -
统计今天 昨天 7天前 一个月前 上个季度等的数据
select now() -- 当前的日期时间 select TO_DAYS(now()) -- 返回从0年开始到当前时间的总天数select date(now()) -- 返回当前日期 等价于 select curdate();今天select * from 表名 where to_days(时间字段名) = to_days(now()); select * fro...原创 2019-08-11 13:44:13 · 477 阅读 · 0 评论 -
mysql常见问题汇总
只备份值我用的是oralce 数据库。在每次手动对数据库表作CRUD时,备份一下表数据,防止误操作。以下是SQL语句create table T_BAK(备份表名) as select * from T(原表)注意备份的 T_BAK 主键以及外键关系均不会保留。备份表结构及 索引如何选择服务器的类型?Development Machine(开发机器):该选项代表典型个人用桌面工作站。假...原创 2019-08-11 14:04:02 · 189 阅读 · 0 评论 -
sql 执行顺序
sql执行顺序问题每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入这些虚拟表对调用者(客户端应用程序或者外部查询)不可用只是最后一步生成的表才会返回给调用如果没有在查询中指定某一子句,将跳过相应的步骤(8)SELECT (9)DISTINCT (11)<Top Num> <select list>(1)FROM [left_table](3)<...原创 2019-08-30 16:17:29 · 753 阅读 · 1 评论 -
SQL-查询学生全为男生的老师为哪些
举个例子:有个教师表,有两个列 id 和 教师名字; 有个学生表,有三列:姓名, 性别和教师id, 现在要查询学生全为男生的教师有哪些? (一条sql)select a.* from 教师表 a join 学生表 b on a.教师id=b.教师idwhere count(1)==sum(case b.性别 when ‘男’ then 1 else 0 end )...原创 2019-10-24 21:26:19 · 643 阅读 · 1 评论 -
odps sql 窗口函数基础
窗口函数是一个查询利器,平时遇到棘手的问题,90%能够用窗口函数解决。本篇内容主要介绍比较常用的窗口函数,看完这篇文章,基本能够解决大部分查询问题本篇主要内容如下本篇采用的数据集是 titanic的train.csv数据,截取前几行如下:1.排序函数题目:不同性别下 年龄最大的人SELECT sex ,age ,ROW_NUMBER()OVER(...原创 2020-04-05 22:33:56 · 3459 阅读 · 0 评论 -
odps sql 常用正则表达式
select regexp_substr(‘12.12元/小时’, ‘\d*(\d*.\d*)?’) from dual;select regexp_substr(‘mint choc中文11国1’,’\d+’);select regexp_substr(‘CYJ8-ABC’,’[0-9]+’) from dual;select REGEXP_SUBSTR(ext3,"1*")from ...原创 2020-04-18 18:59:29 · 10310 阅读 · 0 评论 -
mysql实现行列转换
首先建一个分数表,sid 学生id,cid课程id,score课程分数CREATE TABLE `sc` ( `sid` varchar(10) NOT NULL DEFAULT '', `cid` varchar(10) DEFAULT NULL, `score` decimal(18,1) DEFAULT NULL, KEY `sid` (`sid`)) ENGINE=I...原创 2019-10-31 18:28:58 · 432 阅读 · 0 评论 -
odps sql 日期函数处理
select to_char(‘2019-12-21 07:05:26’,‘yyyymmdd hhmm’)select to_char(‘2019-12-21 07:05:26’,‘yyyymmdd hhmi’)odps 删除某列用新的表付覆盖CREATE TABLE temp_DEVICE_STATUS_FRONT_APP_1_delete_column ASSELECT did...原创 2020-04-06 20:58:36 · 26637 阅读 · 2 评论 -
odps sql 删除、更新、插入数据
ODPS不支持直接通过delete语句删除数据。对于非分区表通过“TRUNCATE TABLE table_name;”语句清空表数据,也可以用覆盖写的功能实现类似的功能。如要删除TableA表里的Col=1的数据,使用如下命令即可INSERT OVERWRITE TABLE TableA SELECT FROM TableA WHERE Col <> 1;要删除全部数据,类...原创 2020-04-06 22:14:23 · 15451 阅读 · 1 评论 -
odps sql 字符处理函数
截取某段特定的数字安卓9.0安卓8.1安卓7.1.1安卓6.0安卓5.1安卓5.0安卓4.4w安卓4.0.3安卓4.0安卓3.0安卓3.0以下取出里面的数字SELECT CAST(notes AS BIGINT )FROM tb_android_api_version;...原创 2020-04-06 18:06:39 · 14242 阅读 · 0 评论 -
DATE、DATE_FORMAT及常用时间比较
cvsdv原创 2019-07-17 20:56:46 · 3915 阅读 · 1 评论 -
date_add和date_sub
mysql中内置函数date_add 和 date_sub能对指定的时间进行增加或减少一个指定的时间间隔,语法如下:DATE_ADD(date,INTERVAL expr type)SELECT DATE_add(NOW(),INTERVAL -7 DAY);//获取7天前的日期SELECT DATE_add(NOW(),INTERVAL 7 DAY);//获取7天后的日期-- ...原创 2019-07-18 11:05:11 · 6526 阅读 · 0 评论 -
SQL必知必会2
在1中我们主要讲了在单个表上的查询,而在2中我们将会扩展到多个表中,以适应更广泛的作业11.使用子查询11.1子查询(subquery)即嵌套在其他查询中是查询11.2利用子查询进行过滤SELECT order_numFROM orderitemsWHERE prod_id='RGAN=01'SELECT cust_idFROM ordersWHE...原创 2018-02-28 23:06:14 · 387 阅读 · 1 评论 -
union和union all
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。u...转载 2019-07-18 11:02:47 · 301 阅读 · 0 评论 -
datediff,period_diff,timestampdiff
date()-- 返回当前日期(年-月-日)DATEDIFF() 函数返回两个日期之间的天数。DATEDIFF(date1,date2)date1 和 date2 参数是合法的日期或日期/时间表达式。注释:只有值的日期部分参与计算,具体的时间不参与计算SELECT DATEDIFF('2008-11-30','2008-11-29') AS DiffDate----->1SE...原创 2019-07-17 16:22:39 · 4310 阅读 · 0 评论 -
mysql高级语法
https://study.163.com/course/courseLearn.htm?courseId=1005821015#/learn/video?lessonId=1053147117&courseId=1005821015内连接应用列出客户信息和订单日期,并按订单日期排序 from_unixtime()select u.user_id,u.user_name,u.ea...原创 2019-07-16 22:50:07 · 681 阅读 · 0 评论 -
mysql入门语法
1.全查: select表示查询 * 表示查询全部字段 from 表示来自哪一张表2.查询某一个字段的值(不是全查) select 字段 from 表名3.查询多个字段的值 select 字段1,字段2,... from 表名 注意:要查询的字段与字段之间用英文逗号(,)隔开。4.条件查询 select * from 表名 where 条件 Where 表示条件(条件关...原创 2019-07-15 20:20:08 · 132 阅读 · 0 评论 -
SQL必知必会1
1.了解SQL1.1数据库 基础1.1.1数据库database保存有组织的数据的容器,通常是一个文件或者一组文件 DBMS数据库管理系统,即我们常说的数据库管理软件,数据库是DBMS创建和操纵的容器。1.1.2表table某种特定类型数据的结构化清单(储存在表中的数据是同一种类型的数据或清单) 模式(schema):用来描述数据库中特定的表,也可以用来描述整个...原创 2018-02-28 22:51:17 · 551 阅读 · 1 评论 -
解析json(get_json_object)
https://blog.csdn.net/qq_34105362/article/details/80454697转载 2021-05-29 23:26:45 · 439 阅读 · 0 评论