SQL语句快速回忆——SQL基础知识点汇总

SQL 指结构化查询语言,全称是 Structured Query Language。
RDBMS 指的是关系型数据库管理系统。

SQL 对大小写不敏感!

SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。

DDL

DDL主要是对数据库和表的创建,修改,删除。

CREATE DATABASE  - 创建新数据库
ALTER DATABASE   - 修改数据库
CREATE TABLE     - 创建新表
ALTER TABLE      - 变更(改变)数据库表
DROP TABLE       - 删除表
CREATE INDEX     - 创建索引(搜索键)
DROP INDEX       - 删除索引

建表

CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
数据类型描述
  • integer(size)
  • int(size)
  • smallint(size)
  • tinyint(size)
仅容纳整数。在括号内规定数字的最大位数。
  • decimal(size,d)
  • numeric(size,d)

容纳带有小数的数字。

"size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数。

char(size)

容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。

在括号中规定字符串的长度。

varchar(size)

容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。

在括号中规定字符串的最大长度。

date(yyyymmdd)容纳日期。

约束

NOT NULL      不能为空
UNIQUE		  唯一(不重复)
PRIMARY KEY	  主键:包含唯一的值,不能为空,每个表都应该有一个主键,并且每个表只能有一个主键。
FOREIGN KEY   
CHECK
DEFAULT

已经建了表要添加约束

ALTER TABLE 表名 ADD 约束名 (列名)

取消主键PRIMARY约束

ALTER TABLE 表名DROP PRIMARY KEY

外键 FOREIGN KEY

FOREIGN KEY 约束用于预防破坏表之间连接的动作。
FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

建表时加外键(表2必须已经创建,并且建表时列名已经定义)

FOREIGN KEY (列名) REFERENCES 表2(主键)

已有表添加外键约束

ALTER TABLE Orders
ADD FOREIGN KEY (当前建表的列名)
REFERENCES2(主键)

删除外键约束

ALTER TABLE 表名
DROP FOREIGN KEY fk_PerOrders

DML

SELECT - 从数据库表中获取数据
UPDATE - 更新数据库表中的数据
DELETE - 从数据库表中删除数据
INSERT INTO - 向数据库表中插入数据

SQL 常用数据类型汇总

字符串类:
CHAR(N),CHARACTER(n)	字符/字符串。固定长度 n。
VARCHAR(n),CHARACTER VARYING(n)	字符/字符串。可变长度。最大长度 n。

数字类:
BINARY(n)	二进制串,固定长度 n。
BOOLEAN	    存储 TRUE 或 FALSE 值
VARBINARY(n) 或BINARY VARYING(n)	二进制串。可变长度。最大长度 n。
INT,INTEGER 长整数,4字节
SMALLINT	短整数,2字节
BIGINT	    大整数,8字节

定点数:
NUMERIC(p,d) 定点数,有p为数字(不包含符号和小数点)组成,小数点后d位
DECIMAL(p,d),DEC(p,d) 同上

浮点数:
REAL	           单精度浮点数,取决于机器精度
DOUBLR PRECISION   双精度浮点数
FLOAT	(n)        可选精度的浮点数

日期:
DATE	    存储年、月、日的值。YYYY-MM-DD
TIME	    存储小时、分、秒的值。HH:MM:SS
TIMESTAMP	存储年、月、日、小时、分、秒的值。
INTERVAL	由一些整数字段组成,代表一段时间,取决于区间的类型。

集合:
ARRAY	    元素的固定长度的有序集合
MULTISET	元素的可变长度的无序集合
XML	存储 XML 数据

以下是引用W3School 的 SQL 快速参考。

语句语法
AND / ORSELECT column_name(s)
FROM table_name
WHERE condition
AND|OR condition
ALTER TABLE (add column)ALTER TABLE table_name
ADD column_name datatype
ALTER TABLE (drop column)ALTER TABLE table_name
DROP COLUMN column_name
AS (alias for column)SELECT column_name AS column_alias
FROM table_name
AS (alias for table)SELECT column_name
FROM table_name  AS table_alias
BETWEENSELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
CREATE DATABASECREATE DATABASE database_name
CREATE INDEXCREATE INDEX index_name
ON table_name (column_name)
CREATE TABLECREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
.......
)
CREATE UNIQUE INDEXCREATE UNIQUE INDEX index_name
ON table_name (column_name)
CREATE VIEWCREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
DELETE FROMDELETE FROM table_name
(Note: Deletes the entire table!!)

or

DELETE FROM table_name
WHERE condition

DROP DATABASEDROP DATABASE database_name
DROP INDEXDROP INDEX table_name.index_name
DROP TABLEDROP TABLE table_name
GROUP BYSELECT column_name1,SUM(column_name2)
FROM table_name
GROUP BY column_name1
HAVINGSELECT column_name1,SUM(column_name2)
FROM table_name
GROUP BY column_name1
HAVING SUM(column_name2) condition value
INSELECT column_name(s)
FROM table_name
WHERE column_name
IN (value1,value2,..)
INSERT INTOINSERT INTO table_name
VALUES (value1, value2,....)

or

INSERT INTO table_name
(column_name1, column_name2,...)
VALUES (value1, value2,....)

LIKESELECT column_name(s)
FROM table_name
WHERE column_name
LIKE pattern
ORDER BYSELECT column_name(s)
FROM table_name
ORDER BY column_name [ASC|DESC]
SELECTSELECT column_name(s)
FROM table_name
SELECT *SELECT *
FROM table_name
SELECT DISTINCTSELECT DISTINCT column_name(s)
FROM table_name
SELECT INTO
(used to create backup copies of tables)
SELECT *
INTO new_table_name
FROM original_table_name

or

SELECT column_name(s)
INTO new_table_name
FROM original_table_name

TRUNCATE TABLE
(deletes only the data inside the table)
TRUNCATE TABLE table_name
UPDATEUPDATE table_name
SET column_name=new_value
[, column_name=new_value]
WHERE column_name=some_value
WHERESELECT column_name(s)
FROM table_name
WHERE condition

搜索

如果绑定了指定数据库,可以直接用表名称。
如果有多个数据库情况下,应该用数据库名.表名称,如学生课程管理系统.学生信息,学生课程管理系统是数据库名,学生信息是表名称。

搜索全部

select * from 表名称

搜索指定属性名的信息

select 属性名(列名称) from 表名称

搜索满足条件表达式的所有数据

select * from 表名称 where 条件表达式

搜索满足条件的唯一的指定属性

select DISTINCT 属性名(列名称) from 表名称 where 条件表达式

条件表达式WHERE

操作符描述
=等于
<>不等于
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在某个范围内
LIKE搜索某种模式

SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值不用引号。

AND 和 OR 运算符

AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
用AND连接的条件表达式须全部满足才会输出,OR连接的表达式任意一个满足都会有输出。
用AND连接相当于多个条件合成一个条件,要么满足输出,要么不满足输出空。
用OR连接相当于多条指令执行后把各条语句的结果合并起来。

ORDER BY 语句用于根据指定的列对结果集进行排序

ORDER BY 语句默认按照升序ASC对记录进行排序,ASC一般不写,语句中同时出现升序和降序要求升序写ASC,降序写DESC。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

搜索满足条件的唯一的指定属性并按升序输出

select DISTINCT 属性名(列名称) from 表名称 where 条件表达式 ORDER BY 属性名(列名称)

搜索满足条件的唯一的指定属性并按降序输出

select DISTINCT 属性名(列名称) from 表名称 where 条件表达式 ORDER BY 属性名(列名称) DESC

搜索满足条件的指定属性并按升序输出(如果有同名属性,同名的属性按第二属性升序输出)

select  属性名(列名称) from 表名称 where 条件表达式 ORDER BY 属性名1(列名称1,属性名2(列名称2

搜索满足条件的指定属性并按降序输出(如果有同名属性,同名的属性按第二属性升序输出)

select  属性名(列名称) from 表名称 where 条件表达式 ORDER BY 属性名1(列名称1DESC,属性名2(列名称2ASC

GROUP BY

有些情况下比如订单表中要统计消费最多的用户和他的总花费金额。
当我们使用SUM()时必须按照名字进行分组,不然就会出现把订单金额全加起来,而且每人都是金额总和的情况。

GROUP BY可以按照给定的列名分组进行聚合操作

GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。
SELECT   列名, 聚合函数(列名)
FROM     表名
WHERE    条件表达式
GROUP BY 列名

HAVING

聚合函数不能在where中使用,所以增加了having

GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。
SELECT   列名, 聚合函数(列名)
FROM     表名
WHERE    条件表达式
GROUP BY 列名
HAVING   聚合函数(列名) 操作符 值

INSERT插入

对表插入

INSERT INTO 表名称 VALUES (1,2,....)

对表的指定列插入

INSERT INTO table_name (1,2,...) VALUES (1,2,....)

UPDATE 修改

对表修改

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

DELETE删除

删除行

DELETE FROM 表名称 WHERE 列名称 =

删除所有行

DELETE FROM 表名称
或
DELETE * FROM 表名称

TOP

选取最上方指定条数

SELECT TOP 条数 * FROM 表名

limit有同样效果

SELECT  * FROM 表名 LIMIT 条数

limit还可以选取范围(第m到第n条)

SELECT  * FROM 表名 LIMIT 条数m,条数n

选取最上方百分之xx的数据

SELECT TOP xx PERCENT * FROM 表名

LIKE 匹配搜索

SELECT 列名
FROM 表明
WHERE 列名 LIKE xxx
'A%'   			A开头的值
'%A'   			A结尾的值
'%A%'  			包含A的值 
NOT LIKE 'A%'   不包含A的值
'_ABC'          第一个字符后是ABC的值
'A_B_C'         第一个字符是A,第三个字符是B,第五个字符是C的值
'[ABC]%'        第一个字符是ABC中任意一个(且只有一个)的值,如A你,B我,C他

通配符

通配符描述
%代表零个或多个字符
_仅替代一个字符
[charlist]字符列中的任何单一字符(有且只有其中的一个)

[^charlist]

或者

[!charlist]

不在字符列中的任何单一字符

IN 规定多个值

SELECT 列名
FROM   表名
WHERE  列名 IN (value1,value2,...)

BETWEEN AND查找介于两个值之间的数据

SELECT 列名
FROM   表名
WHERE  列名 BETWEEN A AND B

Alias/as 指定别名

列名指定别名

SELECT 列名 as  别名
FROM   表名
WHERE  列名 BETWEEN A AND B

表名指定别名

SELECT 列名 
FROM   表名 as  别名
WHERE  列名 BETWEEN A AND B

多表联动查询

直接比对

SELECT1.列名 ,2.列名
FROM1,2
WHERE1.列a =2.列b

join操作

SELECT1.列名 ,2.列名
FROM1 INNER JOIN2
ON1.列a =2.列b

JOIN类型

 INNER JOIN(内连接):在表中存在至少一个匹配时,返回行。
 JOIN: 如果表中有至少一个匹配,则返回行
 INNER JOIN 与 JOIN 是相同的。
 
 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
   从左表返回所有的行的意思是在匹配完正确的结果后,如果左表中还有一些没有匹配的数据,也会将这些数据输出。
   比如要选择左表.姓,左表.名,右表.性别
   如果条件语句没有配置成功,左表中剩下的那些依旧要输出(会按序输出在正确结果的下方),并且性别为空(因为没有匹配成功,性别是右表的属性)
 RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
   从右表返回所有的行和LEFT JOIN相反
 FULL JOIN: 只要其中一个表中存在匹配,就返回行
   FULL JOIN就是在正确的结果基础上,把左表和右表( LEFT JOIN和RIGHT JOIN的结果都放在正确结果下方)

UNION合并多个 SELECT 语句的结果集

UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

SELECT1 FROM1
UNION
SELECT2 FROM2

UNION 操作符选取不同的值,即默认具有DISTINCT的效果。UNION ALL允许重复。

SELECT INTO 从一个表中选取数据,然后把数据插入另一个表中

SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。

SELECT *
INTO 表的备份
FROM 原始表

有选择的备份

SELECT 列名
INTO   备份表
FROMWHERE  条件表达式
  • 3
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值