SQL语法
Select
SELECT "栏位" FROM "表格名"
Distinct
SELECT DISTINCT "栏位" FROM "表格名"
Where
SELECT "栏位" FROM "表格名" WHERE "condition"
And/Or
SELECT "栏位" FROM "表格名" WHERE "简单条件" {[AND|OR] "简单条件"}+
In
SELECT "栏位" FROM "表格名" WHERE "栏位" IN ('值1', '值2', ...)
Between
SELECT "栏位" FROM "表格名" WHERE "栏位" BETWEEN '值1' AND '值2'
Like
SELECT "栏位" FROM "表格名" WHERE "栏位" LIKE {模式}
Order By
SELECT "栏位" FROM "表格名" [WHERE "条件"] ORDER BY "栏位" [ASC, DESC]
Count
SELECT COUNT("栏位") FROM "表格名"
Group By
SELECT "栏位1", SUM("栏位2") FROM "表格名" GROUP BY "栏位1"
Having
SELECT "栏位1", SUM("栏位2") FROM "表格名" GROUP BY "栏位1" HAVING (函数条件)
Create Table
CREATE TABLE "表格名" ("栏位 1" "栏位 1 资料种类", "栏位 2" "栏位 2 资料种类"", ... )
Drop Table
DROP TABLE "表格名" Truncate Table TRUNCATE TABLE "表格名"
Insert Into
INSERT INTO "表格名" ("栏位1", "栏位2", ...) VALUES ("值1", "值2", ...)
表格名Store_Imformation
字段名 store_name Sales Date三个字段
表格数据如下:
store_name Sales Date
Los Angeles $1500 20140518
Boston $1200 20140818
Loritas $800 20140419
Anntia $2300 20140618
Emma $8500 20140320
James $1000 20140815
Boston $900 20140908
select "栏位名" from "表格名"
select store_name, Sales, Date from Store_Imformation //将Store_Imformation表中store_name、Sales、Date三栏的数据都查询出来
select distinct "栏位名" from "表格名" //找出不同的栏位名 distinct不同的
select distinct store_name from Store_Imformation
select "栏位名" from "表格名" where "条件" //条件可以由and和or连接而成
select store_name from Store_Imformation where Sales > 1200
select "栏位名" from "表格名" where "简单条件"{[and|or]"简单条件"}+
select store_name from Store_Imformation where Sales > 1200 or (Sales > 800 and Sales < 1000)
select "栏位名" from "表格名" where "栏位名" in (值一,值二...)
select * from Store_Imformation where store_name in(Boston, Emma)
select "栏位名" from "表格名" where "栏位名" Between "值一" and "值二" //Between查询某一范围的值
select "栏位名" from "表格名" where "栏位名" like {模式}
模式经常包括wildcard, 例如:
'A_Z': 'A'开头, 'Z'结尾, 中间是任意字符
'ABC%': 所有以'ABC'开头的字符串
'%XYZ': 所有以'XYZ'结尾的字符串
'%AN%': 所有含有'AN'这个模式的字符串
select "栏位名" from "表格名" where "条件" order by "栏位名" [asc, desc] //asc从小到大排 desc从大到小排
还可以照好几个栏位来排序 order by子句语法如下:
order by "栏位一" [asc|desc] "栏位二" [asc|desc]
sql提供一些函数对数据进行运算
AVG(平均数)
COUNT(计数)
MAX(最大值)
MIN(最小值)
SUM(总和)
select "函数名"("栏位名") from "表格名"
COUNT经常和DISTINCT一起使用,查询表格中有多少笔不同的资料
select "栏位1", SUM("栏位2") from "表格名" GROUP BY "栏位1" //GROUP BY分组查询,通常和聚合函数一起使用
select store_name, SUM(Sales) from Store_Imformation group by store_name
group by 有原则, select 面所有列,没有使用聚合函数列,必须出现 group by 面
select "栏位1", SUM("栏位2") from "表格名" GROUP BY "栏位1" HAVING(函数条件) //HAVING跟where一样,有聚合函数的时候只能用HAVING, 不能用where
HAVING :对函数产生的值设定条件
栏位别名和表格别名语法:
select "表格别名"."栏位1" "栏位别名" from "表格名" "表格别名"
select A1.store_name Store, SUM(A1.Sales) "Total Sales" from Store_Imformation A1 group by A1.store_name
将不同栏位的资料连接在一起
MySQL: CONCAT()
Oracle: CONCAT(), ||
SQL Server: +
MySQL和Oracle:
SELECT CONCAT(region_name,store_name) FROM Geography WHERE store_name = 'Boston';
SUBSTRING 抓出一个栏位资料中的一部分
MYSQL: SUBSTR, SUBSTRING
ORACLE: SUBSTR
SQL SERVER: SUBSTRING()
select substring(store_name, 3) from Store_Imformation where store_name='Emma'
TRIM 用来移除掉一个字符串中的字头和字尾,最常用的是移除字首和字尾的空白
MySQL: TRIM(), LTRIM(), RTRIM()
ORALCE: RTRIM(), LTRIM()
SQL SERVER: RTRIM(), LTRIM()
LTRIM(): 所有字符串起头的空白移除
RTRIM(): 所有字符串结尾的空白移除
select TRIM(' SAMPLE ')
建表语法:
create table "表格名"
("栏位1" "栏位1资料类型"
"栏位2" "栏位2资料类型"
......)
常见的几种限制
NOT NULL
UNIQUE
CHECK
主键(Primary Key)
外键(Foreign Key)
视观表语法:
CREATE VIEW "VIEW_NANE" AS "SQL语句"
创建索引语法:
CREATE INDEX "INDEX_NAME" ON "TABLE_NAME"(COLUMN_NAME)
修改表格的结构语法:
ALTER TABLE "table_name" [改变方式]
改变方式有以下几种:
加一个栏位: ADD "栏位1" "栏位1资料种类"
删去一个栏位: DROP "栏位1"
改变栏位名称: CHANGE "原本栏位名" "新栏位名" "新栏位名资料种类"
改变栏位的资料种类: MODIFY "栏位1" "新资料种类"
Alter table Store_Imformation add Number char(5) //在表Store_Imformation中添加一个Number的栏位。
删除表格语法:
DROP "表格名"
DROP TABLE Store_Imformation
清除表格中的所有资料语法:
TRUNCATE TABLE "表格名" //truncate table "表格名"
插入数据语法:
insert into "表格名"("栏位1","栏位2",...)value("值1","值2",...)
插入从另一个表格查询出来的资料到当前表格中语法:
insert into "表格1"("栏位1","栏位2",...) select "栏位3" "栏位4" from "表格2"
修改表格中的记录语法:
UPDATE "表格名" SET "栏位1" = [新值] where [条件]
UPDATE "表格名" SET "栏位1" = [值1]", "栏位2" = [值2]" where [条件]
删除表格中的一些数据
DELETE FROM "表格名" where [条件]
UNIQUE将两个sql语句合并起来(去掉重复的), 跟OR差不多,语法如下:
[SQL 语句1] UNIQUE [SQL 语句 2]
UNIQUE ALL将两个sql语句合并起来(不会去掉重复的), 跟OR差不多,语法如下:
[SQL 语句1] UNIQUE ALL [SQL 语句 2]
INTERSECT将两个sql语句合并起来, 等同于AND
[SQL 语句1] INTERSECT [SQL 语句 2]
MINUS将两个sql语句合并起来, 求差集
[SQL 语句1] MINUS [SQL 语句 2]
子查询语句
SELECT "栏位1" FROM "表格名" where "栏位2" [比较运算符](SELECT "栏位1" FROM "表格名" where [条件])
比较运算符可以是相等的运算符,例如=、>、<、>=、<=,也可以是文字运算符,如like, in等等。
EXISTS用来测试内查询有没有产生任何结果,有的话就执行外查询的SQL语句,否则整个SQL语句不产生任何结果
SELECT "栏位1" FROM "表格1" where EXISTS(SELECT * FROM "表格2" where [条件])
CASE是SQL用来作为if-then-else之类逻辑的关键字。语法如下:
SELECT CASE("栏位名")
WHEN "条件1" THEN "结果1"
WHEN "条件2" THEN "结果2"
....
[ELSE "结果N"]
END
FROM "表格名"
条件可以是一个数值或者公式,ELSE子句并不是必须的。