數據庫——SQL語言

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      字段名     字段類型      字段特性;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章