首页    新闻    下载    文档    论坛     最新漏洞    黑客教程    数据库    搜索    小榕软件实验室怀旧版    星际争霸WEB版    最新IP准确查询   
名称: 密码:      忘记密码  马上注册
数据库 :: 数据库

SQL Server 2000中的SQL语言简介(一)


http://www.gipsky.com/
SQL Server 2000中的SQL语言是Transact-SQL语言 。

Transact-SQL语言主要组成部分有一下几种:

1.数据定义语言(DDL,Data Definition Language)



2.数据操纵语言(DML,Data Manipularion Language)



3.数据控制语言(DCL,Data Control Language)



4.系统存储过程(System Stored Procedure)



5.一些附加的语言元素

数据定义语言(DDL)

数据定义语言是指用来定义和管理数据库以及数据库中的各种对象的语句,这些语句包括CREATE、ALTER和DROP等语句。在SQL Server 2000中,数据库对象包括表、视图、触发器、存储过程、规则、缺省、用户自定义的数据类型等。这些对象的创建、修改和删除等都可以通过使用 CREATE、ALTER、DROP等语句来完成。

创建数据库表的一个例子









CREATE TABLE publishers(pub_id char(4) NOT NULL CONSTRAINT UPKCL_pubind PRIMARY KEY CLUSTEREDCHECK (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) NULLDEFAULT('USA'))









修改视图的一个例子









USE pubsGOALTER VIEW yourviewASSELECT title, mycount= @@ ROWCOUNT, ytd_salesFROM titlesWHERE type = 'mod_cook'GOSELECT * FROM yourviewGO









删除触发器的一个例子











/*下面的例子将删除触发器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)
<< Microsoft SQL Server 2008 Express with Advanced Services SQL Server 2000中的SQL语言简介(二) >>
评分
10987654321
API:
gipsky.com& 安信网络
网友个人意见,不代表本站立场。对于发言内容,由发表者自负责任。

系统导航

 

Copyright © 2001-2010 安信网络. All Rights Reserved
京ICP备05056747号