SQL
SQL 对大小写不敏感.
某些数据库系统要求在每条 SQL 命令的末端使用分号。
可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。
•SELECT - 从数据库表中获取数据
•UPDATE - 更新数据库表中的数据
•DELETE - 从数据库表中删除数据
•INSERT INTO - 向数据库表中插入数据
•CREATE DATABASE - 创建新数据库
•ALTER DATABASE - 修改数据库
•CREATE TABLE - 创建新表
•ALTER TABLE - 变更(改变)数据库表
•DROP TABLE - 删除表
•CREATE INDEX - 创建索引(搜索键)
•DROP INDEX - 删除索引
SELECT 列名称 FROM 表名称
SELECT DISTINCT 语句
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)
的值。
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 AND 列 运算符 值
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 OR 列 运算符 值
ORDER BY 语句用于对结果集进行排序。
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 AND 列 运算符 值 ORDER BY 列 DESC
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 AND 列 运算符 值 ORDER BY 列 ASC
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
DELETE FROM 表名称 WHERE 列名称 = 值
SELECT TOP number|percent column_name(s) FROM table_name
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern
LIKE '_eorge'
表中选取第一个字符之后是 "eorge" 的
LIKE '[ALN]%'
选取 "A" 或 "L" 或 "N" 开头
表中选取不以 "A" 或 "L" 或 "N" 开头的:
LIKE '[!ALN]%'
SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...)
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON
table_name1.column_name=table_name2.column_name
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中
没有匹配的行。
SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON
table_name1.column_name=table_name2.column_name
RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中
没有匹配的行。
SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON
table_name1.column_name=table_name2.column_name
只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON
table_name1.column_name=table_name2.column_name
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
SELECT column_name(s) FROM table_name1
UNION UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。
SELECT column_name(s) FROM table_name2
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT *INTO new_table_name [IN externaldatabase] FROM old_tablename
SELECT column_name(s) INTO new_table_name [IN externaldatabase] FROM old_tablename
CREATE DATABASE 用于创建数据库。
CREATE DATABASE database_name
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
NOT NULL 约束
NOT NULL 约束强制列不接受 NULL 值。
每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
PRIMARY KEY 约束
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
CHECK 约束
CHECK 约束用于限制列中的值的范围。
DEFAULT 约束用于向列中插入默认值。
如果没有规定其他的值,那么会将默认值添加到所有的新纪录。
如需撤销 DEFAULT 约束
DROP DEFAULT
CREATE INDEX index_name
ON table_name (column_name)
DROP 语句,可以轻松地删除索引、表和数据库。
DROP TABLE 表名称
DROP INDEX index_name ON table_name
DROP DATABASE 数据库名称
仅需要除去表内的数据,但并不删除表本身
TRUNCATE TABLE 表名称
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
MS SQL 使用 IDENTITY 关键字来执行 auto-increment 任务
SQL DROP VIEW Syntax
DROP VIEW view_name
在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。
GETDATE() 返回当前日期和时间
DATEPART() 返回日期/时间的单独部分
DATEADD() 在日期中添加或减去指定的时间间隔
DATEDIFF() 返回两个日期之间的时间
CONVERT() 用不同的格式显示日期/时间
•DATE - 格式 YYYY-MM-DD
•DATETIME - 格式: YYYY-MM-DD HH:MM:SS
•SMALLDATETIME - 格式: YYYY-MM-DD HH:MM:SS
•TIMESTAMP - 格式: 唯一的数字
使用 IS NULL 来查找 NULL 值。
IS NOT NULL to get 不带有 NULL 值的记录
datetime 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒。 8 bytes
datetime2 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒。 6-8 bytes
smalldatetime 从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟。 4 bytes
date 仅存储日期。从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。 3 bytes
time 仅存储时间。精度为 100 纳秒。 3-5 bytes
datetimeoffset 与 datetime2 相同,外加时区偏移。 8-10 bytes
timestamp 存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 基于内部时钟
,不对应真实时间。每个表只能有一个 timestamp 变量。
AVG(column) 返回某列的平均数
BINARY_CHECKSUM
CHECKSUM
CHECKSUM_AGG
COUNT(column) 返回某列的行数(不包括NULL值)
COUNT(*) 返回被选行数
COUNT(DISTINCT column) 返回相异结果的数目
FIRST(column) 返回在指定的域中第一个记录的值(SQLServer2000 不支持)
LAST(column) 返回在指定的域中最后一个记录的值(SQLServer2000 不支持)
MAX(column) 返回某列的最高值
MIN(column) 返回某列的最低值
STDEV(column)
STDEVP(column)
SUM(column) 返回某列的总和
VAR(column)
VARP(column)
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
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
UCASE 函数把字段的值转换为大写。
LCASE 函数把字段的值转换为小写。
SELECT MID(column_name,start[,length]) FROM table_name
LEN 函数返回文本字段中值的长度。
SELECT ROUND(column_name,decimals) FROM table_name
SELECT ProductName, UnitPrice, Now() as PerDate FROM Products
Select Now() as column From Table
使用上,想删除部分数据行用
delete from Tablename, 注意带上where子句.
想删除表,当然用
drop table Tablename
想保留表而将所有数据删除. 如果和事务无关,用
truncate table Tablename 即可. (Key item = 0)
如果和事务有关,或者想触发trigger,还是用
delete from Tablename. (Key item remains)