as表示一种别名
一定要记住,SQL 对大小写不敏感!
1、drop
通过使用 DROP 语句,可以轻松地删除索引、表和数据库。
ALTER TABLE table_name DROP INDEX index_name
DROP TABLE 表名称
DROP DATABASE 数据库名称
如果我们仅仅需要除去表内的数据,但并不删除表本身
TRUNCATE TABLE 表名称
2、ALTER TABLE 语句用于在已有的表中添加、修改或删除列。
如需在表中添加列,请使用下列语法:
ALTER TABLE table_name
ADD column_name datatype
要删除表中的列,请使用下列语法:
ALTER TABLE table_name
DROP COLUMN column_name
要改变表中列的数据类型,请使用下列语法:
ALTER TABLE table_name
ALTER COLUMN column_name datatype
3、Auto-increment 会在新记录插入表中时生成一个唯一的数字。
默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。
要让 AUTO_INCREMENT 序列以其他的值起始,请使用下列 SQL 语法:
ALTER TABLE table_name AUTO_INCREMENT=100
该值不用设置,会自动生成
用于 MySQL 的语法
AUTO_INCREMENT
用于 SQL Server 的语法
IDENTITY
列以 20 起始且递增 10,请把 autoincrement 改为 IDENTITY(20,10)
用于 Access 的语法
AUTOINCREMENT
列以 20 起始且递增 10,请把 autoincrement 改为 AUTOINCREMENT(20,10)
用于 Oracle 的语法
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
上面的代码创建名为 seq_person 的序列对象,它以 1 起始且以 1 递增。该对
象缓存 10 个值以提高性能
要在 "Persons" 表中插入新记录,我们必须使用 nextval 函数(该函数从
seq_person 序列中取回下一个值):
INSERT INTO Persons (P_Id,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')
4、CREATE VIEW 语句
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库
中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语
句,我们也可以提交数据,就像这些来自于某个单一的表。是一段查询语句的别
名。
SQL CREATE VIEW 语法:
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
调用:SELECT * FROM view_name where condition
SQL 更新视图:
SQL CREATE OR REPLACE VIEW Syntax
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
5、NULL 值
请始终使用 IS NULL 来查找 NULL 值
请始终使用 IS NOT NULL 来查找 非NULL 值
6、AVG 函数
返回数值列的平均值。NULL 值不包括在计算中。
SQL AVG() 语法:
SELECT AVG(column_name) FROM table_name
7、COUNT()函数返回匹配指定条件的行数。
SELECT COUNT(column_name) FROM table_name
SQL COUNT(*) 函数返回表中的记录数,所有行数:
SELECT COUNT(*) FROM table_name
COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:
SELECT COUNT(DISTINCT column_name) FROM table_name
8、FIRST() 函数返回指定的字段中第一个记录的值,可使用 ORDER BY 语句对
记录进行排序。LAST()类似。
SQL FIRST() 语法
SELECT FIRST(column_name) FROM table_name
9、MAX() 函数,MIN()类似
MAX 函数返回一列中的最大值。NULL 值不包括在计算中。
SQL MAX() 语法
SELECT MAX(column_name) FROM table_name
注释:MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值
10、SUM() 函数
SUM 函数返回数值列的总数(总额)。
SQL SUM() 语法
SELECT SUM(column_name) FROM table_name
11、GROUP BY 语句
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
GROUP BY 语法
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
我们也可以对一个以上的列应用 GROUP BY 语句,GROUP BY column_name1,
column_name2
12、HAVING 子句
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用,
所以其功能类似where。
SQL HAVING 语法
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
13、UCASE() 函数
UCASE 函数把字段的值转换为大写,LCASE() 类似。
UCASE() 语法
SELECT UCASE(column_name) FROM table_name
14、MID() 函数
MID 函数用于从文本字段中提取字符。
MID() 语法
SELECT MID(column_name,start[,length]) FROM table_name
注:索引从1开始,不是0!!!
column_name 必需。要提取字符的字段。
start 必需。规定开始位置(起始值是 1)。
length 可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。
15、LEN() 函数
LEN 函数返回文本字段中值的长度。
LEN() 语法
SELECT LEN(column_name) FROM table_name
16、ROUND() 函数
ROUND 函数用于把数值字段舍入为指定的小数位数。
ROUND() 语法
SELECT ROUND(column_name,decimals) FROM table_name
注:
column_name 必需。要舍入的字段。
decimals 必需。规定要返回的小数位数,0为无小数。
17、NOW() 函数
NOW 函数返回当前的日期和时间。
提示:如果您在使用 Sql Server 数据库,请使用 getdate() 函数来获得当前
的日期时间。
NOW() 语法
SELECT NOW() FROM table_name
18、FORMAT() 函数
FORMAT 函数用于对字段的显示进行格式化。
FORMAT() 语法
SELECT FORMAT(column_name,format) FROM table_name
注:
column_name 必需。要格式化的字段。
format 必需。规定格式。
19、TOP 子句
TOP 子句用于规定要返回的记录的数目,也可以是百分比。
SQL Server 的语法:
SELECT TOP number|percent column_name(s)
FROM table_name
"*"为全部
20、LIKE 操作符
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
LIKE 操作符语法,NOT like类似
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
提示:"%" 可用于定义通配符(模式中缺少的字母)。
21、SQL 通配符
在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。
SQL 通配符必须与 LIKE 运算符一起使用。
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist]或者[!charlist] 不在字符列中的任何单一字符
如我们希望从表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人:
SELECT * FROM Persons
WHERE City LIKE '[ALN]%'
22、IN 操作符
IN 操作符允许我们在 WHERE 子句中规定多个值。
IN 语法
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
类似:WHERE column_name=value1 or column_name=value2 or...)
23、BETWEEN 操作符,取反为NOT BETWEEN 操作符
操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数
值、文本或者日期。
BETWEEN 语法
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
重要事项:不同的数据库对 BETWEEN...AND 操作符的处理方式是有差异的。某
些数据库会列出介于 "Adams" 和 "Carter" 之间的人,但不包括 "Adams" 和
"Carter" ;某些数据库会列出介于 "Adams" 和 "Carter" 之间并包括 "Adams"
和 "Carter" 的人;而另一些数据库会列出介于 "Adams" 和 "Carter" 之间的
人,包括 "Adams" ,但不包括 "Carter" 。
所以,请检查你的数据库是如何处理 BETWEEN....AND 操作符的!
24、Alias,可以为列名称和表名称指定别名(Alias)
表的 Alias 语法
SELECT column_name(s)
FROM table_name
AS alias_name
列的 Alias 语法
SELECT column_name AS alias_name
FROM table_name
25、join,使用on连接符
JOIN: 如果表中有至少一个匹配,则返回行,同inner join
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行,右表没有的为空
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行,左表没有的为空
FULL JOIN: 只要其中一个表中存在匹配,就返回行,左表或右表没有的为空
26、INNER JOIN 关键字
在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
INNER JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
27、LEFT JOIN 关键字
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表
(table_name2) 中没有匹配的行,右表没有的为空。
LEFT JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注释:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。
28、RIGHT JOIN 关键字
RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表
(table_name1) 中没有匹配的行,左表没有的为空。
RIGHT JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。
29、FULL JOIN 关键字
只要其中某个表存在匹配,FULL JOIN 关键字就会返回行,左表或右表没有的为
空。
FULL JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注释:在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。
30、UNION 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似
的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
UNION 语法
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION
ALL,Utable_name1先列出,table_name2后列出。
31、SELECT INTO 语句
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
SELECT INTO 语法
SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename
32、CREATE DATABASE 语句
CREATE DATABASE 用于创建数据库。
CREATE DATABASE 语法
CREATE DATABASE database_name
33、CREATE TABLE 语句
CREATE TABLE 语句用于创建数据库中的表。
SQL CREATE TABLE 语法
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
也可先创建表,再用INSERT INTO 语句向空表写入数据
数据类型与描述
integer(size)
int(size)
smallint(size)
tinyint(size)
仅容纳整数。在括号内规定数字的最大位数。
decimal(size,d)
numeric(size,d)
容纳带有小数的数字。"size" 规定数字的最大位数。"d" 规定小数点右侧的最
大位数。
char(size)
容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。在括号中规定字符
串的长度。
varchar(size)
容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。在括号中规定字
符串的最大长度。
date(yyyymmdd) 容纳日期。
34、NOT NULL 约束
NOT NULL 约束强制列不接受 NULL 值
35、UNIQUE 约束
UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY
约束。
36、PRIMARY KEY 约束
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。
修改:
ALTER TABLE Persons
ADD PRIMARY KEY (column name)
37、FOREIGN KEY 约束
一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
FOREIGN KEY 约束用于预防破坏表之间连接的动作。
FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表
中的值之一。
column_name datatype FOREIGN KEY REFERENCES table_name2(column_name)
38、CHECK 约束
CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
check(condition)
38、DEFAULT 约束
DEFAULT 约束用于向列中插入默认值。
如果没有规定其他的值,那么会将默认值添加到所有的新记录。
39、索引
您可以在表中创建索引,以便更加快速高效地查询数据。
用户无法看到索引,它们只能被用来加速搜索/查询。
注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由
于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)
上面创建索引。
CREATE INDEX 语法
在表上创建一个简单的索引。允许使用重复的值:
CREATE INDEX index_name
ON table_name (column_name)
不能重复为CREATE UNIQUE INDEX
40、SELECT 语句
SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
SELECT 语法
SELECT 列名称 FROM 表名称
以及:
SELECT * FROM 表名称
41、SELECT DISTINCT 语句
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不
同(distinct)的值。
关键词 DISTINCT 用于返回唯一不同的值。
语法:
SELECT DISTINCT 列名称 FROM 表名称
42、WHERE 子句
如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。
语法
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式
注释:在某些版本的 SQL 中,操作符 <> 可以写为 !=。
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值
,请不要使用引号。
43、ORDER BY 语句
ORDER BY 语句用于根据指定的列对结果集进行升序排序,等价asc。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
ORDER BY column_name (desc)
44、INSERT INTO 语句
INSERT INTO 语句用于向表格中插入新的行。
语法:
INSERT INTO table_name VALUES (值1, 值2,....)
我们也可以指定所要插入数据的列:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
45、Update 语句
Update 语句用于修改表中的数据。
语法:
UPDATE table_name SET column_name1 = 新值 WHERE column_name2 = 旧值
column_name1可以是column_name2,也可以不是
46、DELETE 语句
DELETE 语句用于删除表中的行。
语法
DELETE FROM table_name WHERE column_name = 值
删除所有行
可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完
整的:
DELETE FROM table_name
或者:
DELETE * FROM table_name
删除表为drop
总结:
SQL 语句
语句
语法
AND / OR
SELECT column_name(s)
FROM table_name
WHERE condition
AND|OR condition
ALTER TABLE (add column)
ALTER TABLE table_name
ADD column_name datatype
ALTER TABLE (drop column)
ALTER TABLE table_name
DROP COLUMN column_name
AS (alias for column)
SELECT column_name AS column_alias
FROM table_name
AS (alias for table)
SELECT column_name
FROM table_name AS table_alias
BETWEEN
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
CREATE DATABASE
CREATE DATABASE database_name
CREATE INDEX
CREATE INDEX index_name
ON table_name (column_name)
CREATE TABLE
CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
.......
)
CREATE UNIQUE INDEX
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
CREATE VIEW
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
DELETE FROM
DELETE FROM table_name
(Note: Deletes the entire table!!)
or
DELETE FROM table_name
WHERE condition
DROP DATABASE
DROP DATABASE database_name
DROP INDEX
DROP INDEX table_name.index_name
DROP TABLE
DROP TABLE table_name
GROUP BY
SELECT column_name1,SUM(column_name2)
FROM table_name
GROUP BY column_name1
HAVING
SELECT column_name1,SUM(column_name2)
FROM table_name
GROUP BY column_name1
HAVING SUM(column_name2) condition value
IN
SELECT column_name(s)
FROM table_name
WHERE column_name
IN (value1,value2,..)
INSERT INTO
INSERT INTO table_name
VALUES (value1, value2,....)
or
INSERT INTO table_name
(column_name1, column_name2,...)
VALUES (value1, value2,....)
LIKE
SELECT column_name(s)
FROM table_name
WHERE column_name
LIKE pattern
ORDER BY
SELECT column_name(s)
FROM table_name
ORDER BY column_name [ASC|DESC]
SELECT
SELECT column_name(s)
FROM table_name
SELECT *
SELECT *
FROM table_name
SELECT DISTINCT
SELECT DISTINCT column_name(s)
FROM table_name
SELECT INTO
(used to create backup copies of tables)
SELECT *
INTO new_table_name
FROM original_table_name
or
SELECT column_name(s)
INTO new_table_name
FROM original_table_name
TRUNCATE TABLE
(deletes only the data inside the table)
TRUNCATE TABLE table_name
UPDATE
UPDATE table_name
SET column_name=new_value
[, column_name=new_value]
WHERE column_name=some_value
WHERE
SELECT column_name(s)
FROM table_name
WHERE condition