sqlite3实验指导书
——2014版本
实验3 sqlite中的高级sql
实验目的:
sql查询语句实例大全 1.熟练掌握在数据库中插入、修改和删除数据的操作方法,加深对标准sql更新语句的理解。
2.了解sqlite中用约束来维护数据完整性的机制。掌握在sqlite中如何创建、使用及删除约束的方法。
3.掌握在sqlite中创建、删除视图的sql语句的用法,加深理解视图的用途。
4.掌握在sqlite中创建、删除索引的sql语句,加深理解索引的用途。
5.掌握在sqlite中创建、删除触发器的sql语句的用法,加深理解触发器的用途。
6.掌握在sqlite中创建事务的sql语句的用法,加深理解事务的各种冲突解决方案。
实验内容:
1.基于实验一创建的教学管理jxgl数据库,参考教材数据更新的sqlite操作实例,实现数据的插入、修改和删除操作。
2.基于实验一创建的供应系统gyxt数据库,实现数据的插入、修改和删除操作。
3.基于实验一创建的教学管理jxgl数据库,实现约束的创建、查看和删除操作。
4.创建人事关系rsgx数据库及其中的职工数据表和部门数据表,并实现完整性约束条件的定义。
5.基于实验一创建的教学管理jxgl数据库及供应系统gyxt数据库,参考教材视图的sql操作实例,实现视图的创建、删除、查询操作。
6.基于jxgl数据库,学习如何创建索引。
7.基于jxgl数据库,创建触发器,体会触发器的作用。
8.基于jxgl数据库,参考教材上事务的应用实例,掌握事务的创建及各种冲突解决方案的用法。
实验步骤:
1.在教学管理jxgl数据库中进行如下操作:
(1) 将一个新学生记录(学号:200215126;姓名:陈冬;性别:男;所在系:is;年龄:18)插入student表中。
insert into student values(200215126,陈冬,男,18,is);
(2) 数据的插入操作:插入一条选课记录,学号为200215126的学生选修了1号课程。
(3) 对每门课程,求学生的平均分数,并把结果存入数据库。
(4) 将学生200215126转到数学系。
(5) 所有学生成绩乘系数0.8。
(6) 删除200215126学生的记录。
(7) 删除数学系所有学生的选课记录。
2.在供应系统gyxt数据库中进行如下操作:
(1) 往s,p,j,spj表中插入部分数据(此题实验一已完成)
(2) 将供应商序号为s5的名称改为宏民厂。
(3) s表中删除供应商序号为s5的记录,考虑对spj表的相应操作。
(4) 在s表中插入一条供应商信息:(s6,华天,深圳)。
(5) 把全部红零件的颜改为粉红。
(6) 将s1供应给j1的零件p1改为由s2供给。
(7) 删去全部蓝零件及相应的spj记录。
3.完整性约束
约束是sqlite提供的自动强制数据完整性的一种方法,它是通过定义列的取值规则来维护数据的完整性。常用的约束是not null(非空)、unique(唯一性)、defalt(默
认)、check(检查)、primary key(主键)、foreign key(外键)等约束。
在教学管理jxgl数据库中进行如下操作:
(1) 建立一个city表(cityno,cityname),将cityno指定为主键。
用sql语句创建主键,可使用create table命令完成:
create table city
( cityno integer primary key,
cityname varchar(20) not null);
(2) 针对jxgl数据库中的city表,为其“cityname”创建惟一约束。
先删除已经已存的city表,重新修改上面的create table语句,增加创建惟一约束的内容,
sql语句如下:
drop table city;
create table city
( cityno integer primary key,
cityname varchar(20) unique not null );
(3) 为jxgl数据库中的sc表,为其“sno”和“cno”创建外键约束,为其“grade”创建检查取值范围为[0,100]的约束。
先删除已经已存的sc表,重新修改原来的create table语句,增加创建check约束的内容,sql语句如下:
drop table sc;
create table sc(sno integer references student(sno),cno integer references course(cno),grade integer,primary key(sno,cno) ,check(grade>=0 and grade<=100));
(4) 为jxgl数据库中的student表,为其“ssex”创建默认约束?m?。
4.创建人事关系rsgx数据库,并定义职工和部门两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码;
部门(部门号,名称,经理名,电话),其中部门号为主码;
要求在模式中完成以下完整性约束条件的定义:
(1) 定义每个模式的主码;
(2) 定义参照完整性;
(3) 定义职工年龄不得超过60岁。
5.在教学管理jxgl数据库中进行如下操作:
(1) 建立一个名为“cs_student”的计算机系学生视图,并要求进行修改和插入操作时仍须保证该视图只有计算机系的学生。(注:计算机系的sdept值为“cs”;在使用该视图时,将
显示student表中的所有字段。)
输入下列sql语句,然后运行,输出结果。
create view cs_student
as
select sno,sname,ssex,sage
from student
where sdept=cs;
(2) 建立计算机系选修了1号课程的学生的视图cs_s1。(注:使用上题建立的视图cs_student。)
(3) 删除视图cs_s1。
(4) 在计算机系学生视图cs_student中出选修了“数据库”课程且成绩在90分以上的学生。
sqlite> select vs.sno,sname from cs_student vs,sc,course c where vs.sno=sc.sno a nd co=sco and came=数据库 and grade>90;
6.在供应系统gyxt数据库中进行如下操作:
(1) 创建视图vsj,它记录了给“三建”工程项目的供应零件的情况,包括供应商号、零件号和零件数量。
(2) 对vsj视图查询s1供应商的供货情况。
7.建立索引可加快表的查询速度。dbms一般会在主键列及唯一性列上自动建立索引。
注意:索引是由表的创建者创建的,但表的维护及使用是由dbms自动完成的,用户及dba无法干预。
(1) 创建1张表lx,并以其为基础创建唯一性索引。
create table lx(a text, b text);
create unique index idx_lx on lx(a,b);
insert into lx values(?010?,?beijing?);
insert into lx values(?025?,?nanjing?);
select * from lx;
insert into lx values(?010?,?beijin?);
此语句出错,为什么?
(2) 在jxgl数据库中的student表的sname字段上创建不区分大小写的索引。 create index idx_student_sname on student(sname collate nocase);
8.基于示例数据库foods,学习触发器的创建及应用。
1)触发器练习1篇二:sqlite3命令方式操作大全
sqlite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向sqlite数据
库的sql命令。本文档提供一个样使用sqlite3的简要说明.
一.qlite3一些常用sql语句操作
创建表:
删除表:
插入数据:
创建索引:
删除索引:
删除数据:
更新数据:
增加一个列:
选择查询:create table 表名(元素名 类型,…); drop table 表名;insert into 表名 values(, , ,) ; create [unique] index 索引名on 表名(col….); drop index 索引名(索引是不可更改的,想更改必须删除重新建) delete from 表名;update 表名 set 字段=’修改后的内容’ where 条件; alter table 表名 add column 字段 数据类型;select 字段(以”,”隔开) from 表名 where 条件;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论