SQL基本语法入门教程
创作时间:
作者:
@小白创作中心
SQL基本语法入门教程
引用
CSDN
1.
https://blog.csdn.net/weixin_39982225/article/details/139454418
SQL语言基本特点
- 不区分大小写
- 分号";"表示语句结束,换行符不断句
数据查询(按执行顺序排列)
基本格式:
SELECT DISTINCT column_1, Function(column_or_expression), column2 AS c2
FROM my_table
JOIN another_table
ON my_table.key1 = another_table.key2
WHERE condition1
GROUP BY column_3
HAVING group_condition1
ORDER BY column_4 ASC/DESC
LIMIT m OFFSET n
1. From & Join
说明查询数据来源:可以单表查询,也可以多表查询,多表之间需要有主键将表格相连。
- From 或 Join 会第一个执行,确定一个整体的数据范围。如果要join不同表,可能会生成一个临时表来用于下面的过程。总之第一步可以简单理解为确定一个数据源表(含临时表)。
-- 单表查询:
FROM single_table
-- 多表查询:
-- 合并在两个表中key1和key2都有的部分
FROM table1 INNER JOIN table2 ON table1.key1 = table2.key2
-- right join 以右边table2为主,保留table2所有数据,key1超出key2范围的丢掉不要,key2有key1缺失的补为NULL
FROM table1 RIGHT JOIN table2 ON table1.key1 = table2.key2
-- left join 以左边table1为主,保留table1所有数据,key2超出key1范围的丢掉不要,key1有key2缺失的补为NULL
FROM table1 LEFT JOIN table2 ON table1.key1 = table2.key2
-- Full join 全链接,仅Key1有的则Key2为Full,仅Key2有的则Key1为Full,保留所有数据
FROM table1 FULL JOIN table2 ON table1.key1 = table2.key2
2. Where
说明查询条件(只能用于group by之前),多个条件用and或or链接。
- 确定了数据来源 Where 语句就将在这个数据源中按要求进行数据筛选,并丢弃不符合要求的数据行,所有的筛选Column属性只能来自From圈定的表。
- As别名还不能在这个阶段使用,因为可能别名是一个还没执行的表达式。
常用数值条件语法:
col_num != 4 #基础比较 =, !=; <, <=; >, >=;
col_num BETWEEN 0 AND 100 #两数之间
col_num NOT BETWEEN 0 AND 100 #不在两数之间,在值域外
col_num IN (2,4,6) # 在数组内
col_num NOT IN (2,4,6) # 不在数组内
col_num % 2 = 0 # 偶数
col_num %2 # 奇数
col_num %2 =1 # 奇数
常用字符串比较语法:
col_str = "abc"
col_str != "abc"
col_str LIKE "abc" #没有通配符时,“like” 和 “=” 作用相同
col_str LIKE "%abc%"# %是通配符,表示任意字符。"abc%"表示abc开头的任意字符,"%abc"表示abc结尾的任意字符, 长度无限制。
col_str LIKE "abc_" # "_"表示一个任意字符。"abc_"会匹配到abcd,不会匹配到abc
col_str IN ("A", "B", "C")
col_str NOT IN ("A", "B", "C")
3. Group by
对之前的数据进行分组,统计等,并将结果集缩小为分组数。这意味着其他的数据在分组后会丢弃。
- Group by 可以同时按照多个变量分组
例:原数据表
按1个变量分组:
SELECT role, COUNT(*) AS count, building IS NOT NULL AS bn FROM employees
GROUP BY role
按2个变量分组:
SELECT role, COUNT(*) AS count, building IS NOT NULL AS bn FROM employees
GROUP BY role, bn
4. Having
如果用了Group by分组, Having会在分组完成后对结果集再次筛选。
- As别名也不能在这个阶段使用.
5. Select
确定结果之后,Select用来对结果Column简单筛选或计算,决定输出什么数据.
- 表示表格内所有列变量,也可以单独筛选某个变量
SELECT * #查询所有列
SELECT column_1, column_2, column_3 #选择指定列变量
#Function: 注意不同sql平台的function有所差异
COUNT(*) #样本总量计数
6. Distinct
如果数据行有重复Distinct将负责排重.
7. Order by
在结果集确定的情况下,Order by对结果做排序,asc正排从小到大,desc倒排从大到小。
- 因为Select中的表达式已经执行,此时可以用AS别名.
8. Limit/ Offset
最后 Limit和 Offset从排序的结果中截取部分数据.
- 常和Order By 语句一起使用,当对整个结果集排序之后,可以用 Limit 指定只返回多少行结果 ,用 Offset 指定从哪一行开始返回。
功能公式
1. 字符处理
LENGTH(str) #返回字符串str长度
LOCATE(substr,str) #返回子串substr在字符串str第一次出现的位置
LTRIM(str) #移除字符串str左边的空格
RTRIM(str) #移除字符串str右边的空格
TRIM(str) #移除字符串str左右两边的空格
LEFT(str,n) #返回字符串str最左边的n个字符
RIGHT(str,n) #返回字符串str最右边的n个字符
UPPER(str) #小写转化为大写
2. 时间处理
ADDDATE() #增加一个日期,天、周等
ADDTIME() #增加一个时间,天、周等
CURDATE() #返回当前日期
CURTIME() #返回当前时间
DATE() #返回日期时间的日期部分
DATEDIFF() #计算两个日期之差
DATE_ADD() #高度灵活的日期运算函数
DATE_FORMAT() #返回一个格式化的日期或时间串
DAY() #返回一个日期的天数部分
DAYOFWEEK() #返回一个日期对应的星期几
HOUR() #返回一个时间的小时部分
MINUTE() #返回一个时间的分钟部分
MONTH() #返回一个日期的月份部分
NOW() #返回当前日期和时间
SECOND() #返回一个时间的秒部分
TIME() #返回一个日期时间的时间部分
YEAR() #返回一个日期的年份部分
3. 统计计算
AVG() #求均值
MAX() #求最大值
MIN() #求最小值
SUM() #求和
COUNT() #统计个数
ABS() #求绝对值
热门推荐
《地铁逃生》画质优化秘籍,让你秒变高手!
糖尿病患者的每日营养需求:专家建议与实用指南
度量中国:从“尺”的演变看古代科技发展
普吉岛查龙寺穿衣指南:避开尴尬瞬间
儒家养生:仁者寿的秘密
碘缺乏病可致智力发育障碍,专家:食用碘盐是最佳预防方式
总胆固醇2.83-5.20mmol/L是安全范围,六招控制预防心血管病
系统综述:LipiFlow治疗干眼症,2101例临床数据证实安全有效
海龟汤游戏火爆社交圈,揭秘背后的文化密码
00后“川剧上妆女孩”火了 演绎传统戏曲新活力
从零开始搭建Squid代理服务器:新手也能轻松上手
道光帝的节俭与清朝财政危机
鸦片战争下的道光经济困局
氨苄西林钠:医生眼中的超级抗生素
最新研究:营养干预助力肺癌患者延长生命
春节新玩法:电子红包大战虚拟庙会
儒释道生活哲学,教你如何平衡工作与生活
戴嘉良《今生陪你一起走》:爱情长跑的秘密
《山楂树之恋》:十年文艺片票房冠军,获华表奖认可
老年人吃花生,这些误区要避开!
戴笠西安事变被软禁,写遗书表忠获蒋介石重用
炼油销售行业薪资揭秘:加速科技15-40k是否过高?
大枣补血有讲究:中医重补气,现代医学看维生素C
多米尼加:加勒比度假新宠儿
带了 1.5w 去北海,结果emo了…
减肥必选土豆粉条:每100克仅0.2克脂肪,富含膳食纤维
AUG vs M416:谁才是绝地求生中的吃鸡神器?
航空总医院超声科:高端设备与创新技术引领精准诊疗
诗歌的意象构建与情感表达的魅力与艺术实践
白细胞减少症的科学预防指南