SQL语句

建立基本表: 学生(学号,姓名,年龄,性别,所在系); 课程(课程号,课程名,先行课); 选课(学号,课程号,成绩).

USE STUDENTDATABASE
CREAT TABLE STUDENT
(
   STU_ID VARCHAR(12) NOT NULL UNIQUE,
   SNAME   VARCHAR(20) NOT NULL,
   AGE    SMALLINT DEFAULT 20,
   GENDER VARCHAR(2) CHECK(GENDER IN 'male','female'),
   SDEPT VARCHAR(20)
)
CREATE TABLE COURSE
(
   COU_ID VARCHAR(10) PRIMARY KEY CLUSTERED,
   CNAME  VARCHAR(20),
   ADCOURSE VARCHAR(10)
)
CREATE TABLE SELECTCOURSE
(
   COU_ID CHAR(10),
   SCORE  SMALLINT,
   CONSTRAINT C1 CHECK(SCORE BETWEEN 0 AND 100),
   CONSTRAINT C2 PRIMARY KEY(STU_ID,COU_ID),
   CONSTRAINT C3 FOREIGN KEY(STU_ID)
      REFERENCES STUDENT(STU_ID),
   CONSTRAINT C4 FOREIGN KEY(COU_ID)
      REFERENCES COURSE(COU_ID)
)
GO

(1)修改基本表

1) 修改字段的定义。   

       ALTER TABLE〈表名〉 ALTER COLUMN〈列名〉〈新类型〉 [NULL|NOT NULL]〈约束定义〉

2) 增加字段和表约束规则。

       ALTER TABLE〈表名〉ADD{〈列定义〉|[〈表约束定义〉]} 

3) 删除字段或约束规则。    

       ALTER TABLE〈表名〉DROP{[CONSTRAINT]〈约束名〉|COLUMN〈列名〉}

4) 使约束有效或无效。

       ALTER TABLE〈表名〉{CHECK|NOCHECK}
         CONSTRAINT {ALL|〈约束名组〉}

(2) 删除基本表:    DROP TABLE〈表名〉 

例: (1) 学生表中添加专业和班级
      (2) 学生表中删除班级列

      (3) 学生表中修改姓名的长度为40

ALTER TABLE 学生  ADD 专业  varchar(80)
ALTER TABLE 学生 ADD 班级varchar(80)
ALTER TABLE 学生 DROP COLUMN 班级

ALTER TABLE 学生 ALTER COLUMN 姓名 varchar(40)

(3)创建索引

CREATE  [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX <索引名>  

    ON { table | view } (column [ ASC | DESC ] [ ,...n ] ) 
说明:
      UNIQUE  为表或视图创建唯一索引(不允许存在索引值相同的两行), 包括null值
      CLUSTERED 创建一个对象,其中行的物理排序与索引排序相同
      NONCLUSTERED 创建一个指定表的逻辑排序的对象。
      <索引名> 为数据表所有,与数据表的列名不能相同。
      column 可为列组合。
(4) 删除索引

     DROP INDEX 表名.索引名[,……]

视图创建格式:
CREATE   VIEW   <视图名>[( 列名组)]
[WITH ENCRYPTION]
AS
   SELECT语句
说明:
1. <视图名>是对象名,完整的名称的定义:
   [ [数据库].][[拥有者].]视图名
2. 将SELECT语句的查询记录集作为视图的数据.
3. SELECT语句 中不能包含:
INTO 子句
COMPUTE/COMPUTE BY子句
4. SELECT语句选项列中若包含计算字段时,应定义别名.

5. [WITH ENCRYPTION] 可选项声明是否加密视图 

【例1】建立计算机系学生的视图
    CREATE VIEW 计算机系学生
    AS 
        SELECT 学号,姓名,年龄
        FROM 学生
        WHERE 所在系=‘计算机系’
    GO
【例2】建立一个包含学号、姓名、课程名称和课程成绩的视图
     CREATE VIEW 学生成绩(学号,姓名,课程名称,课程成绩)
     AS 
         SELECT 学号,姓名,课程名称,课程成绩
         FROM 选课 A 
            LEFT JOIN 学生 B ON A.学号=B.学号   

            LEFT JOIN 课程 C  ON A.课程=C.课程号

【例3 】建立学生成绩视图,包含学号,总成绩,平均成绩

   CREATE VIEW 学生成绩(学号,总成绩,平均成绩)
    AS 
        SELECT 学号,sum(成绩),avg(成绩)
        FROM 选课
        GROUP BY 学号

    GO

 数据插入语句

(1) 使用常量插入单个元组 . 格式为:    

INSERT    INTO〈表名〉[(<属性列1>[,<属性列2>…)]    VALUES (<常量1>[,<常量2>]…)

【例】插入一条选课记录 (学号:'98011',课程号:'C10',成绩不详)。    

INSERT    INTO 选课 (学号,课程号)    VALUES ('98011','C10')

数据修改语句

UPDATE〈表名〉
SET <列名>=<表达式>[,<列名>=<表达式>][,…n] 

[WHERE<条件>]

【例】将学生表中全部学生的年龄加上2岁。   

 UPDATE 学生    

 SET 年龄=年龄+2

【例】将选课表中的数据库课程的成绩乘以1.2。    

UPDATE 选课   

SET 成绩= 成绩*1.2   

WHERE 课程号= (SELECT 课程号  FROM 课程  WHERE 课程名= '数据库' )

数据删除语句

 DELETE    FROM〈表名〉    [WHERE〈条件〉]

【例】删除艺术系的学生记录及选课记录。    

DELETE    FROM 选课    WHERE 学号 IN (SELECT 学号  FROM 学生  WHERE 所在系=‘艺术系’) 

GO   

 DELETE    FROM 学生  WHERE 所在系='艺术系'










  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值