微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

补充记录sql基础语法未完待续8/25


好久没弄这个了,顺便整理下,之前面试有被问到

一、distinct

1)作用

去除重复的项

2)语法

select distinct 列名字  from  表名;
  • 举例
使用前:(这里可以看到3重复出现)
select 客户端ID from Orders;

在这里插入图片描述

使用后:(这里可以看到只出现了一次3select distinct 客户ID from Orders;

在这里插入图片描述

3)缺点

当选出两列,第一列无去重,但是第二列的时间戳是唯一的话,也是有可能的

在这里插入图片描述

二、top的用法

1)作用

获取前几名或是前百分比的行数据

2)语法

select top 数字 列的名字  
from  表的名字;select top 百分比  列的名字  
from  表的名字;

3)使用举例

1获取表前3select top 3 * 
from Customers;
2获取表后40%的记录(后表示用倒序)
select top 40 Percent * 
from Customers order by 客户ID  desc;
3获取随机40%的记录
select top 40 Percent * 
from Customers 
order by 客户ID NEWID();

三、and和or

  • 使用举例
1)and举例,or也一样
select * from Customers 
where 姓名='张三' and 城市='北京'
2)andor联合使用(条件用括号隔离起来)
select * from Orders 
where (客户端ID=3 OR 客户ID=1) AND 发货ID=4

四、group by

1)作用

与聚合函数相结合,根据一个或多个列对比结果集进行分组

2)语法

select 列的名字,
聚合函数(列名)
FROM  表名
WHERE  列名  运算符  值
GROUP BY 列名

3)使用举例

查询所有城市数据

在这里插入图片描述

1)查询居住在各个城市的客户分别有多少个?
SELECT 城市,
COUNT(*) AS 客户数量
FROM Customers
GROUP BY 城市
2)不同城市最大的客户ID是多少?
SELECT 城市,
MAX(列名,比如说客户ID)  AS 最大的客户ID
FROM Customers
GROUP BY 城市

1)统计居住在各个城市的客户数量

在这里插入图片描述


2)查看不同城市里面最大的客户ID是多少

在这里插入图片描述

五、having

1)作用

主要是对分组后的数据进一步的过滤,找符合分组条件的记录
(having一般和group by联合使用,通常用在聚合函数前面,对分组后的数据进行过滤,(MAX、MIN、COUNT、SUM等)

2)语法(顺序:在group by之后,order by之前)

SELECT column1,column2
FROM table1,table2
WHERE [conditions]
GROUP BY column1,column2
HAVING [conditions]
ORDER BY column1,column2

3)使用举例

1)查询城市人数大于或等于2的所有记录
SELECT 城市,COUNT(*) 人数  FROM Customers
GROUP BY 城市
HAVING COUNT(1) >1
2)--统计员工人数大于300的部门
select 
  deptName, 
  count(deptName) 
from 
  user 
having 
  count(deptName) > 300

六、order by

1)作用

对结果排序

2)语法

SELECT 列名字 FROM 表名
ORDER BY 列名字 ASC|DESC

3)使用举例

1)升序
SELECT * FROM Customers
ORDER BY 省份 ASC
2)降序
SELECT * FROM Customers
ORDER BY 省份 DESC
3)混合升序和降序
SELECT * FROM Customers
ORDER BY 省份 ASC, 姓名DESC

1)升序

在这里插入图片描述


2)降序

在这里插入图片描述

七、LIKE

1)作用

在WHERE字句中用来指定模式来搜索数据,通常称为模糊查找

2)语法

SELECT column1,column2,...
FROM table_name 
WHERE columnN LIKE 模式;

两个常用通配符与LIKE运算符一起
% : 百分号表示零个、一个或多个字符
_ : 下划线表示单个字符
WHERE 地址 LIKE 'a%'  查找以a开头的任何值
WHERE 地址 LIKE '%a'  查找以a结尾的任何值
WHERE 地址 LIKE '%or%'  任意位置查找含有or的值
WHERE 地址 LIKE '_r%'  在第二个位置查找任何具有r的值
WHERE 地址 LIKE 'a_%_%' 查找以a开头且长度为3个字符的值
WHERE 地址 LIKE 'a%o'  找到以a开头且以o结尾的值

八、IN

1)作用

允许在WHERE字句中指定多个值,可以理解为OR条件的简写

2)语法

1)语法一
SELECT column_name(s) FROM table_name
WHERE column_name IN (value1,value2,...);
2)语法二
SELECT column_name(s) FROM table_name
WHERE column_name IN (SELECT STATEMENT);

3)使用例子举例

1)查找省份位于'上海市',‘北京市’,‘广东省’的所有用户
SELECT * FROM Customers
WHERE 省份 IN ('上海市' , '北京市' ,'广东省');
2)查找不在‘浙江省’,‘上海市’或‘北京市’中的所有客户
SELECT * FROM Customers
WHERE 省份 NOT IN ('浙江省','上海市','北京市');
3)查找来供应商‘suppliers’和客户都来自同一城市的客户信息
SELECT * FROM Customers
WHERE 城市 IN (SELECT 城市 FROM suppliers);

九、BETWEEN AND

1)作用

查找介于两个值之间的所有数据,包括开始值和结束值,等价于>= and <=

2)语法

SELECT column_name(s) FROM table_name
WHERE column_name BETWEEN value1 AND value2;

3)举例使用

1)查找价格介于3060的商品
SELECT * FROM Products
WHERE 价格 BETWEEN 30 AND 60;
2)查找价格不介于3060间的商品
SELECT * FROM Products
WHERE 价格 NOT BETWEEN 30 AND 60;
3)日期边界问题(查找订单日期,记住,认日期是00:00:00)
SELECT * FROM Orders
WHERE 订单日期 BETWEEN '2018-06-28' AND '2018-09-28';

十、UNION

1)作用

组合两个或更多SELECT语句的结果集

2)使用前提

1)UNION中的每个select语句必须具有相同的列数
2)这些列也必须具有相似的数据类型
3)每个SELECT语句中的列也必须以相同的顺序排列

3)语法

SELECT column_name(s) FROM table1
UNION (ALL)
SELECT column_name(s) FROM table2;

4)使用举例

  • 数据源(两张表)

    在这里插入图片描述


    在这里插入图片描述

1)选择两表不同的城市(只有不同的值)
SELECT 城市 FROM customers_bak
UNION   #对两个结果去重
SELECT 城市 FROM suppliers
2)从customers_bak和suppliers中选择所有城市(排出所有值,包括重复的值)
SELCET 城市 FROM customers_bak
UNION ALL  #两个结果不去重,拼接起来
SELECT 城市 FROM suppliers;

1)

在这里插入图片描述

2)

在这里插入图片描述

十一、JOIN

1)作用

  • 概念
    join用于把来自两个或多个表的行结合起来,基于这些表的共同字段做一个关联关系
  • 常见的join类型
    1)INNER JOIN 内连
    2)LEFT JOIN 左连
    3)RIGHT JOIN 右连
    4)FULL JOIN
    5)CROSS JOIN

2)语法

在这里插入图片描述

在这里插入图片描述

  • 内连接
SELECT A.Num_a,B.Num_B
FROM A   #A表内联B表,这里的INNER可以省略
INNER JOIN B
ON A.Num_A = B.Num_B  #ON 表示用这个列进行关联

在这里插入图片描述

  • 链接(先把左表都展示出来,然后匹配右类似的值)
SELECT A.Num_a,B.Num_B
FROM A  #坐标都会展示出来,匹配不到就显示NULL
LEFT JOIN B
ON A.Num_A = B.Num_B;

在这里插入图片描述

  • FULL JOIN(两个表都显示出来,没匹配就显示NULL)
SELECT A.Num_a,B.Num_B
FROM A 
FULL JOIN B
ON A.Num_A = B.Num_B;

在这里插入图片描述

  • CROSS JOIN(乘积匹配)
SELECT A.Num_a,B.Num_B
FROM A 
CROSS JOIN B;
  • 解释
    A表每个参数与B表的每个参数匹配

在这里插入图片描述

3)使用举例

十二、SELECT INTO

1)作用

2)举例

十三、CREATE

十四、VIEW视图用法

十五、约束的用法

十六、sql执行顺序

  • 顺序排行
1)SELECT 
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)

原文地址:https://www.jb51.cc/wenti/3279808.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐