SQL Server 2008 交互式SQL语言实例练习

数据库学习初步

数据定义

()、基本表操作

先建立school数据库,在school数据库里做以下的操作。

1.建立基本表

1)创建学生表Student,由以下属性组成: 学号SNOINT型,主码),姓名SNAMECHAR型,长度为8,非空唯一),性别SEXCHAR型,长度为2),所在系DEPTNOINT型)。

 

2)创建课程表Course,由以下属性组成:课程号CNOINT型),课程名CNAMECHAR型,长度为20,非空),授课教师编号TNOINT型),学分CREDITINT型)。其中(CNOTNO)为主码。

 

3)创建学生选课表SC,由以下属性组成:学号SNO,课程CNO,成绩GRADE。所有属性均为INT型,其中(SNOCNO)为主码。

 

4)创建教师表Teacher,由以下属性组成:教师编号TNOINT型,主码),教师姓名TNAMECHAR型,长度为8,非空),所在系DEPTNOINT型)。

 

5)创建系表Dept,由以下属性:系号DEPTNOINT型,主码),系名DNAMECHAR型,长度为20,非空)。

 

2.修改基本表

1)在Student表中加入属性SAGE(INT)

 

2)将Student表中的属性SAGE类型改为SMALLINT 型。

 

3.删除基本表

1)在所有操作结束后删除STUDENT表。

 

2)在所有操作结束后删除COURSE表。

 

3)在所有操作结束后删除SC表。

 

4)在所有操作结束后删除TEACHER表。

 

5)在所有操作结束后删除DEPT表。

 

 

()、索引操作

1.建立索引

1)在Student表上建立关于SNO的唯一索引stusno

 

2)Course表上建立关于CNO升序的唯一索引coucno

 

2.删除索引

1)删除Student表上的索引stusno

 

2)删除Course表上的索引coucno

 

()、视图操作

1.建立视图

在插入数据的Student基本表上为计算机科学与技术系的学生记录建立一个视图CS_STUDENT

 

2.删除视图

在操作结束后删除视图CS_STUDENT

 

数据操作

()、更新操作

1.插入数据

1)向STUDENT表插入下列数据:

1001,张天,,10,20

1002,李兰,,10,21

1003,陈铭,,10,21

1004,刘茜,,20,21

1005,马朝阳,,20,22

 

2)向COURSE表插入下列数据:

1,数据结构,101,4

2,数据库,102,4

3,离散数学,103,4

4,C语言程序设计,101,2

 

3)向SC表插入下列数据:

1001,1,80

1001,2,85

1001,3,78

1002,1,78

1002,2,82

1002,3,86

1003,1,92

1003,3,90

1004,1,87

1004,4,90

1005,1,85

1005,4,92

 

4)向TEACHER表插入下列数据:

101,张星,10

102,李珊,10

103,赵天应,10

104,刘田, 20

 

5)向DEPT表插入下列数据:

10,计算机科学与技术

20,信息

 

2.修改数据

将张星老师数据结构课的学生成绩全部加2

3.删除数据

删除马朝阳同学的所有选课记录

 

()、查询操作

1.单表查询

1)查询所有学生的信息。

2)查询所有女生的姓名。

3)查询成绩在8089之间的所有学生选课记录,查询结果按成绩的降序排列。

4)查询各个系的学生人数。

 

2.连接查询

查询信息系年龄在21岁以下(含21岁)的女生姓名及其年龄。

 

3.嵌套查询

1)查询修课总学分在10学分以下的学生姓名。

2)查询各门课程取得最高成绩的学生姓名及其成绩。

3)查询选修了1001学生选修的全部课程的学生学号。

4)查询选修了张星老师开设的全部课程的学生姓名。

 

 

出现的问题及解决方案:

1.在创建基本表时是否可以缺省主码?

2.对基本表进行修改,执行ALTER TABLE Student MODIFY Sage SMALLINT显示执行失败。

 

 

 

自己做的答案:

(一)  基本表操作

建立基本表

1)     建立Student

命令行操作:

CREATE TABLE Student

( SNO INTNOTNULL PRIMARY KEY,

  SNAME CHAR(8)NOTNULL,

  SEX CHAR(2)NOTNULL,

  DEPTNO INT NOT NULL)

 

2)     建立Course

命令行操作:

CREATE TABLE Course

(

    CNO INT NOT NULL,

    CNAME CHAR(20)NOTNULL,

    TNO INT NOT NULL,

    CREDIT INT NOT NULL,

    PRIMARY KEY(CNO, TNO)

)

3)     建立SC

命令行操作:

CREATE TABLE SC

(

   SNO INT NOT NULL,

   CNO INT NOT NULL,

   GRAGE INT NOT NULL,

   PRIMARY KEY(SNO, CNO)

)

4)     建立Teacher

命令行操作:

CREATE TABLE Teacher

( TNO INTNOTNULL,

  TNAME CHAR(8)NOTNULL PRIMARY KEY,

  DEPTNO INT NOT NULL

)

5)     建立Depth

命令行操作:

 CREATETABLE Dept

(

  DEPTNO INT NOT NULL PRIMARYKEY,

  DNAME CHAR(20)NOTNULL

)

2.修改基本表

1)在Student表中加入属性SAGE(INT)

命令行操作:

ALTER TABLE Student ADD SAGEINT;

2)将Student表中的属性SAGE类型改为SMALLINT型。

     命令行操作:

         ALTERTABLEStudent alter column SAGESMALLINT;

 

 

3.删除基本表

1)在所有操作结束后删除STUDENT表。

命令行操作:

DROP TABLE Student;

2)在所有操作结束后删除COURSE表。

DROP TABLE Course;

3)在所有操作结束后删除SC表。

DROP TABLE SC;

4)在所有操作结束后删除TEACHER表。

DROP TABLETeacher;

5)在所有操作结束后删除DEPT表。

DROP TABLE Dept;

 

()、索引操作

1.建立索引

1)在Student表上建立关于SNO的唯一索引stusno

CREATE UNIQUEINDEXstusno ON Student(SNO);

2)Course表上建立关于CNO升序的唯一索引coucno

CREATE UNIQUE INDEX coucno ONCourse(CNO);

 

2.删除索引

1)删除Student表上的索引stusno

DROP INDEXStudent.stusno;

2)删除Course表上的索引coucno

DROP INDEX Course.coucno;

 

()、视图操作

1.建立视图

在插入数据的Student基本表上为计算机科学与技术系的学生记录建立一个视图CS_STUDENT

 

CREATE VIEWCS_STUDENT

  AS

  SELECT SNO,SNAME,SEX,DEPTNO,SAGE

  FROM Student

  WHERE DEPTNO=10

  WITH CHECK OPTION

2.删除视图

在操作结束后删除视图CS_STUDENT

 DROPVIEW CS_STUDENT;

 

二、数据操作

()、更新操作

1.插入数据

1)向STUDENT表插入下列数据:

1001,张天,,10,20

1002,李兰,,10,21

1003,陈铭,,10,21

1004,刘茜,,20,21

1005,马朝阳,,20,22

命令行操作:

INSERT INTOStudent

VALUES(1001,'张天','',10,20);

INSERT INTOStudent

VALUES(1002,'李兰','',10,21);

INSERT INTOStudent

VALUES(1003,'陈铭','',10,21);

INSERT INTOStudent

VALUES(1004,'刘茜','',20,21);

INSERT INTOStudent

VALUES(1005,'马朝阳','',20,22);

2)向COURSE表插入下列数据:

1,数据结构,101,4

2,数据库,102,4

3,离散数学,103,4

4,C 语言程序设计,101,2

命令行操作:

INSERT INTOCourse

VALUES(1,'数据结构',101,4);

INSERT INTOCourse

VALUES(2,'数据库',102,4);

INSERT INTOCourse

VALUES(3,'离散数学',103,4);

INSERT INTOCourse

VALUES(4,'C语言程序设计',101,2);

 

3)向SC表插入下列数据:

1001,1,80

1001,2,85

1001,3,78

1002,1,78

1002,2,82

1002,3,86

1003,1,92

1003,3,90

1004,1,87

1004,4,90

1005,1,85

1005,4,92

命令行操作:

INSERT INTOSC(SNO,CNO,GRAGE)

SELECT 1001,1,80 union

SELECT 1001,2,85 union

SELECT 1001,3,78 union

SELECT 1002,1,78 union

SELECT 1002,2,82 union

SELECT 1002,3,86 union

SELECT 1003,1,92 union

SELECT 1003,3,90 union

SELECT 1004,1,87 union

SELECT 1004,4,90 union

SELECT 1005,1,85 union

SELECT 1005,4,92

4)向TEACHER表插入下列数据:

101,张星,10

102,李珊,10

103,赵天应,10

104,刘田, 20

命令行操作:

INSERT INTOTeacher(TNO,TNAME,DEPTNO)

SELECT 101,'张星',10 union

SELECT 102,'李珊',10 union

SELECT 103,'赵天应',10 union

SELECT 104,'刘田', 20

 

5)向DEPT表插入下列数据:

10,计算机科学与技术

20,信息

命令行操作:

INSERT INTODept(DEPTNO,DNAME)

SELECT 10,'计算机科学与技术'union

SELECT 20,'信息'

 

2.修改数据

将张星老师数据结构课的学生成绩全部加2

UPDATE SC

SET GRAGE= GRAGE + 2

WHERE CNOIN

      (SELECTCNO

       FROMCourse

       WHERECNAME='数据结构'and cnoin

       (SELECTcno

        FROM Teacher

        WHERE TNAME='张星')

        )

3.删除数据

删除马朝阳同学的所有选课记录

DELETE

FROM SC

WHERE SNO =1005

()、查询操作

1.单表查询

1)查询所有学生的信息。

SELECT SNO,SNAME,SEX, DEPTNO,SAGE

FROM Student;

 

2)查询所有女生的姓名。

SELECT SNAME

FROM Student

WHERE SEXIN('');

 

3)查询成绩在8089之间的所有学生选课记录,查询结果按成绩的降序排列。

SELECT CNO

FROM SC

WHERE GRAGE BETWEEN 80 AND 89;

4)查询各个系的学生人数。

SELECT DISTINCTDEPTNO

FROM Dept;

2.连接查询

查询信息系年龄在21岁以下(含21岁)的女生姓名及其年龄。

SELECT SNAME,SAGE

FROM Student,Dept

WHERE DNAME = '信息'ANDSAGE <= 21 AND SEX= '';

3.嵌套查询

1)查询修课总学分在10学分以下的学生姓名。

SELECT SNAME

FROM Student,Course

WHERE CREDIT < 10;

2)查询各门课程取得最高成绩的学生姓名及其成绩。

SELECT SNAME,GRAGE,

FROM Student,SC

WHERE Student.SNO=SC.SNOANDGRAGE IN

       (SELECTMAX(GRAGE)

        FROM SC

        GROUP BYCNO);

3)查询选修了1001学生选修的全部课程的学生学号。

 

SELECT DISTINCT SNO

FROM SC SCX

WHERE SNO != 1001 AND NOT EXISTS

    (SELECT *

    FROM SCSCY

    WHERE SCY.SNO = 1001 AND

       NOT EXISTS

       (SELECT *

       FROM SCSCZ

       WHERE SCZ.SNO = SCX.SNO AND

             SCZ.CNO = SCY.CNO))

4)查询选修了张星老师开设的全部课程的学生姓名。

 

SELECT SNAME

FROM Student

WHERE SNO IN

    (SELECT SNO

     FROMSC

     WHERECNO IN

       (SELECT CNO

        FROM Course

        WHERE TNO IN

           (SELECT TNO

           FROM Teacher

           WHERE TNAME='张星')

           )

       )

 

出现的问题及解决方案:

1.在创建基本表时是否可以缺省主码?

解:可以

2.对基本表进行修改,执行ALTER TABLE Student MODIFY Sage SMALLINT显示执行失败。

解:将MODIFY更改为alter column就可以解决。

 

 

 

 

 

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: SQL Server Native Client ODBC驱动程序是一种用于连接和访问SQL Server数据库的软件组件。它充当了ODBC(开放数据库连接)应用程序和SQL Server数据库之间的桥梁。 SQL Server Native Client ODBC驱动程序提供了高性能、可靠的连接到SQL Server数据库的能力。它支持多种特性,如本地数据类型、多线程应用程序支持和Unicode字符集,以提供更好的性能和灵活性。 使用SQL Server Native Client ODBC驱动程序,开发人员可以通过ODBC接口连接到SQL Server数据库,执行SQL查询、更新数据和处理事务。此外,它还提供了高级功能,如批量插入、连接池管理和交互式查询。 SQL Server Native Client ODBC驱动程序还支持连接到远程SQL Server实例,并提供了安全性能的选项,如Windows身份验证和加密通信。这使得开发人员可以在网络上连接到安全的SQL Server数据库,并且保护敏感数据不被未经授权的用户访问。 总之,SQL Server Native Client ODBC驱动程序是一个重要的组件,它允许开发人员使用ODBC接口连接和访问SQL Server数据库。它提供了高性能、可靠的连接,支持广泛的功能,并提供了安全性能的选项。使用该驱动程序,开发人员可以方便地在应用程序中操作和管理SQL Server数据库。 ### 回答2: SQL Server Native Client(简称SNAC)是Microsoft SQL Server数据库的官方ODBC驱动程序。ODBC(Open Database Connectivity,开放数据库互连)是一种标准的数据库访问接口,允许应用程序通过标准的SQL语句与各种类型的数据库进行通信。 SQL Server Native Client ODBC驱动程序为当今最新版本的SQL Server数据库提供了完全的ODBC支持,包括对所有SQL Server数据类型、函数和特性的本地支持。该驱动程序还提供了高性能和可靠性,能够最大限度地提升应用程序的吞吐量和响应速度。 使用SQL Server Native Client ODBC驱动程序,开发者可以轻松地连接到SQL Server数据库,并执行各种数据库操作,如查询数据、更新数据、插入数据和删除数据等。这个驱动程序可以运行在Windows操作系统上,并且可被多种开发环境和编程语言使用,包括C/C++、Visual Basic、Java和.NET等。 SQL Server Native Client ODBC驱动程序还支持一些高级功能,如连接池管理、多个结果集的处理、异步操作、数据加密等。这些功能使得应用程序能够更加灵活和高效地工作,提升了开发人员的生产力和系统的可靠性。 总之,SQL Server Native Client ODBC驱动程序是一个重要的工具,它允许开发者通过ODBC接口连接和操作SQL Server数据库。它提供了高性能、可靠性和全面的功能支持,使得开发者能够更轻松地构建和管理SQL Server数据库相关的应用程序。 ### 回答3: SQL Server Native Client 是一种ODBC(开放数据库连接)驱动程序,用于在SQL Server数据库和应用程序之间进行连接和通信。它是由Microsoft开发的,并且是连接到SQL Server的首选驱动程序之一。 SQL Server Native Client ODBC驱动程序具有许多优点。首先,它提供了更高性能和更好的可伸缩性,能够更有效地处理大量的数据和查询请求。它还支持多线程应用程序,提供了线程安全的连接和执行操作,从而可以同时处理多个请求,提高了系统的并发性。 此外,SQL Server Native Client ODBC驱动程序还提供了更好的安全性和可靠性。它支持Windows身份验证和SQL Server身份验证,可以确保连接的安全性和身份验证的准确性。另外,它还支持数据库事务和错误处理,确保在连接和查询过程中的任何错误都能得到适当的处理和记录。 SQL Server Native Client ODBC驱动程序还具有良好的兼容性。它可以与各种应用程序开发工具和编程语言配合使用,包括C++、C#、Java等,可以轻松地进行跨平台的应用程序开发。此外,它还支持Unicode字符集,可以处理多种语言和字符编码的数据。 总的来说,SQL Server Native Client ODBC驱动程序是一种功能强大、高性能、安全可靠的驱动程序,用于连接和操作SQL Server数据库。它广泛应用于各种企业和个人的应用程序开发中,为用户提供了高效、可靠的数据库连接和操作功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小巫技术博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值