数据库实验sql命令文档格式.docx
《数据库实验sql命令文档格式.docx》由会员分享,可在线阅读,更多相关《数据库实验sql命令文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
(CHAR型),工程项目代码JNO(CHAR型),供应数量QTY(INT型)。
CREATETABLESPJ
PNOCHAR,
JNOCHAR,
QTYINT
2.修改基本表
1)在P表中加入属性零件产地CITY(CHAR型)。
ALTERTABLEPADDCITYCHAR
2)将P表中的属性WEIGHT类型改为SMALLINT型。
ALTERTABLEPALTERCOLUMNWEIGHTSMALLINT
3)删除刚才在P表中加入的零件产地CITY属性。
ALTERTABLEPDROPCOLUMNCITY
3.删除基本表
1)在所有操作结束后删除S表。
DROPTABLES
2)在所有操作结束后删除P表。
DROPTABLEP
3)在所有操作结束后删除J表。
DROPTABLEJ
4)在所有操作结束后删除SPJ表
DROPTABLESPJ
二、索引操作
1.建立索引
1)在S表上建立关于SNO的唯一索引。
CREATEUNIQUEINDEXSUPPLY_SNOONS(SNO)
2)在J表上建立关于JNO升序的唯一索引。
CREATEUNIQUEINDEXPROJECT_JNOONJ(JNOASC)
2.删除索引
1)删除S表上的索引supply_sno。
DROPINDEXS.SUPPLY_SNO
2)删除J表上的索引project_jno。
DROPINDEXJ.PROJECT_JNO
三、视图操作
1.建立视图
在插入数据的S,P,J,SPJ基本表上为三建工程项目记录建立一个视图V_SPJ,包括供应
商代码SNO,零件代码PNO,供应数量QTY。
CREATEVIEWV_SPJ
ASSELECTSNO,PNO,QTY
FROMS,P,J,SPJ
2.根据视图完成查询
1)查询三建工程项目中供应商S1的供应情况。
SELECT*
FROMV_SPJ
WHERESNO=S1
2)查询三建工程项目使用的各种零件代码及其数量。
SELECTPNO,QTY
3.删除视图
在操作结束后删除视图V_SPJ。
DROPVIEWV_SPJ
(二)数据操作
一、更新操作
1.插入数据
1)向S表插入下列数据:
S1,精益,20,天津
S2,盛锡,10,北京
S3,东方红,30,北京
S4,丰泰盛,20,天津
S5,为民,30,上海
INSERTINTOSVALUES(‘S1’,’精益’,’20’,’天津’)
INSERTINTOSVALUES(‘S2’,’盛锡’,’10’,’北京’)
INSERTINTOSVALUES(‘S3’,’东方红’,’30’,’北京’)
INSERTINTOSVALUES(‘S4’,’丰泰盛’,’20’,’天津’)
INSERTINTOSVALUES(‘S5’,’为民’,’30’,’上海’)
2)向P表插入下列数据:
P1,螺母,红,12
P2,螺栓,绿,17
P3,螺丝刀,蓝,14
P4,螺丝刀,红,14
P5,凸轮,蓝,40
P6,齿轮,红,30
INSERTINTOPVALUES(‘P1’,’螺母’,’红’,’12’)
INSERTINTOPVALUES(‘P2’,’螺栓’,’绿’,’17’)
INSERTINTOPVALUES(‘P3’,’螺丝刀’,’蓝’,’14’)
INSERTINTOPVALUES(‘P4’,’螺丝刀’,’红’,’14’)
INSERTINTOPVALUES(‘P5’,’凸轮’,’蓝’,’40’)
INSERTINTOPVALUES(‘P6’,’齿轮’,’红’,’30’)
3)向J表插入下列数据:
J1,三建,北京
J2,一汽,长春
J3,弹簧厂,天津
J4,造船厂,天津
J5,机车厂,唐山
J6,无线电厂,常州
J7,半导体厂,南京
INSERTINTOJVALUES(‘J1’,’三建’,’北京’)
INSERTINTOJVALUES(‘J2’,,’一汽’,’长春’)
INSERTINTOJVALUES(‘J3’,’弹簧厂’,’天津’)
INSERTINTOJVALUES(‘J4’,’造船厂’,’天津’)
INSERTINTOJVALUES(‘J5’,’机车厂’,’唐山’)
INSERTINTOJVALUES(‘J6’,’无线电厂’,’常州’)
INSERTINTOJVALUES(‘J7’,’半导体厂’,’南京’)
4)向SPJ表插入下列数据:
S1,P1,J1,200
S1,P1,J3,100
S1,P1,J4,700
S2,P3,J1,400
S1,P2,J2,100
S2,P3,J2,200
S2,P3,J4,500
S2,P3,J5,400
S2,P5,J1,400
S2,P5,J2,100
S3,P1,J1,200
S3,P3,J1,200
S4,P5,J1,100
S4,P6,J3,300
S4,P6,J4,200
S5,P2,J4,100
S5,P3,J1,200
S5,P6,J2,200
S5,P6,J4,500
INSERTINTOSPJVALUES(‘S1’,’P1’,’J1’,’200’)
INSERTINTOSPJVALUES(‘S1’,’P1’,’J3’,’100’)
INSERTINTOSPJVALUES(‘S1’,’P1’,’J4’,’700’)
INSERTINTOSPJVALUES(‘S2’,’P3’,’J1’,’400’)
INSERTINTOSPJVALUES(‘S1’,’P2’,’J2’,’100’)
INSERTINTOSPJVALUES(‘S2’,’P3’,’J2’,’200’)
INSERTINTOSPJVALUES(‘S2’,’P3’,’J4’,’500’)
INSERTINTOSPJVALUES(‘S2’,’P3’,’J5’,’400’)
INSERTINTOSPJVALUES(‘S2’,’P5’,’J1’,’400’)
INSERTINTOSPJVALUES(‘S2’,’P5’,’J2’,’100’)
INSERTINTOSPJVALUES(‘S3’,’P1’,’J1’,’200’)
INSERTINTOSPJVALUES(‘S3’,’P3’,’J1’,’200’)
INSERTINTOSPJVALUES(‘S4’,’P5’,’J1’,’100’)
INSERTINTOSPJVALUES(‘S4’,’P6’,’J3’,’300’)
INSERTINTOSPJVALUES(‘S4’,’P6,’J4’,’200’)
INSERTINTOSPJVALUES(‘S5’,’P2’,’J4’,’100’)
INSERTINTOSPJVALUES(‘S5’,’P3’,’J1’,’200’)
INSERTINTOSPJVALUES(‘S5’,’P6’,’J2’,’200’)
INSERTINTOSPJVALUES(‘S5’,’P6’,’J4’,’500’)
2.修改数据
1)将全部红色零件的颜色改成蓝色。
UPDATEP
SETCOLOR=’蓝色’
WHERECOLOR=’红色’
2)将由S5供给J4的零件P6改成由S3供应。
UPDATESPJ
SETSNO=’S3’
WHERESNO=’S5’ADDJNO=’J4’ADDPNO=’P6’
3.删除数据
从供应商关系S中删除S2的纪录,并从供应情况关系SPJ中删除相应的纪录。
DELETE
FROMS
WHERESNO=’S2’
FROMSPJ
二、查询操作
1.单表查询
1)找出所有供应商的姓名和所在城市。
SELECTSNAME,CITY
2)找出所有零件的名称、颜色、重量。
SELECTPNAME,COLOR,WEIGHT
FROMP
3)查询供应工程J1零件的供应商号码SNO。
SELECTSNO
WHEREJNO=’J1’
4)查询供应工程J1零件P1的供应商号码SNO。
WHEREJNO=’J1’ANDPNO=’P1’
2.连接查询
1)查询供应工程J1零件为红色的供应商号码SNO。
FROMP,SPJ
WHEREP.PNO=SPJ.PNOANDJNO=’J1’ANDCOLOR=’红’
2)查询工程项目J2使用的各种零件的名称及其数量。
SELECTPNAME,QTY
WHEREP.PNO=SPJ.PNOANDJNO=’J2’
3)查询使用上海产的零件的工程名称。
SELECTJNAME
FROMS,P,SPJ
WHERES.SNO=SPJ.SNOANDP.PNO=SPJ.PNOANDS.CITY=’上海’
3.嵌套查询
WHEREPNOIN(SELECTPNO
WHERECOLOR=’红’)
2)查询没有使用天津供应商生产的红色零件的工程号JNO。
SELECTJNO
WHERESNOIN(SELECTSNO
WHERECITY!
=’天津’)
ANDPNOIN(SELECTPNO
3)查询至少用了供应商S1所提供的全部零件的工程号JNO。
WHERESNO=’S1’
4)查询上海厂商供应的所有零件号码。
SELECTPNO
WHERECITY=’上海’)
5)查询使用上海产的零件的工程名称。
FROMJ
WHEREJNOIN(SELECTJNO
WHERECITY=’上海’))
6)查询没有使用天津产的零件的工程号码。
实验二:
安全性
(一)授权与回收。
【例1】授权。
在KingbaseES中建立多个用户,给他们赋予不同的权限,然后查看是否真正拥有被授予的权限了。
1)建立用户U1、U2、U3、U4、U5、U6、U7,选择全部为Connect角色。
点击管理-用户管理-新建用户,建立U1-U7用户
2)在SYSTEM(即DBA)与七个Connect用户之间进行授权。
[1-1]把查询Student表的权限授给用户U1。
grantselectonstudenttoU1
[1-2]把对Student表和Course表的全部操作权限授予用户U2和U3。
grantallonstudenttoU2
grantallonstudenttoU3
grantalloncoursetoU2
grantalloncoursetoU3
[1-3]把对表SC的查询权限授予所有用户。
grantselectonsctoU1
grantselectonsctoU2
grantselectonsctoU3
grantselectonsctoU4
grantselectonsctoU5
grantselectonsctoU6
grantselectonsctoU7
[1-4]把查询Student表和修改学生学号的权限授给用户U4。
grantselectonstudenttoU4
grantupdate(sno)onstudenttoU4
[1-5]把对表SC的INSERT权限授予U5,并允许U5将此权限再授予其他用户。
grantinsertonsctoU5withgrantoption
[1-6]用户U5将对表SC的INSERT权限授予U6,并允许将权限转授给其他用户。
切换至用户5,grantinsertonsctou6withgrantoption
实验三:
完整性
1.实体完整性
定义表的主码。
关系模型的实体完整性在CREATETABLE中用PRIMARYKEY定义。
定义主码的方法
分为定义为列级约束条件和定义为表级约束条件两种。
[4-1]定义表Student,并将其中的Sno属性定义为主码。
createtablestudent
(snochar(7)primarykey,
snamechar(8),
ssexchar
(2),
sagesmallint,
sdeptchar(20)
[4-2]定义表SC,将其中的属性Sno,Cno定义为主码。
对于多个属性构成的码,只能够将其定义为表级约束条件,而无法用列级约束条件来实现。
createtablesc
(snochar(9),
cnochar(4),
gradesmallint,
primarykey(sno,cno)
参照完整性。
定义表的外码。
关系模型的参照完整性是在CREATETABLE中用FOREIGNKEY语句来定义的,并用REFERENCES来指明外码参照的是哪些表的主码。
定义表SC,其中Sno参照表Student的主码Sno,Cno参照表Course的主码Cno。
createtablecourse
(cnointunique,
cnamechar(20)notnull,
tnoint,
creditint,
primarykey(cno,tno)
(snochar(7),
primarykey(cno,sno),
foreignkey(sno)referencesstudent(sno),
foreignkey(cno)referencescourse(cno)
3.用户定义完整性。
用户定义的属性上的约束条件。
[6-1]列值非空。
在定义SC表时,Sno、Cno和Grade属性都不允许取空值。
在不特别声明的情况下,非码属性的值是允许取空值的。
(snochar(9)notnull,
cnochar(4)notnull,
gradesmallintnotnull,
[6-2]列值唯一。
建立部门表DEPT,要求部门名称Dname取值唯一,部门编号Deptno属性为主码。
createtabledept
(dnamechar(10)unique,
deptnonumeric
(2)primarykey
[6-3]CHECK短语指定列值应该满足的条件。
定义表Student,属性Ssex的值只允许取“男”或“女”;
定义表SC,属性Grade的值定义在0-100之间。
(snochar(9)primarykey,
snamechar(8),
ssexchar
(2)check(ssexin(‘男’,‘女’)),
sagesmallint,
)
gradesmallintcheck(grade>
=0andgrade<
=100),