您的位置:首页 > 数据库

SQL 语法大全

2017-09-27 16:47 211 查看
SQL语法
例表:“Persons”表

LastName

FirstName

Address

City

Year

Adams

John

Oxford Street

London

1970

Bush

George

Fifth Avenue

New York

1995

Carter

Thomas

Changan Street

Beijing

1980

Gates

Bill

Xuanwumen 10

Beijing

1985

 

一:基础篇

关键字

描述

例子

SELECT

SELECT 语句用于从表中选取数据。结果被存储在一个结果表中(称为结果集)。

1.SELECT 列名 FROM 表名

2.SELECT * FROM 表名

 

DISTINCT

DISTINCT 用于返回唯一不同的值。

1.SELECT DISTINCT 列名 FROM 表名

WHERE 

如需有条件地从表中选取数据

1.SELECT 列名 FROM 表名 WHERE 列 运算符

2.查询 住在Beijing的人

SELECT * FROM Persons WHERE City=’ Beijing’

AND和OR

用在AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

AND:都为真才为真

OR:其中一个为真才为真

1.查询 1985年住在Beijing的人

SELECT * FROM Persons WHERE City=’ Beijing’ AND Year = 1985

2.查询住在London或者New York的人

SELECT * FROM Persons WHERE City=’ London’ OR City = ‘New York’

 

ORDER BY

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

1.以姓的字母顺序进行排列

SELECT*FROM Persons ORDER BY  LastName

2.以Year 从大到小排序

SELECT*FROM Persons ORDER BY Year DESC

3.以Year 从小到大排序

SELECT*FROM Persons ORDER BY Year

INSERT INTO

INSERT INTO 语句用于向表格中插入新的行。

1.将2017年有个姓Yuan 名Hong的住在ChongQing JieFangBei 记录在数据库

INSERT INTO Persons VALUES(‘Yuan’,’ Hong’,’ JieFangBei’,’ ChongQing’,2017)

Update

Update 语句用于修改表中的数据。

1.2017年YuanHong搬家到GuanYinQiao 修改数据

Update Persons SET Adderss=’ GuanYinQiao’ WHERE LastName=’ Yuan’ AND  FirstName=’ Hong’

DELETE

DELETE 语句用于删除表中的行

1.将YuanHong对应的数据删除掉。

DELETE FROM Persons WHERE

"Persons" 表:

Id_P

LastName

FirstName

Address

City

1

Adams

John

Oxford Street

London

2

Bush

George

Fifth Avenue

New York

3

Carter

Thomas

Changan Street

Beijing

 

"Orders" 表:

Id_O

OrderNo

Id_P

1

77895

3

2

44678

3

3

22456

1

4

24562

1

5

34764

65

 

二:高级教程

TOP

TOP 子句用于规定要返回的记录的数目。

1.我们希望从表中取前两条数据。

SELECT  TOP(2) * FROM Persons

我们希望从表中取百分之五十的记录

SELECT  TOP 50 PERCENT * FROM Persons

LIKE

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

1.我们希望查找姓的首字母为Y的人

SELECT * FROM Persons WHERE LastName LIKE ‘Y%’

2.我们希望查找姓的尾字母为N的人

SELECT * FROM Persons WHERE LastName LIKE ‘%N’

3.我们希望查找姓中含有A的人

SELECT * FROM Persons WHERE LastName LIKE ‘%A%’

通配符

1.%: 替代一个或多个字符

2_:仅替代一个字符3[charlist]:字符列中的任何单一字符

4[!charlist]:不在字符列中的任何单一字符

1.我们希望查找姓的首字母为Y的人

SELECT * FROM Persons WHERE LastName LIKE ‘Y%’

2.我们希望查找姓的尾字母为N的人

SELECT * FROM Persons WHERE LastName LIKE ‘%N’

3.我们希望查找姓中含有A的人

SELECT * FROM Persons WHERE LastName LIKE ‘%A%’

4.我们希望选取一个人的姓的第一个字符之后是UAN的人

SELECT * FROM Persons WHERE LastName LIKE ‘_UAN’

5.我们希望选取居住城市 以‘A’或‘C’开头的人

SELECT * FROM Persons WHERE City LIKE ‘[AC]%’

6.我们希望选取居住城市 不以‘A’或‘C’开头的人

SELECT * FROM Persons WHERE City LIKE ‘[!AC]%’

 

 

IN

IN 操作符允许我们在 WHERE 子句中规定多个值。

1.我们希望选取姓氏为Adams 和 Carter 的人

SELECT * FROM Persons WHERE LastName IN(‘Adams’,’ Carter’)

BETWEEN

操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

1.选取以字母顺序介于"Adams"(包括)和 "Carter"(不包括)之间的人

SELECT * FROM Persons WHERE LastName BETWEEN  ‘Adams’ AND ‘Carter’

Alias

Alias 可以为列名称或者表名称指定别名

1.我们的表名是 Persons 我们可以把它取个别名(联表查询的时候常用)

SELECT*FROM Persons AS P WHERE P.LastName BETWEEN  ‘Adams’ AND ‘Carter’

INNER join

有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join.通过join多张表的数据

1.现在有两张表 Persons和Orders它们之间通过UserID进行关联的 我们要将两张表一起取出来

SELECT * FROM PersonsAS A INNER JOIN Persons AS B ON A.ID_P =B. ID_P ORDER BY  A. LastName

LEFT JOIN

LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

1.现在有两张表 Persons和Orders它们之间通过UserID进行关联的 我们要将两张表一起取出来

SELECT * FROM Persons AS A LEFT JOIN OrdersAS B ON A. ID_P =B. ID_P ORDER BY  A. LastName

RIGHT JOIN

RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

1.现在有两张表 Persons和Orders它们之间通过UserID进行关联的 我们要将两张表一起取出来

SELECT * FROM Persons AS A RIGHT JOIN OrdersAS B ON A. ID_P =B. ID_P ORDER BY  A. LastName

FULL JOIN

只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。

1.现在有两张表 Persons 和Orders它们之间通过UserID进行关联的 我们要将两张表一起取出来

SELECT * FROM Persons AS A FULL JOIN OrdersAS B ON A. ID_P =B. ID_P  ORDER BY  A. LastName

UNION

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

1.现在我们数据库有两张表class1和class2分别是某年级的两个班的学生信息,假设该年级一共就这两个班,我们要获取该年级所有人的信息

SELECT Student FROM CLASS1

UNION

SELECT Student FROM CLASS2

SELECT INTO

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

1拷贝备份复件

SELECT * INTO PersonsBackup FROM Persons

2.向另一个数据库中拷贝表

SELECT * INTO  Persons IN ‘Backup.mdb’ FROM Persons

3.我们希望只拷贝某些域

LastName

Adams’

SELECT LastName, Adams INTO  Persons INTO  PersonsBackup FROM Persons

4.我们在Persons表中提取居住在北京的人的信息,并创建一个带两个列的名是PersonsBackup的表

SELECT LastName, Firstname INTO  Persons INTO  PersonsBackup FROM Persons WHERE City=’BeiJing’

5.其中包含了从 Persons 和 Orders 两个表中取得的信息

SELECT A.lastName,B.OrderNo

INTO PersonsBackup FROM Persons AS A INNER  JOIN  Orders AS B ON A.ID_P=B.ID_P

CREATE DATABASE

CREATE DATABASE 用于创建数据库。

 Create database 数据库名

CREATE TABLE

CREATE TABLE 语句用于创建数据库中的表。

1.创建表 例表Orders

Create table Orders(

Id_O  INT,

OrderNo INT,

ID_P INT)

SQL 约束

NOT NULL  约束强制列不接受 NULL 值。

UNIQUE约束唯一标识数据库表中的每条记录。

PRIMARY KEY RIMARY KEY 约束唯一标识数据库表中的每条记录。

FOREIGN KEY一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。

CHECK约束用于限制列中的值的范围。

DEFAULTDEFAULT 约束用于向列中插入默认值。

1.创建表 例表Orders Id_O不能为空

Create table Orders(

Id_O  INT NOT NUL ,

OrderNo INT,

ID_P INT)

2.创建表 例表Orders Id_O不能为空 标记Id_P是在本表中只能存在唯一值

Create table Orders(

ID_O  INT NOT NUL ,

OrderNo INT,

Id_P INT ,

UNIQUE(ID_P))

3.创建表 例表Orders Id_O不能为空 标记Id_P和 Id_O

Create table Orders(

Id_O  INT NOT NUL ,

OrderNo INT,

Id_P INT ,

CONSTRAINT uc_PERSONID UNIQUE(Id_P, Id_O))

4.创建表 例表"Orders" 表创建时在 "Id_O" 列创建 PRIMARY KEY 约束:

Create table Orders(

Id_O INT NOT NUL PRIMARY KEY,

OrderNo INT,

Id_P INT ,)

5.创建表 例表"Orders" 表创建时在 "Id_P" 列创建 FOREIGN KEY约束:

Create table Orders(

Id_O  INT NOT NUL PRIMARY KEY,

OrderNo INT,

Id_P INT FOREIGN KEY REFERENCES PERSONS(Id_P))

6..创建表 例表"Orders" 表创建时在 "Id_P" 列创建CHECK约束Id_P>0:

Create table Orders(

Id_O  INT NOT NUL PRIMARY KEY,

OrderNo INT,

Id_P INT ,

CHECK (Id_P>0)

7创建表 例表"Orders" 表创建时在 "Id_P" 列创建DEFAULT 约束插入默认值0

Create table Orders(

Id_O  INT NOT NUL PRIMARY KEY,

OrderNo INT,

Id_P INT DEFAULT 0,

)

 

CREATE INDEX

CREATE INDEX您可以在表中创建索引,以便更加快速高效地查询数据。

1.我们希望以Id_o从大到小排列

CREATE INDEX  Id_o  ON Orders(OrderNo, Id_P)

DROP

DROP可以轻松删除索引、表、数据库

1.删除表

DEOP  TABLE  表名

2.删除数据库

DEOP  DATABASE 数据库名

ALTER TABLE

ALTER TABLE语句用于在已有的表中添加、修改或删除列。

1.在表Orders中添加列Birthday

ALTER TABLE Orders ADD Birthday DATE

2.删除表Orders中列Birthday

ALTER TABLE Orders DEOP COLUMN Birthday

3.修改表Orders 中列Birthday的数据类型

ALTER TABLE Orders ALTER COLUMN Birthday INT

 

auto-increment主键

我们通常希望在每次插入新记录时,自动地创建主键字段的值,我们可以在表中创建一个 auto-increment 字段。

1.创建一个表 Orders 使Id_P 起始值为1每增加一条:

CREATE TABLE Orders

{

Id_O  INT NOT PRIMARY  KEY IDENTITY(1,1),

OrderNo INT,

Id_P INT,

}

VIEW

在 SQL 中,VIEW是基于 SQL 语句的结果集的可视化的表。

1.创建视图:

CREATE VIEW [Current Product List] AS SELECT OrderNo, Id_P FRPM WHERE

Discontinued=No

2.查询视图:

SELECT * FROM [Current Product List]

                                                                                                                                       2017年9月27日 IT小狼狗

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: