exists sql用法_数据分析系列——SQL数据库

47ea815d53d0da6767566471e94618f7.png

本文知识只是用作于常用的数据分析中,并未涉及专业数据库搭建等知识。全篇分为4个部分:初识数据库、数据库的操作、数据库存储数据的单元即表的基本操作、表的操作基础。全文较长,建议收藏,可当做sql使用教程。

1. 初识数据库

852164ca46fd678d0f09ebe12fdaf37e.png

2. 操作数据库

6c03b61e64e791325cee05814a841358.png

(1)创建数据库

使用数据库时第一步就是要创建数据库,SQL中的数据库通常由数据文件和事务日志组成,一个数据库可以有一到多个数据文件和事务日志组成。数据文件就是存储数据的地方,而事务日志是用来记录存储记录存储数据的时间和操作的。数据文件的扩展名是.mdf,而事务日志文件的扩展名是.ldf。

①创建数据库的语法:

d96423f800ca10178b58fa642c22b2ce.png

注意事项:

  • chapter4表示数据库名称
  • ON PRIMARY表示主数据文件,一个数据库只有一个主数据文件,后缀名为.mdf,其他为次数据文件,后缀名为.ndf。
  • name表示数据文件的逻辑名称
  • filename表示数据文件的存放位置,前提是在D盘有一个database文件夹,没有的自行创建
  • size表示文件的大小
  • filegrowth表示文件的增长量

也可使用简单语句:Create database chapter 创建数据库,用该语句创建时,其他属性默认。

也可以通过企业管理器创建。

②查看创建的数据库:

  • 使用sp_helpdb命令可以查看所有的数据库,包括系统数据库。
  • 使用sp_helpdb+ 数据库名字,可以查看该数据库的数据文件和事务日志。

(2)修改数据库

①给数据库改名

  • 使用ALTERDATABASE 语句更改

d394025504e4582b2f38819e472951b9.png
  • 使用存储过程sp_renamedb更改

f763722724539ff981f593972962ddd4.png

②给数据库换容量

62aa2ddf2332cb65f8c948472d788ff9.png

以上属性中,不需要的更改的选项对应的语句不写出来即可。

(3)删除数据库

使用语句DROP DATABASE database_name来进行删除。

3. 数据表的基本操作

77eac23eefb99ab8ccff87bb6391a2b9.png

(1)表中可存放的数据格式

  • 整型和浮点型:都属于数值类型
  • 字符串类型:任何数据都可以说成是字符串类型,汉字、字母、数字、一些特殊字符甚至是日期都可以用字符串类型来存储。
  • 日期时间类型

(2)创建数据表

ba747a6242e42e03ff6b36fba23de471.png
  • Table_name:表名,在数据库中数据表的名字不能重复,且数据表不能用数字来命名。
  • Column_name:字段名,表中的字段名也是不能重复的。
  • Datatype:数据类型,可以是系统的数据类型,也可以是用户自定义的数据类型。

(3)修改数据表

修改表之前,都需要用USE指出引用的数据库

①修改表中的数据类型

aa99393f164b408ab6312f916e5b2e3c.png

②修改表中的字段数目

  • 向表中增加字段

1ac0b9db1ecba56c6bd46f32fb1207cf.png
  • 删除表中的字段信息

d64583212593bfe50d8cad0cd15a68fc.png

③给表中字段改名

5f8b491ec9a8ccb441420eae493d8e67.png

④给数据表改名

ee39694f805c7be0b5643ceaadcc8f34.png

(4)删除数据表

创建和修改数据时每次只能创建或修改一张数据表,删除数据表时,一次可以删除多张数据表。删除语句如下:

a41dc4fe1d43d73a6a9f948c3eae7d82.png

也可以

190940c5fd46d07ba2db09c4050ff371.png

4. 表的操作基础

f52aecb98d4022ba6b2bfa0e76bcf427.png

(1)约束表中的数据

①为什么要使用约束?

通过约束表中的数据可以使数据表不出错。

②常见的约束有哪些

主键约束、外键约束、默认值约束、唯一约束、检查约束、非空约束。

由于约束一般用的不多,所以就不展开描述,在用的时候直接上网学习即可。

(2)管理表中的数据

①向数据表中添加数据——INSERT语句

032a6f5777967ac8908a096dbe036e93.png

向数据库中添加数据时,列名和值要一一对应,如果未写出列名,则添加数据的默认顺序是列的存放顺序,这就引出两种添加方式,一种是向全部字段(即列)添加数据,只需不写出列名就可以;另一种是向部分字段添加数据,需要写出具体的添加数据列名,并与添加值一一对应。

一次添加多条数据的语法:

f2b2e33d73cf8f1ffe3b2f871b7bbf1e.png

②修改表中的数据——UPDATE

c7b87d29841b4dbfd3a632f705740530.png

其中conditions表示更新条件,如果省略了WHERE语句,代表修改数据表中的全部记录。

修改前N条数据,使用关键词TOP(n),其中n是指前n条记录

78950faa3d97844ffb666c14cca3448e.png

(3)删除数据表中的数据——DELETE

b87a7f193c75a2e5b7382c7badeccd1e.png

FROM关键字可以省略,conditions有的话按照条件删除语句,如果没有条件,则删除全部数据表全部数据。

5. 简单查询表中的数据

(1)SQL运算符

①算术运算符,主要包括加、减、乘、除、取余、取商。具体运算语句如下:SELECT100+200, 0.6-0.1, 500/100;其中SELECT表示运算。

②比较运算符,大于、小于、大于等于、小于等于。

在SQL中不能直接使用比较运算符对值进行比较,需要在查询语句中的WHERE子句或T-SQL编程时使用。

③逻辑运算符,and、or、not、all和in等

④位运算符

(2)简单查询

查询操作是对表操作的一个重要操作,使用关键字SELECT。查询语句的基本语法如下:

df2ed28ac6b72ba152a39e31a23dc649.png

注意:在查询之前要用USE表明使用的数据库。

①查询表中的全部数据:SELECT* FROM table_name;

②查询某几列数据,SELECT column_name1, column_name2, FROM table_name;

③给查询结果中的列换个名称

使用AS关键字给列设置别名,

SELECTcolumn_name1 AS ‘别名1’,column_name2 AS ‘别名2’,…….

FROM table_name;

④使用TOP查询表中的前几行数据

SELECT TOP(2) column_name1 AS ‘别名1’,column_name2 AS ‘别名2’,…….

FROM table_name;

⑤在查询时使用DISTINCT去除重复的结果

SELECT DISTINCT column_name FROM table_name;

⑥使用ORDER BY给查询结果排序

SELECT column_name1, column_name2, column_name3……

FROM table_name

WHERE conditions

ORDER BY column_name1 DESC|ASC, column_name1 DESC|ASC……..

ORDERBY子句后面可以放置1列或多列,在每一列后面还要指定该列的排序方式,DESC代表的降序排列,ASC代表的是升序排列。

⑦用LIKE进行模糊查询

SELECT column_name FROM table_name WHERE column_name LIKE ‘%10%’;

a786660f7768df9a4f26010354ffa124.png

⑧用IN查询某一范围内的值

SELECT column_name1, column_name2,……

FROM table_name WHERE column_name IN(value1,value2,…..);

⑨根据多个条件查询数据

WHERE语句与逻辑运算符联合使用。

(3)聚合函数

求最大值函数(MAX)、最小值函数(MIN)、平均值函数(AVG)、求和函数(SUM)、求记录行数函数(COUNT)

SELECT 函数(column_name)FROM table_name;

6. 查询语句提高

简单查询是针对一张表进行的,而查询语句提高是针对多表进行的。

(1)子查询

所谓子查询就是在一个查询语句中可以使用另一个查询语句中得到的结果作为条件进行查询,常用于两个表之间的查询引用。常用的子查询关键字有:IN、ANY、SOME、以及EXISTS。

①IN关键字后面的查询就是一个子查询,是用来判断某个列是否在某个范围内。先执行in后面的语句,然后执行in前面的语句,并且IN后面的查询语句只能返回一列值。

b6e2cccf4ac9652b3349db0898db141c.png

中查找是节目信息表,prograntype是节目类型,typeinfo是节目类型表。

②ANY通常被比较运算符连接ANY得到的结果,它可以用来比较某一列的值是否全部都大于(小于、等于、不等于等运算符)ANY后面的子查询中得到的结果。

893ff32533d2cd51a7dd1ac2043e2428.png

ANY前面的“>”代表了对于ANY后面语句执行的任意结果都大于。

③SOME关键字,与ANY关键字的用法比较相似,但是意义却不同,SOME通常用来比较满足查询中的任意一个值,而ANY要满足所有值。

d042f280a7db34ff7992e03366a97a82.png

上面语句中的“=some”与“in”功能相同。

④EXISTS关键字代表存在的意思,当查询返回的结果为空,那么返回true,否则为false,当查询语句能够查询出数据时,则查询出所有符合条件的数据,负责不输出任何数据。

fb3bbd92e1ac6bc054f0524842611e9c.png

上面语句表示在节目信息表中选出与节目类型表中一致的信息。

(2)分组查询

在学习分组之前,我们先弄清楚什么是分组。在现实生活中,经常会遇到分组,比如:扫雪时经常会把一个班级分成几个组,分别完成不同的扫雪任务。在数据库中的分组也是同一个意思,将数据按照一定条件进行分组,然后统计每组中的数据。

①分组查询介绍

3d2f8fdb95e5a3bb0c33ab9f828a2ad7.png

上面语句中:GROUPBY是分组查询的关键字,在其后面写的是按其分组的列名,可以按照多列进行分组。

HAVING是在分组查询中使用条件的关键字。该关键字只能在GROUPBY后面。它的作用与WHERE类似,都表示查询条件。

②聚合函数在分组查询的应用

7871834f30ecf482d023006defe83b83.png

③在分组查询中使用条件

98d23c9132306e1b458748e8ed76d8e2.png

cac8976639fafbc78768624f6a98198c.png

上面两个语句使用了where和having两个不同的条件关键词,但是执行结果是一样,两者的区别是:where子句要放在groupBY 子句之前,也就是说他能够先按条件筛选数据后,再对数据进行分组。HAVING子句要放在GROUPBY 子句之后,也就是要对数据进行分组,然后再对其按条件进行数据筛选。还有一点使用HAVING语句作为条件时,条件后面的列只能是在GROUPBY子句后面出现过的列。

④分组查询的结果排序

6e291f7e376403fddc53093e5cba18c3.png

对查询结果进行排序,但是排序只能只能针对groupby 子句中出现过的列。

(3)多表查询

在前面的查询时针对两张表之间的查询,而多表查询时针对的是更多表之间的查询。

①同一个表的连接——自连接

查询语句不仅可以查询多张表的内容,还可以同时连接多次同一张数据表,把这种同一张表的连接称为自连接。但是在查询时要分别为同一张表设置不同的别名。

4bc76d2048ffbb8a1147a7618d326ee3.png

②查询出额外数据的连接——外连接

在前面的查询语句中,查询结果全部都是需要符合条件才能够被查出,如果执行语句中没有符合条件的结果,那么在结果中就不会有任何记录。但是通过外连接查询,可以查询出符合条件的结果后还能显示出某张表中不符合条件的数据。外连接包括左外连接、右外连接以及全连接。

f6a5f3291f2c0dbde85cb6e6d3aae49f.png
  • LIFTOUTER JOIN:左外连接。使用左外连接得到的查询结果中,除了符合条件的查询结果部分,还要加上左表中余下的数据。
  • RIGHTOUTER JOIN:右外连接。使用右外连接得到的查询结果中,除了符合条件的查询结果部分,还要加上右表中余下的数据。
  • FULLOUTER JOIN:全连接。使用全连接得到的查询结果中,除了符合条件的查询结果部分,还要加上左表和右表中余下的数据。
  • ON:设置外连接中的条件。与WHERE子句后面的写法一样。

③只查询出符合条件的数据——内连接

内连接可以理解为是等值连接,也就是说查询的结果全部是符合条件的数据。但是内连接与外连接的语法相似。

195c7f5727972b6aaeb3d22da05f0d67.png

(4)结果集的运算

①使用UNION关键字合并查询结果

所谓合并查询结果是将两个或更多的查询结果放到一个结果集中显示,但是合并结果是有条件的,那就是必须保证每一个结果集中的字段和数据类型一致。UNION关键字就是用来合并多个结果集的。

b3737cd3a33e394478a2c90841507715.png

②对合并的查询结果进行排序。

e38a7a132c0bda073783315918ef161e.png

直接用orderby 对要排序的列名排序即可。

③对结果集进行差运算。

结果集不仅可以进行合并运算,还可以进行差运算。差运算不是简单滴对结果集内容进行减法运算,而是从一个结果集中去除另一个结果集中的内容,使用关键词EXCEPT,其用法与UNION类似。进行差运算时要保证except前后的两个结果集列的个数和数据类型一致。

31ecaec609d134227fd37b0d5015fc74.png

④对结果集进行交运算。

交运算就是对两个结果集取交集,使用关键字INTERSECT,其语法形式与合并、差运算一致。


本文为个人公众号<俊红的数据分析之路>,2017年02月15日所发原创,未经允许禁止转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值