SQL的学习是基于W3School进行的,访问http://www.w3school.com.cn/sql/index.asp可获得完整且免费的学习。这份笔记中的一些实例来自于W3School,笔记由我整理。
数据操作语言 DML = Data Manipulation Language
- SELECT – 获取数据
- SELECT [列名称] FROM [表名称]
- SELECT [列名称A],[列名称B] FROM [表名称]
- SELECT * FROM [标名称]
- SELECT DISTINCT [XX] FROM [YY] – 筛选不同的值
- SELECT [列名称] FROM [标名称] WHERE [列] [运算符] [值] – 有条件地从表中选取数据
= 等于 <>不等于 >大于 <小于 >=大于等于 <=小于等于
BETWEEN 在某个范围内 LIKE 搜索某种模式
值:数值不加引号,文本加引号
- SELECT [XX] FROM [YY] WHERE [ZZ运算] AND [AA运算] – 两个条件同时成立时
- SELECT [XX] FROM [YY] WHERE [ZZ运算] OR [AA运算] – 两个条件只要其中一个成立时
- 可使用英文括号组合AND 和 OR 的条件 eg. SELECT * FROM Persons WHERE (FirstName=’Thomas’ OR FirstName=’William’) AND LastName=’Carter’
- SELECT [XX] FROM [YY] ORDER BY [ZZ] – 对结果集进行排序,默认按照升序排序
- SELECT [XX] FROM [YY] ORDER BY [ZZ] DESC – 按照降序排序;ASC 升序排序
- UPDATE – 更新数据
- UPDATE [表名称] SET [列名称] = [新值] WHERE [列名称] = [值]
- UPDATE [表名称] SET [列名称] = [新值] , [列名称] = [新值] WHERE [列名称] = [值] – 可同时修改多列数据
- DELETE – 删除数据
- DELETE FROM [表名称] WHERE [列名称] = [值] – 删除表中的某一个值
- DELETE FROM [表名称] – 删除所有行
- DELETE * FROM [表名称] – 删除所有行
- INSERT INTO – 插入数据
- INSERT INTO [表名称] VALUES (值1, 值2,….)
- INSERT INTO [表名称] (列名称1, 列名称2,…) VALUES (值1, 值2,….)
数据定义语言 DDL = Data Defination Language
CREATE DATABASE – 创建新数据库
ALTER DATABASE – 修改数据库
CREATE TABLE – 创建新表
DROP TABLE – 删除表
CREATE INDEX – 创建索引(搜索键)
DROP INDEX – 删除索引
SQL对大小写不敏感
SELECT
- TOP子句 – 规定要返回的记录的数目
- SELECT TOP 2 * FROM table_name – 筛选table_name表中前2个数据
- SELECT TOP 50 PERCENT * FROM table_name – 筛选table_name表中前50%的数据
- LIKE 操作符 – 在WHERE子句中搜索列中的指定模式 (“%”是通配符,代替一个或多个字符)
- SELECT * FROM table_name WHERE column_name LIKE ‘%N%’ – 筛选数据前后都统配“N”的内容
- SELECT * FROM table_name WHERE column_name NOT LIKE ‘%N%’ – 筛选数据不包含“N”的内容
- 通配符:
- % – 代替一个或多个字符 eg.tes%
- _ -代替一个字符 eg. A_G_B_
- [一个或多个字符] – 字符列中的任何单一字符,可配合% eg.[AGB]%
- [^一个或多个字符] 或 [!一个或多个字符]- 不在字符列中的任何单一字符,可配合%1 eg.[!AGB]%
- IN 操作符 – 在WHERE子句中规定多个值
- SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,…)
- BETWEEN AND操作符 – 在WHERE子句中选取介于两个值(数值、文本、日期)之间的数据范围
- SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
- SELECT column_name(s) FROM table_name WHERE column_name NOT BETWEEN value1 AND value2
- AS 操作符 – Alias (别名),为指定的列名称和表名称指定别名
- SELECT column_name(s) FROM table_name AS table_alias_name – 为表名称指定别名
- SELECT column_name AS column_alias_name FROM table_name – 为列名称指定别名
- JOIN 操作符 – 根据两个或多个表中列之间的关系,从这些表中查询数据
- 引用两个表做法一:eg. SELECT Persons.LastName , Persons.FrirstName , Orders.OrderNo FROM Persons , Orders WHERE Persons.Id_P = Orders.Id_P
其中Persons、Orders为两个不同的表,两个表中都有对应的Id_P - 引用两个表做法二:eg. SELECT Persons.LastName , Persons.FirstName , Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_p = Orders.Id_p ORDER BY Persons.LastName
- JOIN – 表中至少有一行匹配,则返回行
LEFT JOIN – 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN – 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN – 只要其中一个表中存在匹配,就返回行
INNER JOIN – 在表中存在至少一个匹配时,INNER JOIN 关键字返回行
- 引用两个表做法一:eg. SELECT Persons.LastName , Persons.FrirstName , Orders.OrderNo FROM Persons , Orders WHERE Persons.Id_P = Orders.Id_P
- UNION 操作符 – 合并两个或多个SELECT语句的结果集
UNION ALL 操作符 – 合并两个或多个SELECT语句的结果集,允许重复的值- SELECT column_name(s) FROM table_name
UNION
SELECT column_name(s) FROM table_name2 - SELECT column_name(s) FROM table_name
UNION ALL
SELECT column_name(s) FROM table_name2
- SELECT column_name(s) FROM table_name
- SELECT INTO 语句 – 创建备份附件
- SELECT * INTO table_backup_name FROM table_name – 将table_name表中的所有列插入新表table_backup_name
- SELECT column_name(s) INTO table_backup_name FROM table_name – 将table_name表中的column_name(s)列插入新表table_backup_name
- SELECT * INTO table_backup_name IN ‘backup.mdb’ FROM table_name – 将table_name拷贝到backup.mdb数据库中的table_backup_name表中
- SELECT Persons.Lastname , Persons.Firstname INTO Persons_Order_Backup FROM Persons INNER JOIN Orders ON Persons.Id_p = Orders.Id_p – 将JOIN后的数据导入到Persons_Order_Backup表中。
CREAT
- CREAT DATABASE 语句 – 创建数据库
- CREAT DATABASE database_name
- CREAT TABLE 语句 – 创建数据库中的表
- CREAT TABLE table_name
( column_name1 data_type, /*表名 数据类型*/
column_name2 data_type,
column_name3 data_type,
…
) - 数据类型
- 整数:integer(size),int(size),smallint(size),tinyint(size) , 括号内为最大位数,如size=255,可不写,eg. Id_P int
- 带有小数的数字:decimal(size,d),numeric(size,d),size为数字中的最大位数,d为小数点右侧的最大位数
- 固定长度字符串:char(size)
- 可变长度字符串:varchar(size)
- 日期:date(yyyymmdd)
- CREAT TABLE table_name
- SQL约束(CONSTRAINT) – NOT NULL 约束,UNIQUE / PRIMARY KEY / FOREIGN KEY 约束,CHECK 约束,DEFAULT 约束
- NOT NULL – 约束列不接受NULL值
- eg. CREAT TABLE table_name
( Id_p int NOT NULL,
order_id int(255) NOT NULL,
order_name char(20) NOT NULL,
order_address varchar(255) NOT NULL)
- eg. CREAT TABLE table_name
- UNIQUE 约束 – 约束唯一标识数据库表中的每条记录(约束数据库表中指定列的每条记录都不重复),支持每张表有多个UNIQUE约束
- 创建表时的约束
- (MySQL):
- eg. CREAT TABLE table_name
(Id_p int NOT NULL,
Lastname varchar(255) NOT NULL,
Firstname varchar(255) ,
UNIQUE (Id_p)
)
- eg. CREAT TABLE table_name
- (SQL Server / Oracle / MS Access)
- eg.CREAT TABLE table_name
(Id_p int NOT NULL,
Lastname varchar(255) NOT NULL,
Firstname varchar(255) UNIQUE
)
- eg.CREAT TABLE table_name
- (需要命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束)
- eg.CREAT TABLE table_name
(Id_p int NOT NULL,
Lastname varchar(255) NOT NULL,
Firstname varchar(255) ,
CONSTRAINT uc_PersonID UNIQUE (Id_p,Lastname)
)
- eg.CREAT TABLE table_name
- (MySQL):
- 修改已创建的表的约束
- 对档案列进行约束:
- eg. ALTER TABLE Persons ADD UNIQUE (Id_p)
- 需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束:
- eg. ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (Id_p,Lastname)
- eg. ALTER TABLE Persons
- 对档案列进行约束:
- 撤销约束
- (MySQL):
- eg. ALTER TABLE Persons
DROP INDEX uc_PersonID
- eg. ALTER TABLE Persons
- (SQL Server / Oracle / MS Access):
- eg. ALTER TALBE Persons
DROP CONSTAINT uc_PersonID
- eg. ALTER TALBE Persons
- (MySQL):
- 创建表时的约束
- PRIMARY KEY 约束 – 约束唯一标识数据库表中的每条记录。主键必须包含唯一的值,主键列不能包含NULL值,每个表必须有且只有一个主键。
- 创建表时的约束
- (MySQL):
- eg. CREAT TABLE table_name
(Id_p int NOT NULL,
Lastname varchar(255) NOT NULL,
Firstname varchar(255) NOT NULL,
PRIMARY KEY (Id_p)
)
- eg. CREAT TABLE table_name
- (SQL Server / Oracle / MS Access)
- eg.CREAT TABLE table_name
(Id_p int NOT NULL,
Lastname varchar(255) NOT NULL,
Firstname varchar(255) NOT NULL PRIMARY KEY,
)
- eg.CREAT TABLE table_name
- (需要命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束)
- CREAT TALBE table_name
(Id_p int NOT NULL,
Lastname varchar(255) NOT NULL,
Firstname varchar(255) NOT NULL,
CONSTRAINT pk_PersonID PRIMARY KEY (Id_p,Lastname)
)
- CREAT TALBE table_name
- (MySQL):
- 修改已创建的表的约束
- 对单个列进行约束:
- eg.ALTER TABLE table_name ADD PRIMARY KEY (Id_p)
- 需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束:
- eg. ALTER TABLE table_name
ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_p,Lastname)
- eg. ALTER TABLE table_name
- 对单个列进行约束:
- 撤销约束
- (MySQL):
- eg.ALTER TABLE table_name DROP PRIMARY KEY
- (SQL Server / Oracle / MS Access):
- eg.ALTER TABLE table_name
DROP CONSTRAINT pk_PersonID
- eg.ALTER TABLE table_name
- (MySQL):
- 创建表时的约束
- FOREIGN KEY 约束 – 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。预防破坏两个表之间连接的动作,防止非法数据插入外键列,确保表中某个列的值指向外键。
- 创建表时的约束
- (MySQL):
- eg. CREAT TABLE table_name
(Id_p int(255) NOT NULL,
Id_o int(255) NOT NULL,
Lastname varchar(255) NOT NULL,
Firstname varchar(255) NOT NULL,
PRIMARY KEY (Id_p), /*指向的列必须是被PRIMARY KEY约束*/
FOREIGN KEY (Id_o) REFERENCES other_table_name(Id_p)
)
- eg. CREAT TABLE table_name
- (SQL Server / Oracle / MS Access):
- eg.CREAT TABLE table_name
(Id_p int(255) NOT NULL PRIMARY KEY,
Id_o int(255) NOT NULL FOREIGN KEY REFERENCES other_table_name (Id_p)
)
- eg.CREAT TABLE table_name
- 需要命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束
- eg. CREAT TALBE table_name
( Id_p int(255) NOT NULL,
Id_o int(255) NOT NULL,
Lastname varchar(255) NOT NULL,
PRIMARY KEY (Id_o)
CONSRAINT uk_person FOREIGN KEY (Id_p)
REFERENCES other_table_name (Id_p)
- eg. CREAT TALBE table_name
- (MySQL):
- 修改已创建的表的约束
- 对单个列进行约束
- eg. ALTER TALBE table_name
ADD FOREIGN KEY (Id_p)
REFERENCES other_table_name (Id_o)
- eg. ALTER TALBE table_name
- 需要命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束
- eg. ALTER TABLE table_name
ADD CONSTRAINT uk_person
FOREIGN KEY (Id_p)
REFERENCES other_table_name (Id_o)
- eg. ALTER TABLE table_name
- 对单个列进行约束
- 删除约束
- (MySQL):
- eg .ALTER TABLE table_name
DROP FOREIGN KEY uk_persons
- eg .ALTER TABLE table_name
- (SQL Server / Oracle / MS Access):
- eg .ALTER TABLE table_name
DROP CONSTRAINT uk_persons
- eg .ALTER TABLE table_name
- (MySQL):
- 创建表时的约束
- CHECK 约束 – 限制列中的值的范围。如果对一个表定义CHECK约束,则此约束会对表中特定的列的值进行限制。
- 创建表时的约束
- (MySQL):
- eg. CREAT TABLE table_name
( Id_p int(255) NOT NULL,
Lastname varchar(255) NOT NULL,
Firstname varchar(255) NOT NULL,
CHECK(Id_p>0)
)
- eg. CREAT TABLE table_name
- (SQL Server / Oracle / MS Access):
- eg. CREAT TABLE table_name
(Id_p int(255) NOT NULL CHECK(Id_p>0),
Lastname varchar(255) NOT NULL,
Firstname varchar(255) NOT NULL
)
- eg. CREAT TABLE table_name
- (需要命名 CHECK 约束,以及为多个列定义 CHECK 约束):
- eg . CREAT TABLE table_name
(Id_p int(255) NOT NULL,
Lastname varchar(255) NOT NULL,
Firstname varchar(255) NOT NULL,
CONSTRAINT chk_person CHECK (Id_p>0 AND Lastname=’Smith’)
)
- eg . CREAT TABLE table_name
- (MySQL):
- 修改已创建的表的约束
- 对单个表进行约束
- eg .ALTER TABLE table_name
ADD CHECK (Id_p>0)
- eg .ALTER TABLE table_name
- 需要命名 CHECK 约束,以及为多个列定义 CHECK 约束
- eg. ALTER TABLE table_name
ADD CONSTRAINT chk_person CHECK (Id_p>0 AND Lastname=’Smith’)
- eg. ALTER TABLE table_name
- 对单个表进行约束
- 删除约束
- (MySQL):
- eg. ALTER TABLE table_name
DROP CHECK chk_person
- eg. ALTER TABLE table_name
- (SQL Server / Oracle / MS Access):
- eg.ALTER TABLE table_name
DROP CONSTRAINT chk_person
- eg.ALTER TABLE table_name
- (MySQL):
- 创建表时的约束
- DEFAULT 约束 – 向列中插入默认值。如果没有规定其他的值,则将默认值添加到所有新纪录。
- 创建表时的约束
- MySQL / SQL Server / Oracle / MS Access
- eg. CREAT TABLE table_name
(Id_p int(255) NOT NULL,
Lastname varchar(255) NOT NULL,
Firstname varchar(255) DEFAULT ‘Peter’ /*插入固定值*/
) - eg.CREAT TABLE table_name
(Id_p int(255) NOT NULL,
Lastname varchar(255) NOT NULL,
add_date date DEFAULT GETDATE() /*插入系统值*/
)
- eg. CREAT TABLE table_name
- MySQL / SQL Server / Oracle / MS Access
- 修改已创建的表的约束
- (MySQL):
- eg. ALTER TABLE table_name
ALTER Lastname SET DEFAULT ‘Smith’
- eg. ALTER TABLE table_name
- (SQL Server / Oracle / MS Access):
- eg. ALTER TABLE table_name
ALTER COLUMN Lastname SET DEFAULT ‘Smith’
- eg. ALTER TABLE table_name
- (MySQL):
- 删除约束
- (MySQL):
- eg. ALTER TABLE table_name
ALTER Lastname DROP DEFAULT
- eg. ALTER TABLE table_name
- (SQL Server / Oracle / MS Access):
- eg. ALTER TABLE table_name
ALTER COLUMN Lastname DROP DEFAULT
- eg. ALTER TABLE table_name
- (MySQL):
- 创建表时的约束
- NOT NULL – 约束列不接受NULL值
- AUTO INCREMENT 字段 – 每次插入新纪录时,自动地创建主键字段的值
- (MySQL):使用AUTO_INCREMENT
CREAT TABLE table_name
(P_id int NOT NULL AUTO_INCREMENT, /*记得带下划线。AUTO_INCREMENT默认开始值为1,每次递增1*/
Lastname varchar(255) NOT NULL,
Firstname varchar(255) NOT NULL,
PRIMARY KEY (P_id)
)CREAT TABLE table_name
(P_id int(255) NOT NULL AUTO_INCREMENT=100, /*规定初始值,每次递增1*/
Lastname varchar(255) NOT NULL,
Firstname varchar(255) NOT NULL,
PRIMARY KEY (P_id)
) - (SQL Server):使用IDENTITY
CREAT TABLE table_name
(P_id int NOT NULL PRIMARY KEYIDENTITY, /*使用IDENTITY*/
Lastname varchar(255) NOT NULL,
Firstname varchar(255) NOT NULL,
)CREAT TABLE table_name
(P_id int PRIMARY KEY IDENTITY(20,10), /*使用IDENTITY,规定初始值=20、每次递增数量=10*/
Lastname varchar(255) NOT NULL,
Firstname varchar(255) NOT NULL,
) - (ACCESS):使用AUTOINCREMENT
CREAT TABLE table_name
(P_id int PRIMARY KEY AUTOINCREMENT(20,10), /*使用IDENTITY,规定初始值=20、每次递增数量=10;也可不规定初始值和每次递增的数量*/
Lastname varchar(255) NOT NULL,
Firstname varchar(255) NOT NULL,
) - (ORACLE):略微复杂
CREAT SEQUENCE seq_person
MINVALUE 1
START WITH 1 /*起始值为1*/
INCREMENT BY 1 /*每次增加1*/
CACHE 10 /*为了提高访问速度需要缓存10个序列值*/
- (MySQL):使用AUTO_INCREMENT
- SQL VIEW(视图) – 基于SQL语句结果集的可视化的表
- CREAT VIEW语法 – 创建视图
- CREAT VIEW [view_name] AS /*创建视图*/
SELECT column_name(s) FROM table_name WHERE condition- eg. CREAT VIEW [Current Product List ] AS
SELECT ProductsID,ProductsName FROM Products WHERE Discontinued=No /*创建一个名字为[Current Product List]的视图*/ - eg .CREATE VIEW [Products Above Average Price] AS
SELECT ProductName,UnitPrice
FROM Products
WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products)
- eg. CREAT VIEW [Current Product List ] AS
- SELECT * FROM [view_name] /*查询该视图*/
- CREAT VIEW [view_name] AS /*创建视图*/
- 展示视图
- SELECT * FROM [view_name]
- 更新视图
- CREAT VIEW view_name AS
SELECT column_name(s) FROM table_name WHERE condition - REPLACE VIEW view_name AS
SELECT column_name(s) FROM table_name WHERE condition
- CREAT VIEW view_name AS
- 撤销视图
- DROP VIEW view_name
- CREAT VIEW语法 – 创建视图
- CREAT INDEX – 创建索引,以便快速查找数据
更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。- CREAT INDEX – 创建索引,允许重复的值
- eg. CREAT INDEX index_name
ON table_name (column_name1 , column_name2) /*每次可索引多个列*/
- eg. CREAT INDEX index_name
- CREAT UNIQUE INDEX – 创建索引,不允许重复的值
- eg. CREAT UNIQUE INDEX index_name
ON table_name (column_name DSEC) /*可加DSEC进行降序排列*/
- eg. CREAT UNIQUE INDEX index_name
- CREAT INDEX – 创建索引,允许重复的值
- DROP – 撤销索引、表及数据库
- 撤销索引
- (Microsoft SQLJet (以及 Microsoft Access) ):
- eg. DROP INDEX index_name ON table_name
- (MS SQL Server):
- eg. DROP INDEX table_name.index_name
- (IBM DB2 和 Oracle):
- eg. DROP INDEX index_name
- (MySQL):
- ALTER TABLE table_name DROP INDEX index_name
- (Microsoft SQLJet (以及 Microsoft Access) ):
- 撤销表
- DROP TABLE table_name
- 撤销数据库
- DROP DATABASE database_name
- 清除表内数据而不删除表
- TRUNCATE TABLE table_name
- 相关联:DELETE * FROM table_name
DELETE FROM table_name FROM column = key
- 撤销索引
ALTER – 在已有的表中添加、修改、删除列
- 添加列
- ALTER TABLE table_name
ADD column_name datatype - 相关联:插入新行 INSERT INTO table_name VALUES (value1,value2,…)
插入数据时指定列 INSERT INTO table_name (column_name1,column_name2,…) VALUES (value1,value2,…)
- ALTER TABLE table_name
- 删除列
- ALTER TABLE table_name
DROP COLUMN column_name /*某些数据库不允许这种语法*/
- ALTER TABLE table_name
- 改变数据类型
- ALTER TABLE table_name
ALTER COLUMN column_name datatype - 相关联:修改表中数据 UPDATE table_name SET column_name = key WHERE column_name = oldkey
- ALTER TABLE table_name
NULL值
- NULL用作未知的或不适用的值的占位符,NULL值不与0等价。
- 选取某一列的NULL值:
SELECT column_name(s) FROM table_name WHERE column_name IS NULL - 选取某一列不带NULL值:
SELECT column_name(s) FROM table_name WHERE column_name IS NOT NULL - NULL函数
- ISNULL() ——SQL Server / MS Access —— ISNULL(列名称,当值为NULL时的赋值)
- NVL() —— Oracle —— NVL(列名称,当值为NULL时的赋值)
- IFNULL() ——MySQL —— IFNULL(列名称,当值为NULL时的赋值)
- COALESCE() ——MySQL —— COALESCE(列名称,当值为NULL时的赋值)
- SELECT ProductName , UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0)) FROM Products
SQL函数
SELECT function(column_name) FROM table_name
- 合计函数(Aggregate functions):面向一系列的值,并返回一个单一的值
- Scalar 函数:面向单一的值,并返回一个单一的值
- AVG() – 数列平均值(不包含NULL)
- SELECT AVG(column_name) FROM table_name
- eg. SELECT AVG(OrderPrice) AS OrderAverage FROM Orders
- eg. SELECT Customer FROM Orders WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders )
- SELECT AVG(column_name) FROM table_name
- COUNT() – 匹配指定条件的行数
- SELECT COUNT(column_name) AS alias_name FROM table_name /*指定列的值的数目(NULL不计入)*/
- SELECT COUNT(*) AS alias_name FROM table_name /*表中的所有记录数*/
- SELECT COUNT(DISTINCT column_name) AS alias_name FROM table_name /*指定列不同值的数目*/
- FIRST() – 指定字段中的第一个记录的值(可用ORDER BY进行排序)
- SELECT FIRST(column_name) AS alias_name FROM table_name
- LAST() – 指定字段中的最后一个值(可用ORDER BY进行排序)
- SELECT LAST (column_name) AS alias_name FROM table_name
- MAX() – 指定列的最大值(支持文本列,不包含NULL)
- SELECT MAX(column_name) AS alias_name FROM table_name
- MIN() – 指定列的最小值(支持文本列,不包含NULL)
- SELECT MIN(column_name) AS alias_name FROM table_name
- SUM() – 返回数值列的总数(总额)
- SELECT SUM(column_name) AS alias_name FROM table_name
- GROUP BY 语句 – 用于结核和基函数,根据一个或多个列对结果集进行分组
- SELECT column_name(可多个), aggregate_function(column_name)
FROM table_name
WHERE [筛选条件]
GROUP BY column_name- eg. SELECT FirstName,LastName,SUM(OrderPrice) FROM OrderList GROUP BY LastName
- SELECT column_name(可多个), aggregate_function(column_name)
- HAVING 子句 – WHERE 关键字无法与合计函数一起使用,HAVING子句可以和合计函数一起使用
- eg. SELECT FirstName,LastName,SUM(OrderPrice) FROM OrderList WHERE FirstName=’Peter’ OR LastName=’Smith’ GROUP BY LastName HAVING SUM(OrderPrice)>1000
- UCASE() – 把字段的值转换为大写
- LCASE() – 把字段的值转换为小写
- MID() – 从文本中提取字符
- SELECT MID(column_name,start[,length]) FROM table_name
- eg. SELECT MID(LastName,1,3) FROM table_name /*选择第1到第3个字符*/
- SELECT MID(column_name,start[,length]) FROM table_name
- LEN() – 返回文本字段值的长途
- SELECT LEN(column_name) AS alias_name FROM table_name
- ROUND() – 把数值字段舍入为指定的小数位数
- SELECT ROUND(column_name,decimals) FROM table_name
- eg.SELECT GoodsName , ROUND(GoodsPrice,0) AS GoodsPrice FROM Products /*将小数位舍入到0位*/
- SELECT ROUND(column_name,decimals) FROM table_name
- NOW() – 返回当前的日期和时间( SQL Server 使用 getdate()函数)
- FORMAT() – 对字段的显示进行格式化
- SELECT FORMAT(column,format) FROM table_name
- eg. SELECT ProductsName,ProductsPrice,FORMAT(NOW(),’YYYY-MM-DD’) AS ProducetsPrices FROM Products
- SELECT FORMAT(column,format) FROM table_name
发表回复