sql top子句
并非所有的数据库都支持top子句,它用于规定要返回的记录的数目
1.sql server的语法
SELECT TOP number|percent column_name(s)
FROM table_name
2.mysql语法
SELECT column_name(s)
FROM table_name
LIMIT number
column 纵队,列
3.oracle用法
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number
eg:
SELECT TOP 2 * FROM Persons
SELECT TOP 50 PERCENT * FROM Persons
sql like 操作符
like操作符用于在where子句中搜索列中的指定模式
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
示例用法
SELECT * FROM Persons
WHERE City LIKE 'N%'
“%” 可用于定义通配符(模式中缺少的字母)
比如,以n开头就是‘N%’,以g结尾就是‘%g’,包含lin就是‘%lin%’
如果此时选取的值是不包含某某关键字的就使用not关键字
SELECT * FROM Persons
WHERE City NOT LIKE '%lon%'
sql通配符
在搜索过程中,通配符是用来替代一个或多个字符的,通配符必须与like操作符搭配使用
常见的通配符是‘%’,可以代替一个或者多个字符
‘_’ 仅替代一个字符
[charlist] 字符列中的任何单一字符,可以理解为某种特征的集合
[ ^charlist ] 或[!charlist]不在字符列中的任何一单一字符
比如要从表中的某一列选出开头字母为snl的项,此时sql语句可以这样写
SELECT * FROM Persons
WHERE City LIKE '[snl]%'
相反的,如果希望选出的项不以snl开头,此时sql语句的写法是
SELECT * FROM Persons
WHERE City LIKE '[!ALN]%'
sql in操作符
操作符 in 用在where子句中,可以规定多个值
SELECT * FROM Persons
WHERE LastName IN ('Adams','Carter')
sql between操作符
操作符between也同样用在where子句中,用于表明介于两个值之间的数据范围,这些值可以是数值,文本或者日期
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
between字符在不同数据库中的实际定义有些不一样,有的会选出包括两个值之间的值,有的不包括这两个值,在使用时要先搞清楚定义
相反的,如果要选出除去这个范围之外的所有词,则在between前面加上 not 即可
SELECT * FROM Persons
WHERE LastName
NOT BETWEEN 'Adams' AND 'Carter'
sql Alias(别名) /AS
通过Alias,可以为列名称和表名称指定别名,别名使查询程序更容易阅读和理解
表的使用
SELECT column_name(s)
FROM table_name
AS alias_name
表中列的使用
SELECT column_name AS alias_name
FROM table_name
例子
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p, Product_Orders AS po
WHERE p.LastName='Adams' AND p.FirstName='John'
如果不使用别名,此时表名就会较长,阅读难度增大
SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstName
FROM Persons, Product_Orders
WHERE Persons.LastName='Adams' AND Persons.FirstName='John'
sql join
有时需要得到更加完整的结果,需要来自多个表的信息,sql join用于根据两个表和多个表之间的关系从这些表中查询数据
数据库中的每个表都有主键(primary key),它是一个列。这个列中的所有行的值都是唯一的不能重复,可以通过一个表中包含另一个表的主键,从而将多个表捆绑在一起并且内容不重复
-
JOIN: 如果表中有至少一个匹配,则返回行
-
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
-
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
-
FULL JOIN: 只要其中一个表中存在匹配,就返回行
sql inner join=join
当表中存在至少一个匹配项时,就返回该行
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
sql left join
left join 关键字会在即使没有匹配的行的情况下,也会返回值,会从左表返回所有的行
sql right join
right join 关键字会右表 那里返回所有的行,即使在左表 中没有匹配的行。
SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
full join(存疑)
只要其中某个表存在匹配,full join关键字就会返回行
full join关键字会从左表 和右表 那里返回所有的行。如果 “Persons” 中的行在表 “Orders” 中没有匹配,或者如果 “Orders” 中的行在表 “Persons” 中没有匹配,这些行同样会列出。
sql union
union操作符用来合并两个或多个select语句的结果集合
但是值得注意的是,union内部的select语句必须具有相同数量的列,而且,列也必须具有相似的数据类型
每条select中的列顺序必须相同
SQL 高级教程
SQL Top
SQL Like
SQL 通配符
SQL In
SQL Between
SQL Aliases
SQL Join
SQL Inner Join
SQL Left Join
SQL Right Join
SQL Full Join
SQL Union
SQL Select Into
SQL Create DB
SQL Create Table
SQL Constraints
SQL Not Null
SQL Unique
SQL Primary Key
SQL Foreign Key
SQL Check
SQL Default
SQL Create Index
SQL Drop
SQL Alter
SQL Increment
SQL View
SQL Date
SQL Nulls
SQL isnull()
SQL 数据类型
SQL 服务器
SQL 函数
SQL functions
SQL avg()
SQL count()
SQL first()
SQL last()
SQL max()
SQL min()
SQL sum()
SQL Group By
SQL Having
SQL ucase()
SQL lcase()
SQL mid()
SQL len()
SQL round()
SQL now()
SQL format()
SQL 总结
SQL 快速参考
SQL 教程总结
SQL 测验
SQL 测验
建站手册
网站构建
万维网联盟 (W3C)
浏览器信息
网站品质
语义网
职业规划
网站主机
编程
Python 教程
关于 W3School
帮助 W3School
广告刊例
SQL UNION 和 UNION ALL 操作符
SQL Full Join
SQL Select Into
SQL UNION 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
SQL UNION 语法
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
默认情况下,union操作符选取不同的值,如果允许重复的值的出现,可以使用union all
UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名
sql select into
select into 语句用于创建表的备份复件
它从一个表中选取数据,然后把数据再插入另一个表中,常用于对结果进行存档或者备份
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename
与其他语句的结合用法
SELECT LastName,Firstname
INTO Persons_backup
FROM Persons
WHERE City='Beijing'
带有where子句
SELECT Persons.LastName,Orders.OrderNo
INTO Persons_Order_Backup
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
备份了两个表的信息
sql create database/db
用于创建新的数据库
CREATE DATABASE database_name
可以通过== create table==来添加数据库表
sql create table
用于添加数据库表
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
…
)
sql中常见的数据类型(data_type)
integer(size) / int(size)
smallint(size) tinyint(size)
仅容纳整数,括号内是指规定数字的最大位数
**decimal(size,d) / numeric(size,d) **
可容纳带有小数的数字,size指数字的最大为位数,d指小数点后的位数
char(size)
容纳固定长度的字符串,可以是数字,字母,和特殊字符
varchar(size)
容纳可变长度的字符串
date(yymmdd)
容纳日期
CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
创建空表之后,使用insert into写入数据