SQL学习笔记|二

高级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

( 列名 数据类型,列名 数据类型,....)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值