数据定义
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);