江科大数据库实验

数据定义

cd 到桌面,然后运行(按要求学号后三位+db即可)代码如下:

sqlite3 108.db

运行结果如下

教师表(JS)

复制下面的代码然后粘贴到cmd中

create table JS(
    Tno varchar(7),
    Tname varchar(10),
    Tsex varchar(2),
    Birthday datatime,
    Dept varchar(20),
    Sid varchar(18)
);

插入

INSERT INTO JS VALUES('Too1','刘威','女','1971-3-20','电信','551021197103203121');
INSERT INTO JS VALUES('Too2','张琪劲','男','1963-7-13','数理','32010119630713318X');
INSERT INTO JS VALUES('Too3','李子文','女','1973-9-15','电信','551021197103203121');
INSERT INTO JS VALUES('Too4','江海防','女','1960-2-18','社科','560102196002185623');
INSERT INTO JS VALUES('Too5','李铁','男','1977-10-11','数理','230103197710118632');
INSERT INTO JS VALUES('Too6','吴天一','男','1962-4-23','电信','320104196204237516');
INSERT INTO JS VALUES('Too7','赵志华','男','1968-8-27','社科','321102196808277214');
INSERT INTO JS VALUES('Too8','钱进','男','1980-7-10','电信','570102198007103452');
INSERT INTO JS VALUES('Too9','孙星南','女','1981-3-2','外语','110102198103024125');
select * from JS;

课程表(Course)

复制下面的代码然后粘贴到cmd中

create table Course(
    Cno varchar(10),
    Cname varchar(20),
    Credit integer,
    property varchar(10),
    Hours integer
);

插入数据:

INSERT INTO Course VALUES('01010101','大学英语1',4,'考试','');
INSERT INTO Course VALUES('01010102','普通物理1',4,'考试','');
INSERT INTO Course VALUES('01010103','高等数学1',6,'考试','');
INSERT INTO Course VALUES('01010104','形势政策',2,'考查','');
INSERT INTO Course VALUES('01010105','计算机基础',4,'考查','');

授课表

create table SK(
    Tno varchar(7),
    Cno varchar(10),
    Hours integer
);

插入数据:

INSERT INTO SK VALUES('T001','01010105',64);
INSERT INTO SK VALUES('T002','01010102',64);
INSERT INTO SK VALUES('T009','01010101',64);
INSERT INTO SK VALUES('T004','01010104',32);
INSERT INTO SK VALUES('T005','01010103',96);
INSERT INTO SK VALUES('T006','01010105',64);
INSERT INTO SK VALUES('T003','01010101',64);
select * from SK;

修改表结构

1)在授课表中添加一个授课类别,列名为Type,类型为char(4)

ALTER TABLE SK ADD COLUMN Type char(4);

查看更改结果

select * from sqlite_master where type = "table";


更改完毕

2)将授课表中的Hours的类型改为Smallint

因为Sqllite不能修改字段或者删除字段,这里我直接删表重建。如果是mysql就使用alter table news modify column Hours smallint;

drop table SK;
create table SK(
    Tno varchar(7),
    Cno varchar(10),
    Hours Smallint
);
INSERT INTO SK VALUES('T001','01010105',64);
INSERT INTO SK VALUES('T002','01010102',64);
INSERT INTO SK VALUES('T009','01010101',64);
INSERT INTO SK VALUES('T004','01010104',32);
INSERT INTO SK VALUES('T005','01010103',96);
INSERT INTO SK VALUES('T006','01010105',64);
INSERT INTO SK VALUES('T003','01010101',64);
select * from SK;

3)删除课程表的Hours列

和上面一个道理

drop table SK;
create table SK(
    Tno varchar(7),
    Cno varchar(10)
);
INSERT INTO SK VALUES('T001','01010105');
INSERT INTO SK VALUES('T002','01010102');
INSERT INTO SK VALUES('T009','01010101');
INSERT INTO SK VALUES('T004','01010104');
INSERT INTO SK VALUES('T005','01010103');
INSERT INTO SK VALUES('T006','01010105');
INSERT INTO SK VALUES('T003','01010101');
select * from SK;

完成以下功能:

1) 定义表students

其中字段有:SNO CHAR(10) 、 SNAME CHAR(8) 、 AGE NUMERIC(3,0)、 SEX CHAR(2)、 BPLACE CHAR(20)、Polity CHAR(20)。要求SNO和SNAME不为空,SNO为主键。

create table students(
    SNO CHAR(10) PRIMARY KEY NOT NULL,
    SNAME CHAR(8) NOT NULL,
    AGE NUMERIC(3,0),
    SEX CHAR(2),
    BPLACE CHAR(20),
    Polity CHAR(20)
);

2) 在教师表JS中增加住址列

字段名为ADDR,类型为 CHAR,长度50。

ALTER TABLE JS ADD COLUMN TDDR char(50);

3) 根据students表

建立一个只包含学号、姓名、年龄的女学生表,表名为GRIL。

create table GRIL(
    SNO CHAR(10) PRIMARY KEY NOT NULL,
    SNAME CHAR(8) NOT NULL,
    AGE NUMERIC(3,0)
);

4) 建立一成绩表

表名为score,其中字段有:SNO CHAR(10),CNO CHAR(10),scoreNUMERIC(6,0),并输入部分记录,内容自定

create table score(
    SNO CHAR(10),
    CNO CHAR(10),
    score NUMERIC(6,0)
);

insert into students values('8101','张三','','','','');
insert into students values('8102','李四','','','','');
insert into score values('8101','01010101',60);

定义索引

在数据库中的新建一个数据表

名为js1,结构与js表相同。为js1表创建一个唯一聚集索引,索引字段为Sid,索引名为I_js_sid。

create table JS1(
    Tno varchar(7),
    Tname varchar(10),
    Tsex varchar(2),
    Birthday datatime,
    Dept varchar(20),
    Sid varchar(18)
);
create INDEX I_js_sid ON JS1 (Sid);
SELECT * FROM sqlite_master WHERE type = 'index';

为数据库中的course数据表

创建一个复合索引,索引名为I_cource_xf,使用Cno和Credit字段

CREATE INDEX I_cource_xf on Course(Cno, Credit);
SELECT * FROM sqlite_master WHERE type = 'index';

完成后输入.exit退出

思考与实践

1.创建“图书借阅数据库”。
2.修改“图书借阅数据库”,相关参数自行确定。
3.在“图书借阅数据库”中创建以下四个表,并分别为这四个表写入部分数据,内容自定(提醒:各表数据之间的相关性)

创建个数据库

sqlite3 图书借阅.db

cmd中运行如下sql语句

create table JS(
    Jsno varchar(6),
    Jname varchar(10),
    Jdw varchar(20)
);
create table TS(
    Tsno varchar(15),
    Tname varchar(20),
    Tnum smallint,
    Tpos varchar(30),
    Cno varchar(4)
);
create table CBS(
    Cno varchar(4),
    Cname varchar(20),
    Ctel varchar(12),
    Cyb varchar(6),
    Caddr varchar(40)
);
create table JY(
    Jsno varchar(6),
    Tsno varchar(15),
    Jydate datetime,
    Hdate datetime
);
.table

运行效果如下

插入数据

insert into JS values('000000','张三','江科大');
insert into JS values('000001','李四','江科大');
insert into JS values('000002','王五','江科大');
insert into TS values('0000000001','第一本书',10,'江苏镇江','0001');
insert into TS values('0000000002','第二本书',10,'江苏镇江','0001');
insert into TS values('0000000003','第三本书',10,'江苏镇江','0001');
insert into TS values('0000000004','第四本书',10,'江苏镇江','0001');
insert into CBS values('0001','江科大出版社','12345678910','111111','江科大');
insert into JY values('000000','0000000001','2019-11-18','2019-11-18');

创建视图

TS_view
CREATE VIEW TS_view AS select Tsno,Tname,Cname,Tnum from TS,CBS where TS.Cno=CBS.Cno;
select * from TS_view;

Jy_view
CREATE VIEW Jy_view AS
select JS.Jsno,Jname,TS.Tname,TS.Cno,Jydate,Cname,Hdate from JS,TS,CBS,JY where JS.Jsno = JY.Jsno and TS.Tsno=JY.Tsno;
select * from Jy_view;

建立索引

随便建建

create INDEX ts_index ON TS(Tsno);
create INDEX jy_index ON JY(Jsno);
create INDEX cbs_index ON CBS(Cno);
create INDEX js_index ON JS(Jsno);

猜你喜欢

转载自www.cnblogs.com/godoforange/p/11882883.html