高级SQL语句:
TOP:用于返回规定要反回的记录数目。对于拥有大量数据的大型表实用。
注释:并非所用的数据库都支持Top语句。
SQL Server 的语法:
SELECT TOP 数字|百分比 列名 FROM 表名
MySQL和Oracle的语法:
MySQL语法
SELECT 列名 FROM 表名 LIMIT 数量;
commit;
Oracle语法
SELECT 列名 FROM 表名 WHERE ROWNUM <= 数量 ;
COMMIT;
取Person表中的50%
SELECT TOP 50 PERCENT * FROM Person
取Person表中的头两条是数据
SELECT TOP 2 * FROM Person
LIKE:
SELECT 列名 FROM 表名 WHERE 列名 LIKE 模式(像正则表达式一样)
选择城市名以“K”字母开头的城市。
SELECT * FROM Person WHERE city
选择城市名以“N”字母结尾的城市:LIKE 'K%'
SELECT * FROM Person WHERE city LIKE '%N'
选择城市名中含有“lon”字符的城市。
SELECT * FROM Person WHERE city LIKE '%lon%'
NOT LIKE :
选择城市名中不含有"lon’的城市
SELECT * FROM Person WHERE city NOT LIKE "%LON%"
通配符:
% 替换一个或多个字符
_ 仅替换一个字符
[^charlist] 含有字符串中的任何一个字符
[!charlist]不含有字符串集合中的任意字符
从Person表中选取城市名以【ABC】,“A”,“B”,“C”开头的人。
SELECT * FROM Person WHERE city LIKE '[ABC]%'
IN:
允许我们在WHERE句子中中规定多个值。
从表选出姓氏为“李”和“吴”的人
SELECT * FROM Person WHERE LastName IN ('李','吴')
BETWEEN:
SELECT column_name(s) FROM table_name
WHERE column_name
BETWEEN values1 AND values2
以字母顺序显示介于“Adams”(包括)和“Carter”(不包括)之间的人。
SELECT * FROM Person WHERE LastName
BETWEEN 'Adams' AND 'Carter'
SELECT * FROM Person WHERE LastName
NOT BETWEEN 'Adams' AND 'Carter'
Alias(别名)
使用表别名
SELECT colum_name(s)
FROM table_name
AS alias_name
SELECT po.OrderID,p.LastName,p.FirstName
FROM Person AS p,Proddeuct_Orders As po
WHERE p.LastName='Adams' AND FirstName = 'John'
使用列别名
SELECT LastName AS Family, FirstName AS Name From Persons
JOIN:
通过应用两个表的表达式,从两个表中获取数据:
谁订购了什么产品:
SELECT Person.LAstName ,Person.FristName,Orders.OrderNo
FROM Person,Oders
WHERE Person,Id_P = Orders.Id_p
下面使用JOIN来实现
SELECT Person.LastName,Perosns.FirstName,Oreders.Order.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_p = Orders.Id_P
OERDER BY Person.LAstName
INNER JOIN (内连接)
JOIN:如果表中至少一个匹配,侧返回行。
INNER JOIN():在表中至少存在一个匹配,则返回行。
SELECT 列名 FROM 第一个表名
INNER JOIN 第二个表名 ON 表一.列名 = 第二个表名.列名
SELECT Person.LastName,Person.FirstName.Oerders.OerderNo
FROM Persons INNER JOIN Orders ON Person.Id_P = Orders.id_P
ORDER BY Person.LastName
LEFT JOIN:即使右表没有匹配,也从左表返回所有行。
SELECT Person.LastName,Person.FirstName,Orders.OrderNO
FROM Perons
LEFT JOIN Orders ON Person.id_P = Orders.id_P
ORDER BY Person.LastName
ROGHT JOIN:即使左表没有匹配,也从右表返回所有行。
SELECT Person.LastName,Persons.FirstName,Orders.OrdersNo
FROM Person
RIGHT JOIN Orders ON Person.id_P = Orders.id_P
ORDER BY Person.LastName
FULL JOIN:只要其中一个表中存在匹配,就返回行。
SELECT Persons.LastName,Persons.FirstName,Orders.OrderNo
FROM Prersons
FULL JOIN Orders
ON Persons.id_p = Orders.id_P
ORDER BY Persons.LastName
UNION
操作用于合并两个或多个SELECT语句的结果集。
UNION内部的SELECT语句必须拥有相同数量的列。
列也必须拥有相似的数据类型。
同时每条SEECT语句中的列的顺序必须相同。
UNION 默认选取不同的值
UNION ALL 允许 重复的值
SELECT 列名 FROM 表名
UNION
SELECT 列名 FROM 表名
SELECT e_NAME Emplyees_China
UNION
SELECT E_NAME FROM Emplyees_USA
SELECT INTO
SELECT INTO 语句从一个表中选取据插入到另外的表中
SELECT INTO 语句常用于创建表的数备份文件或者用于对记录进行存档
SELECT * INTO new_table_name FROM old_table_name
SELCT colum_name INTO new-table_name FROM old_tableanme
向另一个数据库中拷贝
SELECT * INTO Persons IN 'Bakcup.mdb' FROM Persons
带有WHERE子句
SELECT LastName,FirstName INTO Persons_backup
FROM Peronss WHERE City='Beijing'
被连接的表
SELEST Persons.LastName,Orders.OrdersNo
INTO Person_Orders_Backup
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.id_p
CREATE DATABASE
用于创建数据库
CREATE DATABASE my_db
CREATE TABLE tablename
( 列名 数据类型,列名 数据类型,....)