SQL Server 2000中的SQL語言簡介(一)

來源:互聯網
上載者:User

SQL Server 2000中的SQL語言是Transact-SQL語言 。

Transact-SQL語言主要組成部分有一下幾種:

1.資料定義語言 (Data Definition Language)DDL,Data Definition Language)
2.資料操縱語言DML,Data Manipularion Language)
3.資料控制語言DCL,Data Control Language)
4.系統預存程序System Stored Procedure)
5.一些附加的語言元素

資料定義語言 (Data Definition Language)DDL)

資料定義語言 (Data Definition Language)是指用來定義和管理資料庫以及資料庫中的各種對象的語句,這些語句包括CREATE、ALTER和DROP等語句。在SQL Server 2000中,資料庫物件包括表、視圖、觸發器、預存程序、規則、預設、使用者自訂的資料類型等。這些對象的建立、修改和刪除等都可以通過使用CREATE、ALTER、DROP等語句來完成。

建立資料庫表的一個例子

CREATE TABLE publishers
(
pub_id char(4) NOT NULL
CONSTRAINT UPKCL_pubind PRIMARY KEY CLUSTERED
CHECK (pub_id IN ('1389', '0736', '0877', '1622', '1756')
OR pub_id LIKE '99[0-9][0-9]'),
pub_name varchar(40) NULL,
city varchar(20) NULL,
state char(2) NULL,
country varchar(30) NULL
DEFAULT('USA')
)

修改視圖的一個例子

USE pubs
GO
ALTER VIEW yourview
AS
SELECT title, mycount= @@ ROWCOUNT, ytd_sales
FROM titles
WHERE type = 'mod_cook'
GO
SELECT *
FROM yourview
GO

刪除觸發器的一個例子

/*下面的例子將刪除觸發器employee_insupd。
*/
USE pubs
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'employee_insupd' AND type = 'TR')
DROP TRIGGER employee_insupd
GO

資料操縱語言DML)

資料操縱語言是指用來查詢、添加、修改和刪除資料庫中資料的語句,這些語句包括SELECT、INSERT、UPDATE、DELETE等。在預設情況下,只有sysadmin、dbcreator、db_owner或db_datawriter等角色的成員才有權利執行資料操縱語言。

1、SELECT語句

SELECT語句的文法形式如下:
SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ]
[COMPUTE clause]
[FOR BROWSE]

幾種常用語句的用法:

SELECT子句用於指定所選擇的要查詢的特定表中的列,它可以是星號*)、運算式、列表、變數等。
INTO子句用於指定所要產生的新表的名稱。
FROM子句用於指定要查詢的表或者視圖,最多可以指定16個表或者視圖,用逗號相互隔開。
WHERE子句用來限定查詢的範圍和條件。
GROUP BY子句是分組查詢子句。
HAVING子句用於指定分組子句的條件。
GROUP BY子句、HAVING子句和集合函數一起可以實現對每個組產生一行和一個匯總值。
ORDER BY子句可以根據一個列或者多個列來排序查詢結果,在該子句中,既可以使用列名,也可以使用相對列號。
ASC表示升序排列,DESC表示降序排列。
COMPUTE子句使用集合函數在查詢的結果集中產生合計列。
COMPUTE BY子句用於增加各列合計列。

SELECT子句的文法形式如下所示:

SELECT [ ALL | DISTINCT ][ TOP n [ PERCENT ] [ WITH TIES ] ]< select_list >
< select_list > ::=
{* | { table_name | view_name | table_alias }.*| { column_name | expression | IDENTITYCOL | ROWGUIDCOL }[ [ AS ] column_alias ]| column_alias = expression}[ ,...n ]

顯示居住在加利福尼亞州且姓名不為 McBadden 的作者列。
USE pubs
SELECT au_fname, au_lname, phone AS Telephone
FROM authors
WHERE state = 'CA' and au_lname <> 'McBadden'
ORDER BY au_lname ASC, au_fname ASC

使用兩個相互關聯的子查詢尋找作者姓名,這些作者至少參與過一本受歡迎的電腦書籍的創作。
USE pubs
SELECT au_lname, au_fname
FROM authors
WHERE au_id IN
(SELECT au_id
FROM titleauthor
WHERE title_id IN
(SELECT title_id
FROM titles
WHERE type = 'popular_comp'))

顯示含有本年度截止到現在的當前銷售額的行,然後按type以遞減順序計算書籍的平均價格和預付款總額
USE pubs
SELECT CAST(title AS char(20)) AS title, type, price, advance
FROM titles
WHERE ytd_sales IS NOT NULL
ORDER BY type DESC
COMPUTE AVG(price), SUM(advance) BY type
COMPUTE SUM(price), SUM(advance)

先刪除表T1,然後又建立一個帶有四個列的表T1。最後利用INSERT 語句插入一些資料行,這些行只有部分列包含值。

IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'T1')
DROP TABLE T1
GO
CREATE TABLE T1
( column_1 int identity,
column_2 varchar(30)
CONSTRAINT default_name DEFAULT ('column default'),
column_3 int NULL,
column_4 varchar(40)
)
INSERT INTO T1 (column_4)
VALUES ('Explicit value')
INSERT INTO T1 (column_2,column_4)
VALUES ('Explicit value', 'Explicit value')
INSERT INTO T1 (column_2,column_3,column_4)
VALUES ('Explicit value',-44,'Explicit value')
SELECT *
FROM T1

一個簡單的修改語句

UPDATE publishers
SET city = 'Atlanta', state = 'GA‘

一個帶有WHERE條件的修改語句

UPDATE authors
SET state = 'PC', city = 'Bay City'
WHERE state = 'CA' AND city = 'Oakland'

通過 UPDATE 語句使用來自另一個表的資訊,其修改表 titles 中的 ytd_sales 列,以反映表 sales 中的最新銷售記錄。

UPDATE titles
SET ytd_sales = titles.ytd_sales + sales.qty
FROM titles, sales
WHERE titles.title_id = sales.title_id
AND sales.ord_date = (SELECT MAX(sales.ord_date) FROM sales)

下一篇:SQL Server 2000中的SQL語言簡介(二)

(

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.