SQL 对大小写不敏感
DML数据操作语言
1. SELECT – 从数据库表中获取数据
select LastName, FirstName from Persons select * from Persons
去重复
select distinct company from Orders
WHERE 条件
select * from Persons where City = 'Beijing'//文本单引号 select * from Persons where Year > 1990 //数值
操作符 | 描述 |
---|---|
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
|
大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
LIKE 在 WHERE 子句中搜索列中的指定模式
//选取居住在以 "N" 开始的城市里的人 SELECT * FROM Persons WHERE City LIKE 'N%' //选取居住在以 "g" 结尾的城市里的人 SELECT * FROM Persons WHERE City LIKE '%g' //选取居住在包含 "lon" 的城市里的人 SELECT * FROM Persons WHERE City LIKE '%lon%' //选取居住在不包含 "lon" 的城市里的人 SELECT * FROM Persons WHERE City NOT LIKE '%lon%'
AND 和 OR 基于一个以上的条件对记录进行过滤
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter' SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter' SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William') AND LastName='Carter'
ORDER BY 对结果集进行排序
ORDER BY 语句默认按照升序对记录进行排序 DESC 降序
SELECT Company, OrderNumber FROM Orders ORDER BY Company SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
TOP 规定要返回的记录的数目
对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。
//等价于MySQL的LIMIT SELECT * FROM Persons LIMIT 5 //选取头两条记录 SELECT TOP 2 * FROM Persons //表中选取 50% 的记录 SELECT TOP 50 PERCENT * FROM Persons
IN 允许我们在 WHERE 子句中规定多个值
//选取姓氏为 Adams 和 Carter 的人 SELECT * FROM Persons WHERE LastName IN ('Adams','Carter')
BETWEEN 在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围
BETWEEN … AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期
//以字母顺序显示介于 "Adams"(包括)和 "Carter"(不包括)之间的人 SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter' //显示范围之外的人 SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Adams' AND 'Carter'
Alias(别名)
//使用表名称别名 SELECT po.OrderID, p.LastName, p.FirstName FROM Persons AS p, Product_Orders AS po WHERE p.LastName='Adams' AND p.FirstName='John' //使用一个列名别名 SELECT LastName AS Family, FirstName AS Name FROM Persons
通配符
SQL 通配符可以替代一个或多个字符
SQL 通配符必须与 LIKE 运算符一起使用
通配符 | 描述 |
---|---|
% | 替代一个或多个字符 |
_ | 仅替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist]或者[!charlist] | 不在字符列中的任何单一字符 |
//选取名字的第一个字符之后是 "eorge" 的人 SELECT * FROM Persons WHERE FirstName LIKE '_eorge' //选取居住的城市以 "A" 或 "L" 或 "N" 开头的人 SELECT * FROM Persons WHERE City LIKE '[ALN]%' //选取居住的城市不以 "A" 或 "L" 或 "N" 开头的人 SELECT * FROM Persons WHERE City LIKE '[!ALN]%'
JOIN
根据两个或多个表中的列之间的关系,从这些表中查询数据
UNION 合并两个或多个 SELECT 语句的结果集
SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
//制作备份复件 SELECT * INTO Persons_backup FROM Persons
2. UPDATE – 更新数据库表中的数据
//更新某一行中的一个列 UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson' //更新某一行中的若干列 UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'
3. DELETE – 从数据库表中删除数据
//删除某行 DELETE FROM Person WHERE LastName = 'Wilson' //删除所有行 DELETE * FROM table_name
4. INSERT INTO – 向数据库表中插入数据
//插入新的行 INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing') //在指定的列中插入数据 INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')
DDL数据定义语言
CREATE DATABASE – 创建新数据库 ALTER DATABASE – 修改数据库 CREATE TABLE – 创建新表
CREATE TABLE Persons ( Id_P int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) )
ALTER TABLE – 变更(改变)数据库表 DROP TABLE – 删除表 CREATE INDEX – 创建索引(搜索键)
DROP INDEX – 删除索引
约束 (Constraints)
约束用于限制加入表的数据的类型。
可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。
NOT NULL 不接受 NULL 值
UNIQUE UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
– PRIMARY KEY
每个表都应该有一个主键,并且每个表只能有一个主键。
– FOREIGN KEY
– CHECK 限制列中的值的范围
– DEFAULT 用于向列中插入默认值
CREATE TABLE Persons ( Id_P int NOT NULL PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) DEFAULT 'Sandnes' CHECK (Id_P>0) UNIQUE (Id_P) )
索引
您可以在表中创建索引,以便更加快速高效地查询数据。
用户无法看到索引,它们只能被用来加速搜索/查询。