/*例3-1 创建数据库表。*/ /*程序清单如下:*/ /*下面的例子将创建表S。*/ CREATE TABLE S ( sno char(10) NOT NULL /*学号字段*/ CONSTRAINT PK_sno PRIMARY KEY CLUSTERED/*主键约束*/ CHECK (sno like 31300501[0-9][0-9])/*检查约束*/, sname char(8) NULL, /*姓名字段*/ sex char(2) NULL, /*性别字段*/ age int NULL, /*年龄字段*/ dept varchar(20) NULL/*系别字段*/ ) /*例3-2 修改S表,增加一个班号列。*/ /*程序清单如下:*/ ALTER TABLE S ADD CLASS_NO CHAR(6) /*例3-3 删除S表。*/ /*程序清单如下:*/ DROP table S /*再执行例3-1*/ /*例3-4 在S表中插入一条学生记录(学号:S7;姓名:郑冬;性别:女;年龄:21;系别:计算机)。 */ /*程序清单如下:*/ INSERT INTO S VALUES (3130050107,郑冬,女,21,计算机) /*例3-5 创建SC表(学生选课表),并向SC表中插入一条选课记录 (3130050101, c1)。*/ /*程序清单如下:*/ CREATE TABLE SC ( sno char(10) NOT NULL, cno char(2) NULL, /*课程编号字段*/ score numeric(4,1) NULL /*成绩字段*/ ) Go INSERT INTO SC (sno,cno) VALUES (3130050101, c1) Go /*例3-6 使用 column_list 及 VALUES 列表显式地指定将被插入每个列的值。*/ /*程序清单如下:*/ CREATE TABLE T1 ( column_1 int, column_2 varchar(30)) Go INSERT T1 (column_2, column_1) VALUES (This is a test,1) /*例3-7 求出各位学生的平均成绩,把结果存放在新表AVGSCORE中。 程序清单如下:*/ /*首先建立新表AVGSCORE,用来存放学号和学生的平均成绩。*/ CREATE TABLE AVGSCORE (SNO CHAR(10), AVGSCORE SMALLINT) Go /*利用子查询求出SC表中各位学生的平均成绩,把结果存放在新表AVGSCORE中。*/ INSERT INTO AVGSCORE SELECT SNO,AVG(SCORE) FROM SC GROUP BY SNO /*例3-9 将所有学生年龄增加1岁*/ /*程序清单如下:*/ UPDATE S SET AGE=AGE+1 /*例3-10 下面的示例修改 SalesPerson 表中的 SalesYTD 列,以反映 SalesOrderHeader 表中记录的 最近销售情况。*/ /*程序清单如下:*/ USE AdventureWorks; GO UPDATE Sales.SalesPerson SET SalesYTD = SalesYTD + SubTotal FROM Sales.SalesPerson AS sp JOIN Sales.SalesOrderHeader AS so ON sp.SalesPersonID = so.SalesPersonID AND so.OrderDate = (SELECT MAX(OrderDate) FROM Sales.SalesOrderHeader WHERE SalesPersonID = sp.SalesPersonID) /*例3-11 将UPDATE语句与TOP子句一起使用,更新Employee 表中10个随机行的VacationHours 列,使 之变成原来的1.25倍。*/ /*程序清单如下:*/ USE AdventureWorks; GO UPDATE TOP (10) HumanResources.Employee SET VacationHours = VacationHours * 1.25 /*例3-12 创建T表(教师基本情况表)的结构为T(TNO,TN,SEX,AGE,PROF,SAL,DEPT)分别表示教师的编 号,姓名,性别,年龄,职称,工资,系别。TC表(教师授课表)的结构为TC(TNO,CNO)分别表示教师的 编号,课程编号。*/ USE example GO CREATE TABLE t ( TNO char(10) NOT NULL CONSTRAINT PK_TNO PRIMARY KEY,/*教师编号字段*/ TN char(10) NULL,/*教师姓名字段*/ SEX char(2) NULL,/*教师性别字段*/ AGE int NULL,/*教师年龄字段*/ PROF char(20) NULL,/*教师职称字段*/ SAL int NULL,/*教师工资字段*/ DEPT char(10) NULL,/*教师所在系别字段*/ ) GO INSERT INTO t VALUES(0001,张老师,男,41,副教授,2200,电力系) GO INSERT INTO t VALUES(0002,张益琳,女,32,讲师,1500,动力系) GO CREATE TABLE TC ( TNO char(10) NOT NULL,/*教师编号字段*/ CNO char(10) NULL,/*教师执教课程字段*/ ) GO INSERT INTO tc VALUES(0001,C5) GO /*把讲授C5课程的教师的工资增加100元。*/ /*程序清单如下:*/ UPDATE T SET SAL=SAL+100 WHERE TNO IN (SELECT T.TNO FROM T,TC WHERE T.TNO=TC.TNO AND TC.CNO=C5) /*通过连接查询找到讲授C5课程的教师编号。*/ /*例3-13 把所有教师的工资提高到平均工资的1.2倍*/ /*程序清单如下:*/ UPDATE T SET SAL =(SELECT 1.2*AVG(SAL) FROM T) /*例3-17 给用户 Mary 授予多个语句权限。*/ /*程序清单如下:*/ GRANT CREATE DATABASE, CREATE TABLE TO Mary /*例3-18 为用户ZhangYiLin授予CREATE TABLE的语句权限。*/ /*程序清单如下:*/ GRANT CREATE TABLE TO ZhangYiLin /*例3-19 在权限层次中授予对象权限。首先,给所有用户授予SELECT权限,然后,将特定的权限授予用 户Mary、John和Tom*/ /*程序清单如下:*/ GRANT SELECT ON s /*需先创建s表*/ TO public GO GRANT INSERT, UPDATE, DELETE ON s TO Mary, John, Tom /*需首先创建用户Mary, John, Tom */ GO /*例3-20 将查询T表和修改教师职称的权限授予USER3,并允许将此权限授予其他用户。*/ /*程序清单如下:*/ GRANT SE |