1、SQL DML 和 DDLmysql
能够把 SQL 分为两个部分:数据操做语言 (DML) 和 数据定义语言 (DDL)。SQL (结构化查询语言)是用于执行查询的语法。可是 SQL 语言也包含用于更新、插入和删除记录的语法。sql
查询和更新指令构成了 SQL 的 DML 部分:数据库
SQL 的数据定义语言 (DDL) 部分使咱们有能力建立或删除表格。咱们也能够定义索引(键),规定表之间的连接,以及施加表间的约束。函数
SQL 中最重要的 DDL 语句:spa
2、select语句orm
SELECT 列名称 FROM 表名称 --*表示全部排序
SELECT DISTINCT 列名称 FROM 表名称 --去掉重复索引
3、where子句ci
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值字符串
下面的运算符可在 WHERE 子句中使用:
操做符 |
描述 |
= |
等于 |
<> |
不等于 |
> |
大于 |
< |
小于 |
>= |
大于等于 |
<= |
小于等于 |
BETWEEN |
在某个范围内 |
LIKE |
搜索某种模式 |
注释:在某些版本的 SQL 中,操做符 <> 能够写为 !=。
4、oderby 子句
ORDER BY 语句用于对结果集进行排序。
DESC 降序 ASC 升序
5、insert语句
INSERT INTO 表名称 VALUES (值1, 值2,....)
6、update语句
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
7、delete语句
DELETE FROM 表名称 WHERE 列名称 = 值
8、Top子句
SELECT TOP number|percent column_name(s)
FROM table_name
9、like操做符
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
SQL 通配符必须与 LIKE 运算符一块儿使用。
在 SQL 中,可以使用如下通配符:
通配符 |
描述 |
% |
替代一个或多个字符 |
_ |
仅替代一个字符 |
[charlist] |
字符列中的任何单一字符 |
[^charlist] 或者 [!charlist] |
不在字符列中的任何单一字符 |
10、in 操做符
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
11、between 操做符
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
如需使用上面的例子显示范围以外的人,请使用 NOT 操做符
12、Join
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P
十3、inner join
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注释:INNER JOIN 与 JOIN 是相同的。
十4、left join
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
原始的表 (用在例子中的):
"Persons" 表:
Id_P |
LastName |
FirstName |
Address |
City |
1 |
Adams |
John |
Oxford Street |
London |
2 |
Bush |
George |
Fifth Avenue |
New York |
3 |
Carter |
Thomas |
Changan Street |
Beijing |
"Orders" 表:
Id_O |
OrderNo |
Id_P |
1 |
77895 |
3 |
2 |
44678 |
3 |
3 |
22456 |
1 |
4 |
24562 |
1 |
5 |
34764 |
65 |
左链接(LEFT JOIN)实例
如今,咱们但愿列出全部的人,以及他们的定购 - 若是有的话。
您可使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_O
ORDER BY Persons.LastName
结果集:
LastName |
FirstName |
OrderNo |
Adams |
John |
22456 |
Adams |
John |
24562 |
Carter |
Thomas |
77895 |
Carter |
Thomas |
44678 |
Bush |
George |
|
LEFT JOIN 关键字会从左表 (Persons) 那里返回全部的行,即便在右表 (Orders) 中没有匹配的行。
十5、full join
原始的表 (用在例子中的):
"Persons" 表:
Id_P |
LastName |
FirstName |
Address |
City |
1 |
Adams |
John |
Oxford Street |
London |
2 |
Bush |
George |
Fifth Avenue |
New York |
3 |
Carter |
Thomas |
Changan Street |
Beijing |
"Orders" 表:
Id_O |
OrderNo |
Id_P |
1 |
77895 |
3 |
2 |
44678 |
3 |
3 |
22456 |
1 |
4 |
24562 |
1 |
5 |
34764 |
65 |
全链接(FULL JOIN)实例
如今,咱们但愿列出全部的人,以及他们的定单,以及全部的定单,以及定购它们的人。
您可使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
结果集:
LastName |
FirstName |
OrderNo |
Adams |
John |
22456 |
Adams |
John |
24562 |
Carter |
Thomas |
77895 |
Carter |
Thomas |
44678 |
Bush |
George |
|
|
|
34764 |
FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回全部的行。若是 "Persons" 中的行在表 "Orders" 中没有匹配,或者若是 "Orders" 中的行在表 "Persons" 中没有匹配,这些行一样会列出。
十7、Union操做符
SQL UNION 语法
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
注释:默认地,UNION 操做符选取不一样的值。若是容许重复的值,请使用 UNION ALL。
SQL UNION ALL 语法
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
另外,UNION 结果集中的列名老是等于 UNION 中第一个 SELECT 语句中的列名。
下面的例子中使用的原始表:
Employees_China:
E_ID |
E_Name |
01 |
Zhang, Hua |
02 |
Wang, Wei |
03 |
Carter, Thomas |
04 |
Yang, Ming |
Employees_USA:
E_ID |
E_Name |
01 |
Adams, John |
02 |
Bush, George |
03 |
Carter, Thomas |
04 |
Gates, Bill |
使用 UNION 命令
实例
列出全部在中国和美国的不一样的雇员名:
SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA
结果
E_Name |
Zhang, Hua |
Wang, Wei |
Carter, Thomas |
Yang, Ming |
Adams, John |
Bush, George |
Gates, Bill |
注释:这个命令没法列出在中国和美国的全部雇员。在上面的例子中,咱们有两个名字相同的雇员,他们当中只有一我的被列出来了。UNION 命令只会选取不一样的值。
UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出全部的值。
实例:
列出在中国和美国的全部的雇员:
SELECT E_Name FROM Employees_China
UNION ALL
SELECT E_Name FROM Employees_USA
结果
E_Name |
Zhang, Hua |
Wang, Wei |
Carter, Thomas |
Yang, Ming |
Adams, John |
Bush, George |
Carter, Thomas |
Gates, Bill |
十8、select into 语句
SELECT INTO 语句从一个表中选取数据,而后把数据插入另外一个表中。
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
十9、create table
数据类型(data_type)规定了列可容纳何种数据类型。下面的表格包含了SQL中最经常使用的数据类型:
数据类型 |
描述 |
integer(size) int(size) smallint(size) tinyint(size)
|
仅容纳整数。在括号内规定数字的最大位数。 |
decimal(size,d) numeric(size,d)
|
容纳带有小数的数字。 "size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数。 |
char(size) |
容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。 在括号中规定字符串的长度。 |
varchar(size) |
容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。 在括号中规定字符串的最大长度。 |
date(yyyymmdd) |
容纳日期。 |
二10、sql 约束
二11、foreign key
FOREIGN KEY 约束用于预防破坏表之间链接的动做。
FOREIGN KEY 约束也能防止非法数据插入外键列,由于它必须是它指向的那个表中的值之一
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)
二12、check 约束
若是对单个列定义 CHECK 约束,那么该列只容许特定的值。
若是对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
二十3、default 约束
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'Sandnes'
)
二十4、create index 索引
您能够在表中建立索引,以便更加快速高效地查询数据。
用户没法看到索引,它们只能被用来加速搜索/查询。
CREATE INDEX PersonIndex
ON Person (LastName DESC)
二十5、alter
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
二十6、AUTO INCREMENT 字段
默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。
ALTER TABLE Persons AUTO_INCREMENT=100
二十7、create view
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_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
SQL 撤销视图
您能够经过 DROP VIEW 命令来删除视图。
SQL DROP VIEW Syntax
DROP VIEW view_name
二十8、sql 日期
MySQL Date 函数
下面的表格列出了 MySQL 中最重要的内建日期函数:
函数 |
描述 |
返回当前的日期和时间 |
|
返回当前的日期 |
|
返回当前的时间 |
|
提取日期或日期/时间表达式的日期部分 |
|
返回日期/时间按的单独部分 |
|
给日期添加指定的时间间隔 |
|
从日期减去指定的时间间隔 |
|
返回两个日期之间的天数 |
|
用不一样的格式显示日期/时间 |
SQL Server Date 函数
下面的表格列出了 SQL Server 中最重要的内建日期函数:
函数 |
描述 |
返回当前日期和时间 |
|
返回日期/时间的单独部分 |
|
在日期中添加或减去指定的时间间隔 |
|
返回两个日期之间的时间 |
|
用不一样的格式显示日期/时间 |
SQL Date 数据类型
MySQL 使用下列数据类型在数据库中存储日期或日期/时间值:
SQL Server 使用下列数据类型在数据库中存储日期或日期/时间值:
二十9、数据类型
不一样数据的区别 (***********查************)
三10、函数
在 SQL Server 中的合计函数
函数 |
描述 |
返回某列的平均值 |
|
BINARY_CHECKSUM |
|
CHECKSUM |
|
CHECKSUM_AGG |
|
返回某列的行数(不包括NULL值) |
|
返回被选行数 |
|
返回相异结果的数目 |
|
返回在指定的域中第一个记录的值(SQLServer2000 不支持) |
|
返回在指定的域中最后一个记录的值(SQLServer2000 不支持) |
|
返回某列的最高值 |
|
返回某列的最低值 |
|
STDEV(column) |
|
STDEVP(column) |
|
返回某列的总和 |
|
VAR(column) |
|
VARP(column) |