1-DQL(数据查询语言)

基础查询:select 查询列表 from 表名;
查询列表可以是表中字段,常量值,表达式,函数
取别名:as(可省略)
去重:查询字段名前加distinct
+的作用:加法,有字符串试图转换,转换不了直接为0,有null结果为null
concat(str1,str2…)拼接字符串,有null则全部为null
ifnull(可能为空字段,为空时值) null字段操作

条件查询:select 查询列表 from 表名 where 筛选条件
条件运算符:> < = != <> >= <=
逻辑表达式:&& || ! and or not
模糊查询:like, between and , in , is null, is not null
like:%包含任意字符;_包含一个字符;查询下划线用转义,escape “$”自定义转义符
between and:等价于>=… and <=… 语句简洁,包含临界值,范围数值不能颠倒
in:某字段值是否属于in列表某项,列表项值类型兼容,比or简洁
is null is not null
安全等于:<=> 可判空或其他数值: <=> null 等于空 ;可读性差;

排序查询:筛选条件后order by desc降序 asc升序(默认)
相同值排序乱序解决:加入唯一性字段排序,例如id
支持按别名、按函数、按多字段
一般放于最后(limit子句除外)

常见函数:
length(字节个数):中文gbk一个汉字占两个字节,utf8占三个字节
upper() lower()大小写转化
substr(字段,索引位置截取) 索引从1开始 同substring()
substr(字段,指定索引位置,字符长度)
instr(给定字段,查询字段) 查出需要查询字段的起始索引,查不出为0
trim(指定内容 from 给定字段) 去除给定字段前后指定内容
lpad(给定字段,填充后总长度,填充内容) 左填充
rpad(给定字段,填充后总长度,填充内容) 右填充
replace(给定字段,需要替换的内容,替换成的内容)

数学函数:
round(数字) 四舍五入
round(数字,小数点后取位数) 四舍五入
ceil(数字) 向上取整,返回>=该数字的最小整数
floor(数字) 向下取整,返回<=该数字的最大整数
truncate(数字,截断小数点后几位)
mod(被除数,除数) 取模 符号同被除数

日期函数
#返回日期日期比较大小,>0 DATE1大,<0 +++DATE2大
DATEDIFF(DATE1,DATE2);
#返回当前系统年月日时分秒
SELECT NOW();
#时间戳,适用于datetime
SELECT CURRENT_TIMESTAMP();

返回年月日

SELECT CURDATE();
SELECT CURRENT_DATE();

返回时分秒

SELECT CURTIME();
SELECT CURRENT_TIME();

SELECT YEAR(NOW());

年加今年第几周

SELECT YEARWEEK(NOW());

年加?

SELECT YEARWEEK(NOW(),2);

SELECT MONTH(NOW());

英文几月

SELECT MONTHNAME(NOW());

SELECT DAY(NOW());
SELECT DATEDIFF('2018-5-2','2018-4-22'); 前面日期减后面日期的天数

星期几

SELECT DAYNAME(NOW());

本月第几天

SELECT DAYOFMONTH('2017-9-4');

1-7:星期天到周六

SELECT DAYOFWEEK(NOW());

今年第几天

SELECT DAYOFYEAR(NOW());

日期格式化:都转化为1990-3-23

SELECT STR_TO_DATE('1990-3/23','%Y-%c/%d');

日期转化为指定字符串

SELECT DATE_FORMAT(NOW(),'%Y年%c月%d日');
其他函数:
SELECT VERSION();
SELECT DATABASE();
SELECT USER();

流程控制函数:
#同三元运算符
SELECT IF(10>11,'大','小');

#case:

一、同switch case
SELECT CASE 'ok'
WHEN 'o' THEN 'o'
WHEN 'o1' THEN 'o1'
WHEN 'o2' THEN 'o2'
ELSE 'ok1'
END AS result;
二、多重if
SELECT CASE
WHEN 1>2 THEN '1>2'
WHEN 2>2 THEN '2>2'
WHEN 3>2 THEN '3>2'
END AS result;

分组函数:用作统计,叫做聚合函数、统计函数、组函数(可distinct去重使用)
sum 求和、avg 平均值、max 最大值、min 最小值、count 计数
sum、avg 支持数值型,忽略null
max、min 支持数值、字符、日期,忽略null
count 计算非空字段行数,忽略null,count(*)(效率较高)、count(1)统计总行数
和分组查询一起查询的字段都是group by 后的字段

分组查询
select 分组函数 from 表 where 筛选条件 group by 分组的字段 order by 子句
分组函数做条件则使用having在group by 之后
分组前筛选效率好即用where
支持按表达式或函数分组(用地少)
按多个字段分组
Oracle不支持group by having

连接查询:多表查询
笛卡尔乘积表一m行,表二n行,结果m*n行
原因:没有有效连接条件
避免:添加有效的连接条件
标准分类
年代分类:
Sql92标准:仅支持内连接
Sql99标准【推荐】:支持所有内连接、外连接(左、右)、交叉连接

92标准:
功能分类:
内连接:
等值连接:结果为多表交集部分,n表连接至少有n-1个,多表顺序随意,可搭配排序分组筛选使用
注意:为表起别名(查询也要用别名(视图))
非等值连接:A表值between B表值1 and B表值2
自连接:同表起别名

99标准:
一、内连接:同上
特点:1、表的顺序可以互换
2、结果为表的连接交集
3、n表连接需要n-1给个连接条件

二、外连接:

特点:1、查询结果为主表中所有行,从表匹配的行或者null
2、left jion左边为主表,right jion 右边为主表,full join两边都是主表
左外连接:select 查询列表 from 表1 as别名 【连接类型】
jion表2 as别名
on 连接条件
where 筛选条件
右外连接:类似左外连接

全外连接:表1有表2没有,表2有表1没有,表1表2都有
mysql暂不支持

三、交叉连接:两表全查
select 表1.,表2. from 表1 cross jion 表2

子查询:查询字表为查询条件
where或having后面:1、标量子查询(结果集只有一行一列)
2、列子查询(多行子查询)
in /not in :在什么范围中的值
any/some:任意一个值
all:所有的值
select 后面(多用):
from后面:查询结果做结果集表,必须起别名
(not)exists后面:子查询有没有值,有为1,否则为0,可用in代替
分页查询:
limit offset,size
offset:起始位置,可省略默认值为0;(page-1)*size
size:查询数量

union联合查询
特点:查询的表没有连接关系但是查询信息(列数、列的类型和顺序)一致,自动去重,不去重用union all查询
查询语句1
union
查询语句2
union
……

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,492评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,048评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,927评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,293评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,309评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,024评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,638评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,546评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,073评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,188评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,321评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,998评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,678评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,186评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,303评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,663评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,330评论 2 358

推荐阅读更多精彩内容

  • SQL SELECT 语句 一、查询SQL SELECT 语法 (1)SELECT 列名称 FROM 表名称 (2...
    有钱且幸福阅读 5,457评论 0 33
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,820评论 5 116
  • SCRIPT I arrive at the conference room right before the m...
    羽纶阅读 347评论 0 0
  • 梦殇独悲阅读 49评论 0 1
  • 骑天大胜 田启瑞 焦点少年班坚持分享第151天 星期六 2017年12月23 神秘的埃及 埃及是一个古老还有神奇的...
    骑天大胜阅读 231评论 0 0