Presentation is loading. Please wait.

Presentation is loading. Please wait.

实验二讲评 … 张榆….

Similar presentations


Presentation on theme: "实验二讲评 … 张榆…."— Presentation transcript:

1 实验二讲评 张榆…

2 完成情况 未交实验报告 陈东旭 孔令晗 詹捷浩 田城宇 王党同 王灏 有两位同学抄袭别人的报告!

3 存在的问题 在图形界面中编辑表的数据时,需要回车来确认插 入(或修改)该行数据

4 建数据库(create database)
sql语句 create database school; 查看master数据库的系统视图sys.databases

5 建表(create table) 创建“学生选课表”SCT sql语句: use school; create table SCT
(ID int not null primary key identity(1,1), Sno varchar(5) not null, Cno varchar(3) not null, Tno varchar(4) not null, Grade decimal(5,1) null ); sql语句中存在的问题: 1、有少数同学忘了添加identity这个约束; 2、少数同学没有设定identity的(初始值,步长),这样系统会使用默认值,也就是本题的要求初始值和步长均为1;

6 建表(create table) 查看school数据库的系统视图 sys.tables sys.columns sys.indexes

7 建表(create table) 查看school数据库的系统视图 sys.key_constraints
sys.identity_columns sys.objects

8 添加约束(add constraint) 为表SCT的属性列Sno,Cno,Tno分别添加外键约束 sql语句: use school;
alter table SCT add constraint sno_foreignkey foreign key (Sno) references Student(Sno); add constraint cno_foreignkey foreign key (Cno) references Course(Cno); add constraint tno_foreignkey foreign key (Tno) references Teacher(Tno); 该类sql语句存在的问题: 1、在添加约束条件的时候没有为约束起名,这样的话,在当我们需要删除该约束的时候,就无法使用sql来删除该约束了(在后面详述); 2、以分号“;”来标识一条sql语句的结束,在这个例子中,如果忘了在每个sql语句后面添加分号的话,那么在执行的时候实惠报错的

9 添加约束(add constraint) 为表SCT的属性列Sno,Cno,Tno分别添加外键约束 sql语句: use school;
alter table SCT add constraint sno_foreignkey foreign key (Sno) references Student(Sno); add constraint cno_foreignkey foreign key (Cno) references Course(Cno); add constraint tno_foreignkey foreign key (Tno) references Teacher(Tno); 该类sql语句存在的问题: 1、在添加约束条件的时候没有为约束起名,这样的话,在当我们需要删除该约束的时候,就无法使用sql来删除该约束了(在后面详述); 2、以分号“;”来标识一条sql语句的结束,在这个例子中,如果忘了在每个sql语句后面添加分号的话,那么在执行的时候实惠报错的

10 添加约束(add constraint) 为表SCT的属性列Sno,Cno,Tno分别添加外键约束 sql语句: use school;
alter table SCT add constraint sno_foreignkey foreign key (Sno) references Student(Sno); add constraint cno_foreignkey foreign key (Cno) references Course(Cno); add constraint tno_foreignkey foreign key (Tno) references Teacher(Tno); 该类sql语句存在的问题: 1、在添加约束条件的时候没有为约束起名,这样的话,在当我们需要删除该约束的时候,就无法使用sql来删除该约束了(在后面详述); 2、以分号“;”来标识一条sql语句的结束,在这个例子中,如果忘了在每个sql语句后面添加分号的话,那么在执行的时候将会报错的

11 添加约束(add constraint) 查看school数据库的系统视图 sys.foreign_keys

12 删除表 (delete table) 删除表Course 可能的sql语句: use school; drop table Course;
执行结果: use school; drop table Course;

13 删除表 (delete table) 删除表Course 可能的sql语句: use school; drop table Course;
执行结果: 正确的sql语句: use school; drop table Course; use school; alter table SCT drop constraint cno_foreignkey; drop table Course;

14 删除数据库(delete database)
删除数据库school 可能的sql语句: 执行结果: drop database school; 注意:删除表和数据库的操作都要求通过sql语句来完成;

15 删除数据库(delete database)
删除数据库school 可能的sql语句: 执行结果: 出错原因: 所打开的sql语句执行窗口是在school数据库的环境下打开的,因此该 语句是在数据库school环境下执行的! drop database school; 注意:删除表和数据库的操作都要求通过sql语句来完成;

16 删除数据库(delete database)
方法一: 在sql语句中通过语句“use master;”来表明在系统数据库master环境下 执行删除数据看school的sql语句; 方法二: 选中系统数据库master; 在该环境下打开sql语句执行窗口,并执行sql语句(如下); use master; drop database school; 注意:删除表和数据库的操作都要求通过sql语句来完成; drop database school;

17 sql语句执行流程(伪码) sql语句: DDL处理流程(DDL解释器) CREATE TABLE test (id int ,
name varchar(10) ); 写出主要的执行步骤即可,即它是如何从提交的sql语句中提取出有效的表名、列名等信息,并写入相关的系统表或系统视图中的,例如……

18 sql语句执行流程(伪码) DDL处理流程(DDL解释器): interpret(sql) {
t_name = extract_table_name(sql); if(validate_table_name(t_name)) insert_into_dict(sys.objects, t_name); insert_into_dict(sys.tables, t_name); col_name_and_datatype = extract_col_info(sql); while(col_name_and_datatype != NULL) insert_into_dict(sys.columns, col_name_and_datatype); }

19 sql语句执行流程(伪码) DDL处理流程(DDL解释器): interpret(sql) {
t_name = extract_table_name(sql); if(validate_table_name(t_name)) insert_into_dict(sys.objects, t_name); insert_into_dict(sys.tables, t_name); col_name_and_datatype = extract_col_info(sql); while(col_name_and_datatype != NULL) insert_into_dict(sys.columns, col_name_and_datatype); }

20 sql语句执行流程(伪码) DDL处理流程(DDL解释器): interpret(sql) {
t_name = extract_table_name(sql); if(validate_table_name(t_name)) insert_into_dict(sys.objects, t_name); insert_into_dict(sys.tables, t_name); col_name_and_datatype = extract_col_info(sql); while(col_name_and_datatype != NULL) insert_into_dict(sys.columns, col_name_and_datatype); }

21 sql语句执行流程(伪码) DDL处理流程(DDL解释器): interpret(sql) {
t_name = extract_table_name(sql); if(validate_table_name(t_name)) insert_into_dict(sys.objects, t_name); insert_into_dict(sys.tables, t_name); col_name_and_datatype = extract_col_info(sql); while(col_name_and_datatype != NULL) insert_into_dict(sys.columns, col_name_and_datatype); }

22 实验之星 刘力 王金予 岳茜 陆雪妤

23 THANK YOU !


Download ppt "实验二讲评 … 张榆…."

Similar presentations


Ads by Google