SQL必知必会知识点总结

1、检索数据(SELECT)

检索单个列
SQL必知必会知识点总结_第1张图片
检索多个列
SQL必知必会知识点总结_第2张图片

检索所有列
在这里插入图片描述

2、排序检索数据(ORDER BY)

SQL必知必会知识点总结_第3张图片
ORDER BY子句必须是SELECT语句中的最后一个子句。
按多个列排序
SQL必知必会知识点总结_第4张图片
指定排序方向
默认是升序,进行降序排列,必须指定DESC关键字。升序是ASC。
在这里插入图片描述
SQL必知必会知识点总结_第5张图片

3、过滤数据(WHERE)

在这里插入图片描述
SQL必知必会知识点总结_第6张图片
SQL必知必会知识点总结_第7张图片
范围值检查
SQL必知必会知识点总结_第8张图片
空值检查
SQL必知必会知识点总结_第9张图片
AND操作符
SQL必知必会知识点总结_第10张图片
OR操作符
在这里插入图片描述
SQL在处理OR操作符之前,会优先处理AND操作符,所以要注意加括号。
在这里插入图片描述
IN操作符
SQL必知必会知识点总结_第11张图片
IN操作符完成与OR操作符相同的功能。
NOT操作符
NOT操作符用来否定它之后所跟的任何条件。
在这里插入图片描述
LIKE操作符
SQL必知必会知识点总结_第12张图片
SQL必知必会知识点总结_第13张图片
SQL必知必会知识点总结_第14张图片
在这里插入图片描述
SQL必知必会知识点总结_第15张图片
在这里插入图片描述
SQL必知必会知识点总结_第16张图片

4、创建计算字段

上面的操作都是对数据的检索,并未进行任何操作,但是,存储在数据库表中的数据一般不是我们所需要的格式。
拼接字段
拼接将值联结在一起构成单个值。
SQL必知必会知识点总结_第17张图片
SQL必知必会知识点总结_第18张图片

SQL必知必会知识点总结_第19张图片
在这里插入图片描述
对拼接的形成的新字段使用别名
别名使用AS关键字赋予。

SQL必知必会知识点总结_第20张图片
执行算术运算
SQL必知必会知识点总结_第21张图片

5、数据处理函数

提取串的组成成分:使用SUBSTRING()
数据类型转换:使用CONVERT()
取当前日期:使用CURDATE()

replace函数:REPLACE(String,from_str,to_str) 即:将String中所有出现的from_str替换为to_str。

SUBSTR函数:是用来截取数据库某一列字段中的一部分。在各个数据库的函数名称不一样MySQL: SUBSTR( ), SUBSTRING( );Oracle: SUBSTR( );SQL Server: SUBSTRING( ) ;
常用的方式是:SBUSTR(str,pos);就是从pos开始的位置,一直截取到最后。 还有一种比较常用的是:SUBSTR(str,pos,len);从pos开始的位置,截取len个字符(空白也算字符)。

文本处理函数
SQL必知必会知识点总结_第22张图片
SQL必知必会知识点总结_第23张图片
时间和日期处理函数
在这里插入图片描述
数值处理函数
SQL必知必会知识点总结_第24张图片

4、汇总数据

聚集函数
SQL必知必会知识点总结_第25张图片
SQL必知必会知识点总结_第26张图片
SQL必知必会知识点总结_第27张图片
SQL必知必会知识点总结_第28张图片
SQL必知必会知识点总结_第29张图片
组合聚集函数

SQL必知必会知识点总结_第30张图片

6、分组数据(GROUP BY)

分组允许把数据分为多个逻辑组,以便能对每个组进行聚集计算。

GROUP BY
分组是在SELECT语句的GROUP BY子句中建立的。
SQL必知必会知识点总结_第31张图片
HAVING进行过滤分组
HAVING非常类似于WHERE,但是WHERE没有分组的概念,WHERE过滤指的是列而不是分组。
SQL必知必会知识点总结_第32张图片
SQL必知必会知识点总结_第33张图片
利用子查询进行过滤
在这里插入图片描述
SQL必知必会知识点总结_第34张图片

7、联结表

SQL必知必会知识点总结_第35张图片
prod_name和prod_price在一个表中,vend_name在另一个表中,这两个表用where子句进行联结,匹配Vendors表中的vend——id和Products表中的vend_id。
SQL必知必会知识点总结_第36张图片
表别名
SQL必知必会知识点总结_第37张图片
自联结
在这里插入图片描述
SQL必知必会知识点总结_第38张图片
自然联结
在这里插入图片描述
SQL必知必会知识点总结_第39张图片
在这个例子中,通配符只对第一个表使用,所有其他的列明确列出,所以没有重复的列被检索出来。
外部联结
许多联结将一个表中的行与另一个表中的行相关联,但有时会需要包含没有关联行的那些行。若联结包含了那些在相关表中没有关联行的行,这种类型的联结称为外部联结。
SQL必知必会知识点总结_第40张图片
SQL必知必会知识点总结_第41张图片
简化的外部联结语法
SQL必知必会知识点总结_第42张图片
使用带聚集函数的联结
SQL必知必会知识点总结_第43张图片
在这里插入图片描述
SQL必知必会知识点总结_第44张图片

8、 组合查询

使用UNION

SQL必知必会知识点总结_第45张图片
SQL必知必会知识点总结_第46张图片
UNION规则
SQL必知必会知识点总结_第47张图片
UNION从查询结果集中自动去除了重复的行,如果想要返回所有匹配行,可使用UNION ALL而不是UNION。
SQL必知必会知识点总结_第48张图片
对组合查询结果排序
ORDER BY子句用于排序,在用UNION组合查询时,只能使用一条ORDER BY子句,且必须出现在最后一条SELECT语句之后。
SQL必知必会知识点总结_第49张图片

9、插入数据(INSERT)

插入完整的行
SQL必知必会知识点总结_第50张图片
这种语法虽然简单,但高度依赖于表中列的定义次序,并不安全。可以在表明后的括号里明确地给出列名,在插入行时,DBMS将用VALUES列表中的相应值填入列表中的对应项。
SQL必知必会知识点总结_第51张图片
插入部分行
可以只给某些列提供值,给其他列不提供值。省略的列必须满足以下某个条件:
该列定义为允许NULL值;在表定义中给出默认值
SQL必知必会知识点总结_第52张图片
插入检索出的数据
使用INSERT SELECT将一条SELECT语句的结果插入表中。不管SELECT语句返回多少行,都将被INSERT插入,所以可以插入多行。但是,INSERT通常只插入一行。
SQL必知必会知识点总结_第53张图片
从一个表复制到另一个表
与INSERT SELECT增补数据到一个已经存在的表不同,SELECT INTO将复制数据到一个新表。

SQL必知必会知识点总结_第54张图片

10、更新和删除数据

更新数据(UPDATE)

可以更新表中所有行,也可以更新表中特定行,要使用WHERE子句,告诉DBMS更新哪一行。如果没有WHERE子句,就会将这个值更新到表中所有的行。为了删除某个列的值,可以将它更新设置为NULL。
在这里插入图片描述
删除数据(DELETE)
SQL必知必会知识点总结_第55张图片
DELETE不需要列名或通配符,删除的行而不是列。为了删除指定的列,请使用UPDATE语句。

SQL没有撤销操作,应该非常小心使用UPDATE和DELETE。

11、 创建和操纵表

创建表
SQL必知必会知识点总结_第56张图片
表名紧跟在CREATE TABLE关键字后面,实际的表定义括在圆括号中。各列之间用逗号隔开,每列的定义以列名开始,后跟列的数据类型。整条语句以圆括号后的分号结束。

每个表列或者是NULL列,或者是NOT NULL列,这种状态在创建时由表的定义规定。允许NULL值的列也允许在插入行时不给出该列的值。不允许NULL值的列不接受该列没有值的行,也就是在插入或更新行时,该列必须有值。NULL为默认设置,如果不指定NOT NULL,则认为指定的是NULL。

指定默认值
默认值在CREATE TABLE语句的列定义中用关键字DEFAULT指定。在插入行时如果不给出值,将自动采用默认值。
在这里插入图片描述
MySQL指定DEFAULT CURRENT_DATE(),将系统日期用作默认日期。

更新表
使用ALTER TABLE语句。虽然所有DBMS都支持ALTER TABLE,但它们所允许更新的内容差别很大。
(1)增加列,基本上所有DBMS都支持。
SQL必知必会知识点总结_第57张图片
(2)删除列
在这里插入图片描述
删除表
在这里插入图片描述

12、索引

索引用来快速地寻找那些具有特定值的记录,如果没有索引,执行查询时Mysql必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录,表里面的记录数量越多,这个操作的代价就越高,如果作为搜索条件的列上已经创建了索引,mysql无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有一千个记录,通过索引查找记录至少要比顺序扫描记录快100倍。所以对于现在的各种大型数据库来说,索引可以大大提高数据库的性能,以至于它变成了数据库不可缺少的一部分

普通索引
普通索引的唯一任务是加快对数据的访问速度,因此,应该只为那些最经常出现在查询条件(WHERE column=)或者排序条件(ORDERBY column)中的数据列创建索引

主键
必须为主键字段创建一个索引,这个Mysql索引就是所谓的“主索引”。主索引与唯一索引的唯一区别是:前者在定义时使用的关键字是PRIMARY而不是UNIQUE

唯一性索引
如果确定某个数据列只包含彼此各不相同的值,在为这个数据列创建索引的时候,就应该用关键字UNIQUE把它定义为一个唯一索引,Mysql会在有新纪录插入数据表时,自动检查新纪录的这个字段的值是否已经在某个记录的这个字段里出现过了。如果是,mysql将拒绝插入那条新纪录。也就是说,唯一索引可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复

索引的优点
1.可以通过建立唯一索引或者主键索引,保证数据库表中每一行数据的唯一性
2.建立索引可以大大提高检索的数据,以及减少表的检索行数
3.在表连接的连接条件,可以加速表与表直接的相连
4.在分组和排序字句进行数据检索,可以减少查询时间中分组和排序时所消耗的时间(数据库的记录会重新排序)
5.建立索引,在查询中使用索引,可以提高性能。

索引的缺点
1.创建索引和维护索引,会耗费时间,随着数据量的增加而增加
2.索引文件会占用物理空间,除了数据表需要占用物理空间之外,每一个索引还会占用一定的物理空间
3.当对表的数据进行INSERT,UPDATE,DELETE的时候,索引也要动态的维护,这样就会降低数据的维护速度,(建立索引会占用磁盘空间的索引文件)。

SQL插入索引语句
1普通索引:ALTER TABLE’table-name’ ADD INDEX index_name(‘column’)
2唯一索引:ALTER TABLE’table-name’ ADD UNIQUE(‘column’)
3主键索引:ALTER TABLE’table-name’ ADD PRIMARY KEY (‘column’)

你可能感兴趣的:(SQL必知必会知识点总结)