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小时内删除。