REFERENCE:http://www.w3school.com.cn/sql/index.asp
SQL简介
SQL定义
1.结构化查询语言
2.使我们有能力访问数据库
3.是一种ANSI的标准计算机语言
SQL操作
1.查询 2.取数 3.插值 4.更新 5.删除 6.创建 7.设限
SQL基础
RDBMS(关系型数据管理S系统):MS SQL Server,IBM DB2,Oracle,My SQL,Microsoft Access
SQL语法
创建 CREATE
1.创建数据库
CREATE DATABASE databae_name
2.创建数据库中的表
CREATE TABLE table name
(column_name1 dtype,
column_name2 dtype,
column_name3 dtype,
…
)
3.创建索引
允许重复:
CREATE INDEX index_name
ON table_name(column_name)
唯一索引(在INDEX前加UNIQUE):
CREATE UNIQUE INDEX index_name
ON table_name(column_name DESC)
4.创建视图
CREAT VIEW view_name AS
SELECT column_name(s) FROM table_name
WHERE condition
撤销 DROP
1.撤销数据库
DROP DATABASE database_name
2.撤销表:
DROP TABLE table_name
3.撤销索引:
—Microsoft SQLJet&Microsoft Access:
DROP INDEX index_name ON table_name
—MS SQL Server:
DROP INDEX table_name.index_name
—IBM DB2&Oracle:
DROP INDEX index_name
—MySQL:
ALTER TABLE table_name
DROP INDEX index_name
4.撤销视图
DROP VIEW view_name
约束 CONSTRAINTS
NOT NULL 强制字段始终包含值
UNIQUE 保证集合唯一性
PRIMARY KEY 主键
FOREIGN KEY 外键
CHECK 限制列中值范围
DEFAULT 向列中插入默认值
修改 ALTER
1.添列
ALTER TABLE table_name
ADD column_name datatype
2.删列
ALTER TABLE table_name
DROP COLUMN column_name
(注释:某些数据库系统不允许这种在数据库表中删除列的方式(DROP COLUMN column_name。)
3.改变列中数据类型
ALTER TABLE table_name
ALTER COLUMN column_name datatype)
AUTO INCREMENT 字段
—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)
)
(默认地,AUTO_INCREMENT的开始值是 1,每条新记录递增 1。
要让 AUTO_INCREMENT序列以其他的值起始,请使用下列 SQL语法:
ALTER TABLE Persons AUTO_INCREMENT=100)
—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)
)
(默认地,IDENTITY的开始值是 1,每条新记录递增 1。
要规定 "P_Id"列以 20起始且递增 10,请把 identity改为 IDENTITY(20,10))
—Access
CREATE TABLE Persons
(
P_Id int PRIMARY KEY AUTOINCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
—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')
操作 OPERATION
表内操作
1.取数 SELECT WHERE
前句:
SELECT */column_name(s)/DISTINCT column_name(s) FROM TABLE
SELECT TOP 2* FROM table_name
SELECT TOP 50 PERCENT* FROM table_name
SELECT column_names FROM table_name AS alias_name 表别名
SELECT column_names AS alias_name FROM table_name 列别名
后句:
WHERE column_name operation value
WHERE column_name LIKE/NOT LIKE pattern
WHERE column_name IN (value1,value2,…)
WHERE column_name BETWEEN value1 and value2
(重要事项:不同的数据库对 BETWEEN...AND操作符的处理方式是有差异的。某些数据库会列出介于 "Adams"和 "Carter" 之间的人,但不包括 "Adams"和 "Carter";某些数据库会列出介于 "Adams"和 "Carter"之间并包括 "Adams"和 "Carter" 的人;而另一些数据库会列出介于 "Adams"和 "Carter"之间的人,包括 "Adams",但不包括 "Carter"。)
ORDER BY column_name DESC/ASC(默认) 排序
2.插值 INSERT INTO
INSERT INTO table_name(column_name1,column_name2,…) VALUES(value1,value2,…)
3.更新 UPDATE
更新表内数据:
UPDATE tabel_name
SET new_column_name=new_value
WHERE column_name=value
4.删除 DELETE/TRUNCATE
DELETE FROM table_name WHERE column_name=value
删除表内所有数据:
DELETE FROM table_name
DELETE * FROM table_name
TRUNCATE TABLE table_name
表间操作
1.查询(键匹配) INNER JOIN=JOIN/LEFT JOIN/RIGHT JOIN/FULL JOIN
SELECT table_name1.column_name(s),table_name2.column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table1_name1.column_name=table_name2.column_name
(注释:在某些数据库中, RIGHT JOIN称为 LEFT/RIGHT/FRLL OUTER JOIN。)
2.合并(竖向) UNION/UNION ALL
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
(注释:默认地,UNION操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。)
3.备份 SELECT INTO
SELECT */column_name(s)
INTO new_table_name [IN external database]
FROM old_table_name
SQL函数
SELECT FUNCTION(column_name) FROM table_name
Aggregate functions(parts)
1.AVG()
2.COUNT()
3.FIRST()
4.LAST()
5.MAX()
6.MIN()
7.SUM()
Scalar functions(parts)
1.UCASE()
2.LCASE()
3.LEN()
4.ROUND(column_name,decimals)
5.NOW()
6.MID(column_name,start,length)
7.FORMAT(column_name,format)
Others
1.GROUP BY
用于结合合计函数,根据一个或多个列对结果集进行分组。
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
2.HAVING
在 SQL中增加 HAVING子句原因是,WHERE关键字无法与合计函数一起使用。
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
3.NULL
将NULL返零值:
—SQL Server,MS Access
ISNULL(column_name,0)
—Oracle
NVL(column_name,0)
—MySQL
IFNULL(column_name,0)/COALESCE(column_name,0)
4.各种DATE函数(略)
附:
1.SQL数据类型(略)
2.通配符(pattern):
% 替代一个或多个字符
- 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist] or [!charlist] 不在字符列中的任何单一字符