SQL(一)基本语法

一、Sql 语言基本特点

  1. 不区分大小写
  2. 分号";"表断句,换行符不断句

二、数据查询(按执行顺序排列)

  • 基本格式
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 conditon1 # group by 前的条件筛选
group by column_3
having group_conditon1 # group by 后的条件筛选
order by column_4 asc/desc
limit m offset n

1. From & Join

  • 说明查询数据来源:可以单表查询,也可以多表查询,多表之间需要有main_key将表格相连。
  • From 或 Join 会第一个执行,确定一个整体的数据范围. 如果要join不同表,可能会生成一个临时Table来用于下面的过程。总之第一步可以简单理解为确定一个数据源表(含临时表)。
#单表查询:
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

  • Where 说明查询条件(只能用于group by之前),多个条件用andor链接。
  • 确定了数据来源 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 对之前的数据进行分组,统计等,并将结果集缩小为分组数。这意味着其他的数据在分组后会丢弃。
  • 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() #求绝对值

相关推荐

  1. 基本sql语句

    2024-06-11 12:36:05       46 阅读
  2. Web数据库基本知识,SQL基本语法

    2024-06-11 12:36:05       50 阅读
  3. MySQL | SQL语句

    2024-06-11 12:36:05       67 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-11 12:36:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-11 12:36:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-11 12:36:05       87 阅读
  4. Python语言-面向对象

    2024-06-11 12:36:05       96 阅读

热门阅读

  1. 针对私域流量的营销策略该如何制定?

    2024-06-11 12:36:05       32 阅读
  2. 为Ubuntu 14.04升级 Kernel V4.4的内核

    2024-06-11 12:36:05       35 阅读
  3. kaggle-abalone

    2024-06-11 12:36:05       28 阅读
  4. JVM面试

    JVM面试

    2024-06-11 12:36:05      28 阅读
  5. iOS中的@objc和@objcMembers实现Swift和OC的交互

    2024-06-11 12:36:05       30 阅读
  6. 如何快速入门Element-UI:打造高效美观的前端界面

    2024-06-11 12:36:05       31 阅读
  7. grok debugger 正则解析 网络安全设备日志

    2024-06-11 12:36:05       35 阅读