DB
提供了關連式資料庫的查詢語言 SQL (Structured Query Language)
是一種非常口語化
既易學又易懂的語法
此一語言幾乎是每個資料庫系統都必須提供的
用以表示關連式的操作
包含了資料的定義(DDL)以及資料的處理(DML)
SQL原來拼成SEQUEL
這語言的原型以
系統 R
的名字在 IBM 聖荷西實驗室完成
經過IBM內部及其他的許多使用性及效率測試
其結果相當令人滿意
並決定在系統R 的技術基礎發展出來 IBM 的產品
而且美國國家標准學會(ANSI)及國際標准化組織(ISO)在
遵循一個幾乎是以 IBM SQL 為基礎的標准關連式資料語言定義
一資料定義 DDL(Data Definition Language) 資料定語言是指對資料的格式和形態下定義的語言
他是每個資料庫要建立時候時首先要面對的
舉凡資料分哪些表格關系
表格內的有什麽欄位主鍵
表格和表格之間互相參考的關系等等
都是在開始的時候所必須規劃好的
1
建表格
CREATE TABLE table_name(
column
DATATYPE [NOT NULL] [NOT NULL PRIMARY KEY]
column
DATATYPE [NOT NULL]
)
說明
DATATYPE
是資料的格式
詳見表
NUT NULL
可不可以允許資料有空的(尚未有資料填入)
PRIMARY KEY
是本表的主鍵
2
更改表格
ALTER TABLE table_name
ADD COLUMN column_name DATATYPE
說明
增加一個欄位(沒有刪除某個欄位的語法
ALTER TABLE table_name
ADD PRIMARY KEY (column_name)
說明
更改表得的定義把某個欄位設為主鍵
ALTER TABLE table_name
DROP PRIMARY KEY (column_name)
說明
把主鍵的定義刪除
3
建立索引
CREATE INDEX index_name ON table_name (column_name)
說明
對某個表格的欄位建立索引以增加查詢時的速度
4
刪除
DROP table_name
DROP index_name
二的資料形態 DATATYPEs smallint
位元的整數
interger
位元的整數
decimal(p
s)
p 精確值和 s 大小的十進位整數
精確值p是指全部有幾個數(digits)大小值
s是指小數
點後有幾位數
如果沒有特別指定
則系統會設為 p=
; s=
float
位元的實數
double
位元的實數
char(n)
n 長度的字串
n不能超過
varchar(n)
長度不固定且其最大長度為 n 的字串
n不能超過
graphic(n)
和 char(n) 一樣
不過其單位是兩個字元 double
bytes
n不能超過
這個形態是為
了支援兩個字元長度的字體
例如中文字
vargraphic(n)
可變長度且其最大長度為 n 的雙字元字串
n不能超過
date
包含了 年份
月份
日期
time
包含了 小時
分鐘
秒
timestamp
包含了 年
月
日
時
分
秒
千分之一秒
三資料操作 DML (Data Manipulation Language) 資料定義好之後接下來的就是資料的操作
資料的操作不外乎增加資料(insert)
查詢資料(query)
更改資料(update)
刪除資料(delete)四種模式
以下分 別介紹他們的語法
1
增加資料
INSERT INTO table_name (column
column
)
VALUES ( value
value
)
說明
若沒有指定column 系統則會按表格內的欄位順序填入資料
欄位的資料形態和所填入的資料必須吻合
table_name 也可以是景觀 view_name
INSERT INTO table_name (column
column
)
SELECT columnx
columny
FROM another_table
說明
也可以經過一個子查詢(subquery)把別的表格的資料填入
2
查詢資料
基本查詢
SELECT column
columns
FROM table_name
說明
把table_name 的特定欄位資料全部列出來
SELECT *
FROM table_name
WHERE column
= xxx
[AND column
> yyy] [OR column
<> zzz]
說明
*
表示全部的欄位都列出來
WHERE 之後是接條件式
把符合條件的資料列出來
SELECT column
column
FROM table_name
ORDER BY column
[DESC]
說明
ORDER BY 是指定以某個欄位做排序
[DESC]是指從大到小排列
若沒有指明
則是從小到大
排列
組合查詢
組合查詢是指所查詢得資料來源並不只有單一的表格
而是聯合一個以上的
表格才能夠得到結果的
SELECT *
FROM table
table
WHERE lum
=lumn
說明
查詢兩個表格中其中 column
值相同的資料
當然兩個表格相互比較的欄位
其資料形態必須相同
一個復雜的查詢其動用到的表格可能會很多個
整合性的查詢
SELECT COUNT (*)
FROM table_name
WHERE column_name = xxx
說明
查詢符合條件的資料共有幾筆
SELECT SUM(column
)
FROM table_name
說明
計算出總和
所選的欄位必須是可數的數字形態
除此以外還有 AVG() 是計算平均
MAX()
MIN()計算最大最小值的整合性查詢
SELECT column
AVG(column
)
FROM table_name
GROUP BY column
HAVING AVG(column
) > xxx
說明
GROUP BY: 以column
為一組計算 column
的平均值必須和 AVG
SUM等整合性查詢的關鍵字
一起使用
HAVING : 必須和 GROUP BY 一起使用作為整合性的限制
復合性的查詢
SELECT *
FROM table_name
WHERE EXISTS (
SELECT *
FROM table_name
WHERE conditions )
說明
WHERE 的 conditions 可以是另外一個的 query
EXISTS 在此是指存在與否
SELECT *
FROM table_name
WHERE column
IN (
SELECT column
FROM table_name
WHERE conditions )
說明
IN 後面接的是一個集合
表示column
存在集合裡面
SELECT 出來的資料形態必須符合 column
其他查詢
SELECT *
FROM table_name
WHERE column
LIKE
x%
說明
LIKE 必須和後面的
x%
相呼應表示以 x為開頭的字串
SELECT *
FROM table_name
WHERE column
IN (
xxx
yyy
)
說明
IN 後面接的是一個集合
表示column
存在集合裡面
SELECT *
FROM table_name
WHERE column
BETWEEN xx AND yy
說明
BETWEEN 表示 column
的值介於 xx 和 yy 之間
3
更改資料
UPDATE table_name
SET column
=
xxx
WHERE conditoins
說明
更改某個欄位設定其值為
xxx
nditions 是所要符合的條件
若沒有 WHERE 則整個 table 的那個欄位都會全部被更改
4
刪除資料
DELETE FROM table_name
WHERE conditions
說明
刪除符合條件的資料
說明
關於WHERE條件後面如果包含有日期的比較
不同數據庫有不同的表達式
具體如下
(
)如果是ACCESS數據庫
則為
WHERE mydate>#
#
(
)如果是ORACLE數據庫
則為
WHERE mydate>cast(
as date)
或
WHERE mydate>to_date(
yyyy
mm
dd
)
在Delphi中寫成
thedate=
;
query
SQL
add(
select * from abc where mydate>cast(
+
+thedate+
+
as date)
);
如果比較日期時間型
則為
WHERE mydatetime>to_date(
:
:
yyyy
mm
dd hh
:mi:ss
)
From:http://tw.wingwit.com/Article/program/SQLServer/201311/21970.html