一、SQL TOP子句
注释:并非所有的数据库系统都支持TOP子句。
1、MySQL的语法
SELECT column_name(s) FROM table_name LIMIT number
2、SQL Server语法
SELECT TOP number|percent column_name(s) FROM table_name
3、ORACLE语法
SELECT column_name(s) FROM table_name WHERE ROWNUM <= number
二、SQL LIKE操作符
1、SQL LIKE操作符语法
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern
三、SQL通配符
通配符 描述
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist]
或者 不在字符列中的任何单一字符
[!charlist]
四、IN操作符
1、SQL IN语法
SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,…)
五、SQL BETWEEN操作符
1、SQL BETWEEN语法
SELECT column_name(s) FROM table_name WHERE column_name (NOT) BETWEEN value1 AND value2
重要事项:不同的数据库对BETWEEN…AND操作符的处理方式是有差异的。某些数据库会列出介于”value1”和”value2”之间的值,但不包括”value1”和”value2”;某些数据库会列出介于”value1”和”value2”之间并包括”value1”和”value2”的值;而另一些数据库会列出介于”value1”和”value2”之间的人,包括”value1”但不包括”value2”。
六、SQL Alias(别名)
1、表的SQL Alias语法
SELECT column_name(s) FROM table_name AS alias_name
2、列的SQL Alias语法:
SELECT column_name AS alias_name FROM table_name
七、SQL JOIN
1、不同的SQL JOIN
·JOIN:如果表中有至少一个匹配,则返回行
·INNER JOIN:如果表中有至少一个匹配,则返回行
·LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
·RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
·FULL JOIN:只要其中一个表中存在匹配,就返回行
八、SQL INNER JOIN关键字
1、INNER JOIN关键字语法
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
九、SQL LEFT JOIN关键字
1、LEFT JOIN关键字语法
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
十、SQL RIGHT JOIN关键字
1、RIGHT JOIN关键字语法
SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
十一、SQL FULL JOIN关键字
1、FULL JOIN关键字语法
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
十二、SQL UNION和UNION ALL操作符
请注意:UNION内部的SELECT语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条SELECT语句中的列的顺序必须相同。
1、SQL UNION语法
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
2、SQL UNION ALL语法
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
十三、SQL SELECT INTO语句
SQL SELECT INTO语法:
1、您可以把所有的列插入新表
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename
2、或者只把希望的列插入新表
SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename
十四、SQL CREATE DATABASE语句
1、SQL CREATE DATABASE语法
CREATE DATABASE database_name
十五、SQL CREATE TABLE语句
1、SQL CREATE TABLE语法
CREATE TABLE表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
…
)
2、SQL中最常用的数据类型(data_type)
数据类型 描述
Integer(size) 仅容纳整数。在括号内规定数字的最大位数。
int(size)
smallint(size)
tinyint(size)
decimal(size,d) 容纳带有小数的数字。
numeric(size,d) “size”规定数字的最大位数。”d”规定小数点右侧的最大位数。
char(size) 容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。在括号中规定字符串的长度。
varchar(size) 容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。在括号中规定字符串的最大长度。
date(yyyymmdd) 容纳日期
十六、SQL约束(Constraints)
可以在创建表时规定约束(通过CREATE TABLE语句),或者在表创建之后也可以(通过ALTER TABLE语句)。
几种约束:
·NTO NULL
·UNIQUE
·PRIMARY KEY
·FOREIGN KEY
·CHECK
·DEFAULT
十七、SQL NOT NULL约束
实例:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
十八、SQL UNIQUE 约束
1、SQL UNIQUE Constraint on CREATE TABLE
A、MySQL
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (Id_P)
)
B、SQL Server / Oracle / MS Access
CREATE TABLE Persons
(
Id_P int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
C、MySQL / SQL Server / Oracle / MS Access
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
)
2、SQL UNIQUE Constraint on ALTER TABLE
A、MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Persons
ADD UNIQUE (Id_P)
B、MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
3、撤销 UNIQUE 约束
A、MySQL:
ALTER TABLE Persons
DROP INDEX uc_PersonID
B、SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID
十九、SQL PRIMARY KEY 约束
1、SQL PRIMARY KEY Constraint on CREATE TABLE
A、MySQL
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (Id_P)
)
B、SQL Server / Oracle / MS Access
CREATE TABLE Persons
(
Id_P int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
C、MySQL / SQL Server / Oracle / MS Access
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID PRIMARY KEY (Id_P,LastName)
)
2、SQL PRIMARY KEY Constraint on ALTER TABLE
A、MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Persons
ADD PRIMARY KEY (Id_P)
B、MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
3、撤销 PRIMARY KEY 约束
A、MySQL
ALTER TABLE Persons
DROP PRIMARY KEY
B、SQL Server / Oracle / MS Access
ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID
二十、SQL FOREIGN KEY 约束
1、SQL FOREIGN KEY Constraint on CREATE TABLE
A、MySQL
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (O_Id),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)
B、SQL Server / Oracle / MS Access
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)
C、MySQL / SQL Server / Oracle / MS Access
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
)
2、SQL FOREIGN KEY Constraint on ALTER TABLE
A、MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Orders
ADD FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
B、MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
3、撤销 FOREIGN KEY 约束
A、MySQL
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
B、SQL Server / Oracle / MS Access
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders
二十一、SQL CHECK 约束
1、SQL CHECK Constraint on CREATE TABLE
A、My SQL
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (Id_P>0)
)
B、SQL Server / Oracle / MS Access
CREATE TABLE Persons
(
Id_P int NOT NULL CHECK (Id_P>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
C、MySQL / SQL Server / Oracle / MS Access
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
)
2、SQL CHECK Constraint on ALTER TABLE
A、MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Persons
ADD CHECK (Id_P>0)
B、MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
3、撤销 CHECK 约束
A、MySQL
ALTER TABLE Persons
DROP CHECK chk_Person
B、SQL Server / Oracle / MS Access
ALTER TABLE Persons
DROP CONSTRAINT chk_Person
二十二、SQL DEFAULT 约束
1、SQL DEFAULT Constraint on CREATE TABLE
A、My SQL / SQL Server / Oracle / MS Access
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'Sandnes'
)
2、SQL DEFAULT Constraint on ALTER TABLE
A、MySQL
ALTER TABLE Persons
ALTER City SET DEFAULT 'SANDNES'
B、SQL Server / Oracle / MS Access
ALTER TABLE Persons
ALTER COLUMN City SET DEFAULT 'SANDNES'
3、撤销 DEFAULT 约束
A、MySQL
ALTER TABLE Persons
ALTER City DROP DEFAULT
B、SQL Server / Oracle / MS Access
ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT
二十三、SQL CREATE INDEX 语句
1、SQL CREATE INDEX 语法
CREATE INDEX index_name
ON table_name (column_name)
2、SQL CREATE UNIQUE INDEX 语法
CREATE UNIQUE INDEX index_name
ON table_name (column_name2[DESC][ ,column_name2])
二十四、SQL DROP 撤销索引、表以及数据库
1、SQL DROP INDEX 语句
A、用于 MySQL 的语法
ALTER TABLE table_name DROP INDEX index_name
B、用于 Microsoft SQLJet (以及 Microsoft Access) 的语法
DROP INDEX index_name ON table_name
C、用于 MS SQL Server 的语法
DROP INDEX table_name.index_name
D、用于 IBM DB2 和 Oracle 语法
DROP INDEX index_name
2、SQL DROP TABLE 语句
DROP TABLE 表名称
3、SQL DROP DATABASE 语句
DROP DATABASE 数据库名称
4、SQL TRUNCATE TABLE 语句
TRUNCATE TABLE 表名称
二十五、SQL ALTER TABLE 语句
SQL ALTER TABLE语法:
1、如需在表中添加列,请使用下列语法
ALTER TABLE table_name
ADD column_name datatype
2、要改变表中列的数据类型,请使用下列语法
ALTER TABLE table_name
ALTER COLUMN column_name datatype
3、要删除表中的列,请使用下列语法
ALTER TABLE table_name DROP COLUMN column_name
注释:某些数据库系统不允许这种在数据库表中删除列的方式 (DROP COLUMN column_name)。
二十六、SQL AUTO INCREMENT 字段
1、用于 MySQL 的语法
CREATE TABLE Persons
(
P_Id int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)
ALTER TABLE Persons AUTO_INCREMENT=100
2 、用于 SQL Server 的语法
CREATE TABLE Persons
(
P_Id int PRIMARY KEY IDENTITY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
3、用于 Access 的语法
CREATE TABLE Persons
(
P_Id int PRIMARY KEY AUTOINCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
4、用于 Oracle 的语法
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
INSERT INTO Persons (P_Id,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')
二十七、SQL VIEW(视图)
1、SQL CREATE VIEW 语法
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
2、SQL 更新视图
SQL CREATE OR REPLACE VIEW Syntax
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
3、SQL 撤销视图
SQL DROP VIEW Syntax
DROP VIEW view_name
二十八、SQL Date 函数
二十九、SQL NULL ISNULL值
1、SQL IS NULL:
SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NULL
2、SQL IS NOT NULL
SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NOT NULL
三十、SQL IFNULL COALESCE ISNULL NVL函数
1、MySQL
SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products
SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products
2、SQL Server / MS Access
SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products
3、Oracle
SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products
三十一、SQL 数据类型
三十二、SQL 服务器 – RDBMS
1、DBMS - 数据库管理系统(Database Management System)
数据库管理系统是一种可以访问数据库中数据的计算机程序。DBMS 使我们有能力在数据库中提取、修改或者存贮信息。不同的 DBMS 提供不同的函数供查询、提交以及修改数据。
2、RDBMS - 关系数据库管理系统(Relational Database Management System)
关系数据库管理系统 (RDBMS) 也是一种数据库管理系统,其数据库是根据数据间的关系来组织和访问数据的。20 世纪 70 年代初,IBM 公司发明了 RDBMS。RDBMS 是 SQL 的基础,也是所有现代数据库系统,诸如 Oracle、SQL Server、IBM DB2、Sybase、MySQL 以及 Microsoft Access 的基础。