SQL並不是完全的編程語言,而是一種數據子語言,僅包括定義和處理數據庫的結構。要成爲完全的編程語言,SQL語句必須嵌入腳本語言(如VBScript)或編程語言(Java和C#),也可以使用支持DBMS的命令提示交互式地提交SQL語句。
SQL命令分類之二:DDL、DML。
CREATE語句:
1.
CREATE TABLE 表名(
列名 值類型 若干列約束,
列名 值類型 若干列約束,
......
);
列約束——PRIMARY KEY,NOT NULL,NULL,UNIQUE,DEFAULT
2.
表約束:
CREATE TABLE 表名(
列名 值類型 若干列約束,
列名 值類型 若干列約束,
......
CONSTRAINT 約束名 PRIMARY KEY(列名),
CONSTRAINT 約束名 FOREIGN KEY(列名) REFERENCES 表名(列名)
ON UPDATE CASCADE,
CONSTRAINT 約束名 FOREIGN KEY(列名) REFERENCES 表名(列名)
ON UPDATE NO ACTION,
CONSTRAINT 約束名 FOREIGN KEY(列名) REFERENCES 表名(列名)
ON DELETE CASCADE,
CONSTRAINT 約束名 FOREIGN KEY(列名) REFERENCES 表名(列名)
ON DELETE NO ACTION
);INSERT語句:
1.
INSERT INTO 表名 VALUES(值1,值2,值3...);——————————不需要指定代理鍵的值,值的順序和表中的順序一致,非數字值放在單引號中。
2.
INSERT INTO 表名 (列名1,列名2,列名3......) VALUES(值1,值2,值3......);
SELECT語句:
1.
SELECT 列名1,列名2,列名3——————————列名前加DISTINCT關鍵字,將強制刪除結果中的重複行 ,* 代表所有列
FROM 表名——————————————SELECT語句本身的結果也是表,故此處可以嵌套SELECT語句
WHERE 行限定條件;————————省略WHERE語句就是不進行行限定
關於WHERE子句行限定條件的限定方法
限定方法是通過邏輯連接符(AND,OR)將若干個子條件連接。其中,子條件的構造方法有:
—列值大小判斷,由比較運算符(=,>,<,>=,<=,!=或<>)構成,其中文本類型的列只能判斷是否相等
—列值範圍判斷,通過BETWEEN關鍵字
—列值集判斷,通過關鍵字IN和NOT IN,如 : WHERE 列名 IN(值1,值2,值3)表示指定列的值必須是括號中值集中的一個,而NOT IN 表示非該值集中的任意一個。除了使用直接列舉的方式表示值集,還可以用嵌套的方式(SELECT語句對單個列進行操作的結果就是一個值集)。
—文本類列值的簡單格式判斷,使用LIKE和NOT LIKE關鍵字,下劃線代表一個未指定字符,百分號代表一個或多個未指定的字符,Access ANSI-89 SQL使用問號代替下劃線,星號代替百分號
—列值是否有值,使用關鍵字IS NULL和IS NOT NULL。
SELECT語句中,SELECT後面不僅可以是表(FROM後跟的表)中存在的列,還可以通過存在的列獲取新列,方法有:
1.
對現有列進行基本算數運算(只對數值列),格式如:SELECT (列名 * 數值),如果在此基礎上加上AS 新列名,就能爲此列命名,格式如:SELECT (列名 * 數值) AS 新列名
2.
內置函數的值——COUNT、SUM、AVG、MAX、MIN的值,其中,COUNT可以用於任何類型數據,其它只可用於數值型數據,它們構造的新列都是數值型數據。
COUNT用法——COUNT(列名),得到的是指定列的行數值
SUM用法——SUM(列名),得到的是指定列的總和
MAX用法——MAX(列名),得到的是指定列的最大值
MIN用法——MIN(列名),得到的是指定列的最小值
格式如:SELECT COUNT( * ) AS 新列名
SELECT FROM架構可加入的其它子句:
1.
ORDER BY 列名 ASC——————ASC是升序,不寫ASC也是升序,換爲DESC則爲降序。此外,不只可以按一個列排序,還可以依次按多個列排序,列名用逗號分割。
2.
分組————————分組主要用於對內置函數的採值範圍進行分組,
SELECT 列名 , Count (*) AS 新列名
FROM 表名
GROUP BY 列名
HAVING 限定條件——————————分組不僅限定了SELECT部分內置函數的採值範圍,也限定了HAVING部分中會存在的內置函數的採值範圍。
SQL標準規定,同時出現WHERE和GROUP BY時,首先運用WHERE條件。
使用連接查詢多個表:
方法1
SELECT 表名1.列名1,表名2.列名
FROM 表1,表2
WHERE 表名1.列1=表2.列1;————————表1和表2通過表1.列1和表2.列1進行連接
方法2
SELECT 表1.列1,表2.列2,表3.列3
FROM 表1,表2,表3
WHERE (表1 JOIN 表2
ON 表1.列1=表2.列1)JOIN 表3 ON 表2.列1=表3.列1;————————Access要求JOIN前加INNER,外連接加LEFT或者RIGHT
修改信息:
UPDATE 表名
SET 列名=新值
WHERE 行限定;
刪除行信息:
DELETE
FROM 列名
WHERE 行限定;
修改表結構:
1.添加約束
ALTER 表名
ADD CONSTRAINT 約束名 ......;
2.刪除約束
ALTER 表名
DROP CONSTRAINT 約束名;
3.添加字段
ALTER 表名
ADD 新字段名 字段類型 字段特性;
4.刪除字段
ALTER 表名
DROP COLUMN 字段名
5.修改字段類型和特性
ALTER 表名
ALTER COLUMN 字段名 字段類型 字段特性;