sql学习笔记

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值