超级完整的SQL语句!

一、基础SQL:
1. SQL select

SELECT 列名称 FROM 表名称
SELECT * FROM 表名称  # 取所有的列
# 注释:SQL 语句对大小写不敏感。SELECT 等效于 select。

2. SQL SELECT DISTINCT

SELECT DISTINCT Name FROM Persons # 会将相同名字的数据仅列出第一次

3. SQL WHERE

SELECT * FROM Persons WHERE City='Beijing' # 只希望选取居住在城市 "Beijing" 中的人

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

例如:
这是正确的:
SELECT * FROM Persons WHERE FirstName='Alice'

这是错误的:
SELECT * FROM Persons WHERE FirstName=Alice

这是正确的:
SELECT * FROM Persons WHERE Year>1965

这是错误的:
SELECT * FROM Persons WHERE Year>'1965'

4. SQL AND & OR

SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')
AND LastName='Carter' # 与或条件,多条件进行检索

5. SQL ORDER BY

SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber # 先以公司首字母进行升序排序,若相同的再根据顺序号排序
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC # DESC 表示逆序排序
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC # 以逆字母顺序显示公司名称,并以数字顺序显示顺序号。

6. SQL INSERT INTO

INSERT INTO table_name (1,2,...) VALUES (1,2,....)
INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing') # 同时插入所有的数据
INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees') # 向表中指定列中插入数据

7. SQL UPDATE

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'
WHERE LastName = 'Wilson'

8. SQL DELETE

DELETE FROM 表名称 WHERE 列名称 =DELETE FROM Person WHERE LastName = 'Wilson' 

DELETE FROM table_name # 这样是不删除表的情况下删除所有行数据,意味着表的结构、属性和索引是完整的。
或者 DELETE * FROM table_name

二、高级SQL
1. SQL TOP

规定了返回记录的数目,但并非所有的数据库系统都支持 TOP 子句。
MySQL 语法中:使用limitSELECT * FROM Persons LIMIT 5

2. SQL LIKE

可用于模糊搜索
SELECT * FROM Persons
WHERE City LIKE 'N%' # "Persons" 表中选取居住在以 "N" 开始的城市里的人:
或者用not关键词
SELECT * FROM Persons
WHERE City NOT LIKE '%lon%' # "Persons" 表中选取居住在不包含 "lon" 的城市里的人:
# =======================================
SQL中还有其他通配符,配合LIKE使用:
%			替代一个或多个字符
_ 			仅替代一个字符
[abc] 		字符列中的任何单一字符
[^charlist] 不在字符列中的任何单一字符 

3. SQL IN

IN 操作符允许我们在 WHERE 子句中规定多个值。
SELECT * FROM Persons
WHERE LastName IN ('Adams','Carter') # 从表中选取姓氏为 Adams 和 Carter 的人:

4. SQL BETWEEN

操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
SELECT * FROM Persons
WHERE LastName
BETWEEN 'Adams' AND 'Carter'
# 选出以字母顺序显示介于 "Adams"(包括)和 "Carter"(不包括)之间的人 【左闭右开】

5. SQL Alias(别名)

SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p, Product_Orders AS po
WHERE p.LastName='Adams' AND p.FirstName='John'
# AS是将对应的表指定别名
# 也可以针对列,这样会改变列的名称:
SELECT LastName AS Family, FirstName AS Name
FROM Persons

5. SQL JOIN(重要)

# 联表查询的时候可能会用到
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName
# =============================================
JOIN: 如果表中有至少一个匹配,则返回行,等同于INNER JOIN
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行(左表即指Persons)
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行(右表指Orders)
FULL JOIN: 从左表 (Persons) 和右表 (Orders) 那里返回所有的行。(即使没有匹配,也会将两个表的所有数据行都返回)

6. SQL UNION 和 UNION ALL

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
# UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
#注:UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值,UNION会将相同的数据仅选出一个。
例如:
SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA
若其中有姓名相同的数据,则只会选出一个,使用UNION ALL则会返回所有的数据。

7. CREATE TABLE

CREATE TABLE 语句用于创建数据库中的表。
例如:
CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
可以使用 INSERT INTO 语句向空表写入数据。

8. SQL 约束 (Constraints)

  • NOT NULL # 约束强制列不接受 NULL 值。
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
  • UNIQUE
UNIQUE 约束唯一标识数据库表中的每条记录。

UNIQUEPRIMARY KEY 约束均为列或列集合提供了唯一性的保证。

PRIMARY KEY 拥有自动定义的 UNIQUE 约束。

请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
  • PRIMARY KEY
PRIMARY KEY 约束唯一标识数据库表中的每条记录。

主键必须包含唯一的值。

主键列不能包含 NULL 值。

每个表都应该有一个主键,并且每个表只能有一个主键。
  • FOREIGN KEY
一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY"Orders" 中的 "Id_P" 列指向 "Persons" 表中的 "Id_P" 列。
"Persons" 表中的 "Id_P" 列是 "Persons" 表中的 PRIMARY KEY"Orders" 表中的 "Id_P" 列是 "Orders" 表中的 FOREIGN KEY# =================================================
FOREIGN KEY 约束用于预防破坏表之间连接的动作。
FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

  • CHECK
CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
  • DEFAULT
DEFAULT 约束用于向列中插入默认值。

如果没有规定其他的值,那么会将默认值添加到所有的新记录。
例如:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'Beijing'
)

9. SQL CREATE INDEX

CREATE INDEX 语句用于在表中创建索引。
在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。
# 在表上创建一个简单的索引。允许使用重复的值:
CREATE INDEX index_name
ON table_name (column_name)
# 在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
# 假如您希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开:
CREATE INDEX PersonIndex
ON Person (LastName, FirstName)

10 .SQL Date

SQL Date 数据类型
MySQL 使用下列数据类型在数据库中存储日期或日期/时间值:

DATE - 格式 YYYY-MM-DD
DATETIME - 格式: YYYY-MM-DD HH:MM:SS
TIMESTAMP - 格式: YYYY-MM-DD HH:MM:SS
YEAR - 格式 YYYY 或 YY
SQL Server 使用下列数据类型在数据库中存储日期或日期/时间值:

DATE - 格式 YYYY-MM-DD
DATETIME - 格式: YYYY-MM-DD HH:MM:SS
SMALLDATETIME - 格式: YYYY-MM-DD HH:MM:SS
TIMESTAMP - 格式: 唯一的数字
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郝同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值