建材秒知道
登录
建材号 > 设计 > 正文

数据库程序设计主要是学什么

粗暴的未来
任性的钻石
2023-01-01 12:35:37

数据库程序设计主要是学什么

最佳答案
痴情的巨人
靓丽的便当
2025-12-06 14:31:52

数据库是软件学科的专业课程之一,软件专业需要学的有:

操作系统、数据结构、软件工程、数据库原理等。

其中数据库原理是最核心的课程之一。从应用角度上讲,软件=程序+数据,数据库是软件的一部分,软件运行时需要的数据组织在一起,使用专门的数据库管理系统进行管理。

大型软件的开发一般分为软件(程序)设计、数据库设计。数据库设计主要完成数据建模、数据结构定义、查询优化等。

最新回答
复杂的长颈鹿
标致的项链
2025-12-06 14:31:52

根据大家反馈,是有些难度的

难度原因:

(1)无法接受它的描述方式。数据结构的描述大多是抽象的形式,我们习惯了使用自然语言表达,难以接受数据结构的抽象表达。不止一个学生问我,书上的“ElemType”到底是什么类型?运行时怎么经常提示错误。它的意思就是“元素类型”,只是这样来描述,你需要什么类型就写什么类型,例如int。这样的表达方式会让不少人感到崩溃。

(2)不知道它有什么用处。尽管很多人学习数据结构,但目的各不相同。有的人是应付考试,有的人是参加算法竞赛需要,而很多人不太清楚学习数据结构有什么用处,迷迷糊糊看书、做题、考试。

(3)体会不到其中的妙处。由于教材、教师等各种因素影响,很多学生没有体会到数据结构处理数据的妙处,经常为学不会而焦头烂额,学习重在体会其中的乐趣,有乐趣才有兴趣,兴趣是最好的驱动力。

(4)语言基础不好。我一直强调先看图解,理清思路,再上机。可还是有很多同学已经理解了思路后,因为缺少main函数,输入/输出格式不对,缺少括号等各种语言问题卡壳,而这一切都被戴上了“数据结构太难了”的大帽子。

数据是一切能输入计算机中的信息的总和,结构是指数据之间的关系。数据结构就是将数据及其之间的关系有效地存储在计算机中并进行基本操作。算法是对特定问题求解步骤的一种描述,通俗讲就是解决问题的方法和策略。

危机的冬瓜
还单身的路灯
2025-12-06 14:31:52
GZIP压缩格式简介在JDK API中 同样定义了多种类型用于创建和解除GZIP压缩格式数据文件的通用对象和方法 用于基于JDK编写GZIP压缩数据管理程序 GZIP压缩格式是在Sun Solaris操作系统中广泛采用的压缩数据格式 由于在数据压缩过程中可以采用多种类型的压缩算法 因此 压缩文件的压缩比很高 另外 在创建的压缩文件中 定义了用于表述时间和文件属主的时戳(Time Stamp) 可以使文件方便地在网络中传输和交换 GZIP压缩数据文件由一系列的数字构成 而各数字对应如下描述压缩文件信息的字段 ID 缺省值 用于标识GZIP压缩格式 ID 缺省值 用于标识GZIP压缩格式 CM 采用的压缩方法 其值为 ~ 是保留值 标识采用 deflate 压缩方法 FLG 用于标识各占用位的标志 MTIME 记录了最近修改时间 XFL 用于标识采用压缩算法的选项 OS 定义了操作系统类型 XLEN 定义了附加信息段的长度 M 压缩文件说明信息 CRC 记录了CRC 算法采用的循环冗余校验值 上述信息完整描述了GZIP压缩格式数据 当然 基于JDK开发的压缩数据管理程序 不需要明确知道上述压缩数据定义格式 只需要创建相应的管理对象并调用这些对象中定义的方法即可 JDK API中ZIP压缩格式支持对象GZIP压缩格式是在JDK API中定义支持的另外一种数据压缩格式 由上面介绍的GZIP格式数据压缩方法可知 GZIP压缩格式具有更大的压缩比 因此 在Unix操作系统中 这种类型的数据压缩形式的应用十分普及 与JDK API对ZIP压缩格式的支持不同 在JDK API中 只定义了GZIPInputStream和GZIPOutputStream两种类型的流(Stream)对象 用于在基于流的数据传输过程中实现数据压缩 这两个对象的继承定义结构如下所示 java lang Object|+ java io InputStream|+ java io FilterInputStream|+ java util zip InflaterInputStream|+ java util zip GZIPInputStream(java util zip GZIPOutputStream)以采用GZIP格式进行数据输入处理GZIPInputStream对象为例 由上述对象的继承定义结构可以看出 该对象继承了InflaterInputStream流对象 需要说明的是 在ZIP压缩包中 定义了Inflater和Deflater两个对象 用于基于ZLIB压缩库实现多种格式的数据压缩和解压缩 因此 InflaterInputStream流对象的作用是采用ZLIB库作为数据压缩管理的引擎 而GZIPInputStream对象则进一步将流的数据加工进行细化 用于读取GZIP格式的压缩数据 同理 GZIPOutputStream对象用于创建GZIP格式的压缩数据文件 下面 将对两个对象的定义内容进行说明 ●GZIPInputStream对象定义结构 java util zip GZIPInputStream静态成员变量 protected CRC crc 用于说明采用的数据压缩算法为CRC protected boolean eos 说明输入流对象结束读取输入数据 构造方法 GZIPInputStream(InputStream in) 采用默认的缓冲区字节数创建输入流对象 GZIPInputStream(InputStream in int size) 创建由整数类型变量size指定缓冲区字节数的输入流对象 成员方法 该对象只定义了如下两个成员方法 void close() 关闭输入流对象 int read(byte[] buf int off int len) 读取输入流的数据到buf字节数组中 ●GZIPOutputStream对象定义结构 java util zip GZIPOutputStream静态成员变量 protected CRC crc 用于说明采用的数据压缩算法为CRC 构造方法 GZIPOutputStream(OutputStream out) 采用默认的缓冲区字节数创建输出流对象 GZIPOutputStream(OutputStream out int size) 创建由整数类型变量size指定缓冲区字节数的输出流对象 成员方法 void close() 关闭输出流对象 void finish() 结束数据输出 但不关闭输出流对象 void write(byte[] buf int off int len) 将字节数组buf中的内容压缩输出到输出流对象中 创建GZIP压缩格式文件实例经过前面对JDK API中创建GZIP压缩格式文件的相关对象的结构 成员方法定义形式的说明 读者一定会问如何应用这些对象和对象中定义的成员方法呢?请读者看下面的实例代码 //ZipDemo javaimport java io *import java util zip *public class GZIPDemo { public static void main(String[] args) { if (args length != ) { System out println("Usage:java GZIPDemo SourceFile DestnFile" + args length)System exit( )} try { int number//打开需压缩文件作为文件输入流 FileInputStream fin = new FileInputStream(args[ ])//建立压缩文件输出流FileOutputStream fout=new FileOutputStream(args[ ])//建立GZIP压缩输出流 GZIPOutputStream gzout=new GZIPOutputStream(fout)//设定读入缓冲区尺寸byte[] buf=new byte[ ]while ((number = fin read(buf)) != ) gzout write(buf number)gzout close()fout close()fin close()}catch(IOException e) { System out println(e)} } }上面的程序用于将命令行中指定的文件SourceFile进行压缩 创建GZIP格式的压缩文件DestnFile 在该程序的实现代码中 首先创建用于进行文件输入和输出的FileInputStream和FileOutputStream对象 并以FileOutputStream对象实例为参数创建GZIPOutputStream对象实例 从而为创建GZIP格式压缩文件建立数据流基础 在随后的代码中 利用FileInputStream对象中定义的read方法 从源文件中读取待压缩文件的内容 同时利用GZIPOutputStream对象中定义的write方法将压缩后的数据写出到输出文件中 从而实现数据文件的GZIP格式压缩处理 在Java中创建GZIP格式压缩文件的方法很简单 并且利用WinZip WinRAR等类型的压缩管理软件均能够打开创建的GZIP格式的压缩文件 那么 如何利用JDK API中定义的对象将被压缩的文件解压缩呢?请读者看下一节的内容 GZIP格式文件解压缩实例下面的程序用于将利用JDK API中定义对象的成员方法 将GZIP格式压缩文件进行解压缩 从而恢复压缩原始文件 //UnGZIPDemo javaimport java io *import java util zip *public class UnGZIPDemo { public static void main(String[] args) { if (args length != ) { System out println("Usage:java UnGZIPDemo GZIPFile DestnFile")System exit( )} try { int number//建立GZIP压缩文件输入流 FileInputStream fin=new FileInputStream(args[ ])//建立GZIP解压工作流 GZIPInputStream gzin=new GZIPInputStream(fin)//建立解压文件输出流 FileOutputStream fout=new FileOutputStream(args[ ])//设定读入缓冲区尺寸byte[] buf=new byte[ ]while ((nnumber=gzin read(buf buf length)) != ) fout write(buf nnumber)gzin close()fout close()fin close()}catch(IOException e) { System out println(e)} } }在GZIP格式压缩文件解压缩程序代码中 仍然首先创建FileInputStream和FileOutputStream对象 并基于创建的FileInputStream对象创建GZIPInputStream对象 在随后的代码中 调用GZIPInputStream对象中定义的read方法 在从压缩文件中读取数据内容并进行解压缩处理后 将解除压缩后的数据内容利用文件输出流对象进行输出 从而实现数据文件的解压缩处理 小 lishixinzhi/Article/program/Java/hx/201311/27034

优雅的大炮
天真的龙猫
2025-12-06 14:31:52
语言程序设计是数据程序设计的基础,想JAVA、C等都是编程语言,数据库程序设计都是基于这些语言才能做的!

但是呢,你可以选择一中自己擅长的一种语言去学数据库程序设计!如果你C学的好,就用C编,如果JAVA学的好,就用JAVA编,这个是没有限制!

大气的冷风
稳重的画笔
2025-12-06 14:31:52
1.//存储结构:deque

//多项式相加的基本过程:(1)、两个多项式的最高次幂较高的那个,存入endPower;

// (2)、从ix=0开始,对多项式的对应项做运算;

// (3)、递增,如果ix>=endPower,结束;否则,重复2和3。

#include <deque>

#include <iostream>

using namespace std

class Expression {

public:

Expression() { int highestPower=0factors=deque<double>(0.0)}

~Expression() { factors.clear()}

bool create()

void display()

Expression &add( Expression &another )

Expression &subtract( Expression &another )

int HighestPower() const

double Factor( int index ) const

private:

int highestPower//最高次幂

deque<double>factors//系数(从最高次幂~0的系数都保存,如果某次幂不存在,则系数为0)

}

bool

Expression::

create() {

cout<<"Enter the highest power: "

cin>>highestPower

double dTemp

for( int ix=highestPowerix>=0--ix ) {

cout<<"Enter the factor of x^"<<ix<<" (double): "

cin>>dTemp

factors.push_front( dTemp )

}

return true

}

void

Expression::

display() {

for( int ix=highestPowerix>=0--ix ) {

if( ix<highestPower &&factors.at(ix)>0 )

cout<<"+"

if( factors.at(ix)!=0 ) {

cout<<factors.at(ix)

if( ix>0 )

cout<<"x"<<"^"<<ix

}

}

cout<<endl

}

Expression &

Expression::

add( Expression &another ) {

int endPower = (highestPower>another.HighestPower()) ? highestPower : another.HighestPower()

for( int ix=0ix<=endPower++ix ) {

if( ix>highestPower ) {

factors.push_back( another.Factor(ix) )

highestPower=ix

} else if( ix<=another.HighestPower() ){

factors.at(ix) += another.Factor(ix)

}

}

return *this

}

Expression &

Expression::

subtract( Expression &another ) {

int endPower = (highestPower>another.HighestPower()) ? highestPower : another.HighestPower()

for( int ix=0ix<=endPower++ix ) {

if( ix>highestPower ) {

factors.push_back( (-1)*another.Factor(ix) )

highestPower=ix

} else if( ix<=another.HighestPower() ){

factors.at(ix) -= another.Factor(ix)

}

}

return *this

}

int

Expression::

HighestPower() const {

return highestPower

}

double

Expression::

Factor( int index ) const {

return factors.at(index)

}

int main() {

Expression aExpression, bExpression

if( aExpression.create() )

aExpression.display()

if( bExpression.create() )

bExpression.display()

cout<<"aExpression.add( bExpression ): "<<endl

aExpression.add( bExpression )

aExpression.display()

cout<<"aExpression.subtract( bExpression ): "<<endl

aExpression.subtract( bExpression )

aExpression.display()

}

2.char *a

int m

cout<<"输入猴子个数:"<<endl

cin>>m

a=new char[m]

cout<<"输入N:"<<endl

int n

cin>>n

if(n>m)

{

cout<<"输入错误,必须小于M="<<m<<,重输入:"<<endl

cin>>n

}

for(int i=0i<mi++)

{

a[i]=1

}

bool c=true

for (int j=0j++)

{

for(int k=0k<mk++)

{

if(a[k]!=0)

{

c=false

break

}

else c=true

}

if(c!=true)//判断退出

break

if(j%n==0)

a[j%m]=0

}

int result=j%m

cout<<"最后猴子的序号是:"<<result<<endl

---------------2-----------------

insert(int arry[],int address,int data)

{

int l=arry.length()

for(int i=l-1i>addressi--)

{

arry[i]=arry[i-1]

}

arry[i]=data

}

sort01(int a[])

{

int temp

int l=a.length()

temp=a[0]

for(int i=1i<li++)

{

if(a[i]<temp)

insert(a,i-1,temp)

temp=a[i]

}

}

------------------------------------

swap(int *x,int *y)

{

int temp

temp=*x

*y=temp

*x=*y

}

l=a.length

temp1=a[0]temp2=a[1]

for(int k=0k<lk++)

for(int i=ki<li++)

{

if(a[i]>a[i+1])

swap(a[i],a[i+1)

}

3.//二叉树

struct node {

int key

node* left

node* right

}

//链表

struct list {

node* data

list* next

}

//队列

struct queue {

list* front

int count

list* rear

}

//Enqueue for Breadth-First Traversal

queue* BST::_enqueue (queue* Q, node* n) //进队

{

list* pNew = new list

pNew->data = n

pNew->next = NULL

if (Q->count == 0)

Q->front = pNew

else

Q->rear->next = pNew

Q->rear = pNew

Q->count++

return Q

}

//Dequeue for Breadth-First Traversal

node* BST::_dequeue (queue* &Q) //出队

{

if (Q->count == 1)

Q->rear = NULL

list* pDel = Q->front

node* temp = pDel->data

Q->front = Q->front->next

Q->count--

delete pDel

pDel = NULL

return temp

}

//Breadth-First Traversal (层序遍历)

void BST::_traverse (const node* T)

{

queue* Q = new queue

Q->front = Q->rear = NULL

Q->count = 0

while (T != NULL)

{

cout <<T->key <<" "

if (T->left != NULL)

Q = _enqueue (Q, T->left)//左孩子进队

if (T->right != NULL)

Q = _enqueue (Q, T->right)//右孩子进队

if (Q->count != 0) //排队输出下一个将要处理的节点

T = _dequeue (Q)

else //队列为空,跳出

T = NULL

}

return

}

你看看这个行不

诚心的背包
顺利的玉米
2025-12-06 14:31:52

姚津泓实验作业 网页链接可以看看

--实验一

create database test1

on

(name=test1,

filename='d:\3116004357姚津泓\test1.mdf',

size=10,

maxsize=50,

filegrowth=5)

log on

(name=test1_log,

filename='d:\3116004357姚津泓\test1.ldf',

size=5mb,

maxsize=25mb,

filegrowth=5mb)

create database test2

on

(name=test11,

filename='d:\3116004357姚津泓\test11.mdf',

size=10,

maxsize=50,

filegrowth=5),

(name=test22,

filename='d:\3116004357姚津泓\test22.ndf',

size=10,

maxsize=50,

filegrowth=5),

(name=test33,

filename='d:\3116004357姚津泓\test33.ndf',

size=10,

maxsize=50,

filegrowth=5)

log on

(name=test11_log,

filename='d:\3116004357姚津泓\test11.ldf',

size=5mb,

maxsize=25mb,

filegrowth=5mb),

(name=test22_log,

filename='d:\3116004357姚津泓\test22.ldf',

size=5mb,

maxsize=25mb,

filegrowth=5mb)

create database test3

on

(name=dab1,

filename='d:\3116004357姚津泓\dab1.mdf',

size=10,

maxsize=50,

filegrowth=5),

filegroup fg11 --第一个文件组

(name=dab2,

filename='d:\3116004357姚津泓\dab2.ndf',

size=10,

maxsize=50,

filegrowth=5),

filegroup fg22 --第二个文件组

(name=dat1,

filename='d:\3116004357姚津泓\dat1.ndf',

size=10,

maxsize=50,

filegrowth=5),

(name=dat2,

filename='d:\3116004357姚津泓\dat2.ndf',

size=10,

maxsize=50,

filegrowth=5),

filegroup fg33--第三个文件组

(name=daz1,

filename='d:\3116004357姚津泓\daz1.ndf',

size=10,

maxsize=50,

filegrowth=5),

(name=daz2,

filename='d:\3116004357姚津泓\daz2.ndf',

size=10,

maxsize=50,

filegrowth=5)

alter database test1

add file

(name=te,

filename='d:\3116004357姚津泓\te.ndf',

size=10,

maxsize=50,

filegrowth=5

)

alter database test2

modify file

(name=test11,

filename='d:\3116004357姚津泓\test11.mdf',

maxsize=55

)

drop database test1

--实验2--

create database 实验

create schema yaojinhong

create table yaojinhong.仓库

(

仓库号char(6)primary key check (仓库号like'[A-Z][A-Z][0-9][0-9][0-9][0-9]'),

城市char(10) unique not null,

面积 int check(面积>=50)

)

create table yaojinhong.职工

(

职工号char(8)primary key check (职工号like'[A-Z][A-Z][0-9][0-9][0-9][0-9][0-9][0-9]'),

仓库号char(6)constraint ck foreign key references yaojinhong.仓库(仓库号),

工资 money check (工资>=1000 and 工资<=10000)

)

create table yaojinhong.供应商

(

供应商号 char(4)primary key check (供应商号like'[S][0-9][0-9][0-9]'),

供应商名 char(16),

地址char(30),

)

create table yaojinhong.订购单

(职工号 char(8) not null foreign key references yaojinhong.职工.(职工号),

供应商号 char(4) null constraint supply foreign key references yaojinhong.供应商(供应商号) on delete set null,

订购单号 char(6) primary key check(订购单号 like 'OR[0-9][0-9][0-9][0-9]'),

订购日期 datetime default getdate(),

金额 money default null

)

create table yaojinhong.订购单明细

(订购单号 char(6) not null foreign key references yaojinhong.订购单(订购单号),

序号 char(2),

产品名称 char(20),

单价 money default null check(单价>0),

数量 int not null check(数量>0),

primary key(订购单号,序号)

)

alter table yaojinhong.订购单

add 完成日期 datetime default null

alter table yaojinhong.订购单明细

add check(数量 between 0 and 1000)

alter table yaojinhong.订购单明细

alter column 数量 int not null alter table yaojinhong.供应商

alter column 供应商名 varchar(30)

实验3

insert into yaojinhong.仓库 values('QW0001','广州',500)

insert into yaojinhong.仓库 values('QW0002','上海',900)

insert into yaojinhong.仓库 values('QW0003','北京',250)

insert into yaojinhong.仓库 values('QW0004','纽约',1000)

insert into yaojinhong.仓库 values('QW0005','深圳',650)

insert into yaojinhong.职工 values('ZG000001','QW0005',3000)

insert into yaojinhong.职工 values('ZG000002','QW0001',5600)

insert into yaojinhong.职工 values('ZG000003','QW0004',6600)

insert into yaojinhong.职工 values('ZG000004','QW0002',3800)

insert into yaojinhong.职工 values('ZG000005','QW0005',3900)

insert into yaojinhong.职工 values('ZG000006','QW0001',4600)

insert into yaojinhong.职工 values('ZG000007','QW0003',4000)

insert into yaojinhong.职工 values('ZG000008','QW0003',5000)

insert into yaojinhong.职工 values('ZG000009','QW0002',4800)

insert into yaojinhong.职工 values('ZG000010','QW0004',6000)

insert into yaojinhong.供应商 values('S001','华广','深圳')

insert into yaojinhong.供应商 values('S002','广工','广州')

insert into yaojinhong.供应商 values('S003','美的','茂名')

insert into yaojinhong.供应商 values('S004','乐视','深圳')

insert into yaojinhong.供应商 values('S005','康佳','广州')

insert into yaojinhong.订购单 values('ZG000007','S005','OR0001','2015-1-6',5000,'2015-2-5')

insert into yaojinhong.订购单 values('ZG000002','S001','OR0002','2015-2-3',10000,'2015-3-4')

insert into yaojinhong.订购单 values('ZG000003','S004','OR0003','2015-2-17',3000,'2015-5-16')

insert into yaojinhong.订购单 values('ZG000006','S002','OR0004','2015-2-16',9000,'2015-4-18')

insert into yaojinhong.订购单 values('ZG000010','S005','OR0005','2015-3-20',8000,'2015-6-27')

insert into yaojinhong.订购单 values('ZG000001','S001','OR0006','2015-3-22',7500,'2015-7-29')

insert into yaojinhong.订购单 values('ZG000006','S003','OR0021','2015-2-15',4600,'2015-10-13')

insert into yaojinhong.订购单 values('ZG000004','S002','OR0007','2015-2-23',8500,'2015-8-29')

insert into yaojinhong.订购单 values('ZG000003','S005','OR0008','2015-1-5',3600,'2015-11-11')

insert into yaojinhong.订购单 values('ZG000001','S004','OR0009','2015-1-31',7600,'2015-12-14')

insert into yaojinhong.订购单 values('ZG000007','S001','OR0010','2015-3-25',12000,'2015-7-30')

insert into yaojinhong.订购单 values('ZG000008','S002','OR0011','2015-2-26',4600,'2015-9-27')

insert into yaojinhong.订购单 values('ZG000010','S002','OR0012','2015-1-28',3400,'2015-11-21')

insert into yaojinhong.订购单 values('ZG000009','S004','OR0013','2015-3-19',2300,'2015-10-24')

insert into yaojinhong.订购单 values('ZG000007','S005','OR0014','2015-2-23',9000,'2015-9-21')

insert into yaojinhong.订购单 values('ZG000008','S003','OR0015','2015-2-27',6400,'2015-12-23')

insert into yaojinhong.订购单 values('ZG000002','S001','OR0016','2015-1-30',7900,'2015-6-30')

insert into yaojinhong.订购单 values('ZG000005','S004','OR0017','2015-1-27',20000,'2015-8-18')

insert into yaojinhong.订购单 values('ZG000009','S004','OR0018','2015-3-5',13000,'2015-7-31')

insert into yaojinhong.订购单 values('ZG000004','S002','OR0019','2015-3-14',7000,'2015-6-17')

insert into yaojinhong.订购单 values('ZG000006','S005','OR0020','2015-2-21',4300,'2015-5-25')

insert into yaojinhong.订购单明细 values('OR0020','01','沐浴露',32,240)

insert into yaojinhong.订购单明细 values('OR0001','02','洗衣粉',30,125)

insert into yaojinhong.订购单明细 values('OR0012','03','洗衣液',39,59)

insert into yaojinhong.订购单明细 values('OR0014','04','香皂',14,99)

insert into yaojinhong.订购单明细 values('OR0004','05','盐',2,169)

insert into yaojinhong.订购单明细 values('OR0005','06','酱油',14,65)

insert into yaojinhong.订购单明细 values('OR0011','07','化妆品',26,24)

insert into yaojinhong.订购单明细 values('OR0019','08','洗面奶',39,68)

insert into yaojinhong.订购单明细 values('OR0008','09','面膜',5,147)

insert into yaojinhong.订购单明细 values('OR0003','10','花生油',36,258)

insert into yaojinhong.订购单明细 values('OR0017','11','鼠标',69,72)

insert into yaojinhong.订购单明细 values('OR0015','12','鼠标垫',18,64)

insert into yaojinhong.订购单明细 values('OR0016','13','移动电源',58,69)

insert into yaojinhong.订购单明细 values('OR0012','14','插座',37,169)

insert into yaojinhong.订购单明细 values('OR0011','15','牛奶',72,111)

insert into yaojinhong.订购单明细 values('OR0020','16','洗洁精',9,114)

insert into yaojinhong.订购单明细 values('OR0019','17','洁厕液',6,300)

insert into yaojinhong.订购单明细 values('OR0010','18','鸡蛋',14,124)

insert into yaojinhong.订购单明细 values('OR0009','19','牛肉',38,300)

insert into yaojinhong.订购单明细 values('OR0016','20','内裤',59,654)

insert into yaojinhong.订购单明细 values('OR0018','21','鞋子',299,300)

insert into yaojinhong.订购单明细 values('OR0015','22','手表',890,34)

insert into yaojinhong.订购单明细 values('OR0005','23','钱包',129,124)

insert into yaojinhong.订购单明细 values('OR0008','24','行李箱',344,64)

insert into yaojinhong.订购单明细 values('OR0014','25','手袋',3,874)

insert into yaojinhong.订购单明细 values('OR0018','26','篮球',360,59)

insert into yaojinhong.订购单明细 values('OR0003','27','足球',260,36)

insert into yaojinhong.订购单明细 values('OR0005','28','羽毛球拍',78,69)

insert into yaojinhong.订购单明细 values('OR0007','29','乒乓球拍',89,145)

insert into yaojinhong.订购单明细 values('OR0020','30','羽毛球',5,645)

insert into yaojinhong.订购单明细 values('OR0013','31','乒乓球',3,542)

insert into yaojinhong.订购单明细 values('OR0016','32','牙膏',23,200)

insert into yaojinhong.订购单明细 values('OR0009','33','牙刷',6,456)

insert into yaojinhong.订购单明细 values('OR0019','34','防晒霜',56,65)

insert into yaojinhong.订购单明细 values('OR0017','35','水杯',39,1187)

insert into yaojinhong.订购单明细 values('OR0010','36','拖把',15,187)

insert into yaojinhong.订购单明细 values('OR0004','37','扫把',6,200)

insert into yaojinhong.订购单明细 values('OR0005','38','垃圾桶',16,254)

insert into yaojinhong.订购单明细 values('OR0006','39','书',46,688)

insert into yaojinhong.订购单明细 values('OR0016','40','卫生纸',13,500)

insert into yaojinhong.订购单明细 values('OR0020','41','相机',3698,32)

insert into yaojinhong.订购单明细 values('OR0013','42','手机',2000,200)

insert into yaojinhong.订购单明细 values('OR0017','43','音响',500,143)

insert into yaojinhong.订购单明细 values('OR0001','44','吸尘器',1688,40)

insert into yaojinhong.订购单明细 values('OR0012','45','油烟机',3500,10)

insert into yaojinhong.订购单明细 values('OR0010','46','台式电脑',4000,25)

insert into yaojinhong.订购单明细 values('OR0013','47','空调',50,230)

insert into yaojinhong.订购单明细 values('OR0005','48','电视机',1300,100)

insert into yaojinhong.订购单明细 values('OR0016','49','洗衣机',3400,15)

insert into yaojinhong.订购单明细 values('OR0011','50','笔记本',6000,20)

insert into yaojinhong.仓库 values('QW0001','惠州',600)

原因:违反了PRIMARY KEY 约束'PK__仓库__530C599C7F60ED59'。不能在对象'yaojinhong.仓库' 中插入重复键。语句已终止。

insert into yaojinhong.职工 values('ZG000011','QW0009',3000)

原因:仓库号列参照仓库表的仓库号,此时在仓库表中找不到仓库号为QW0009的仓库。INSERT 语句与FOREIGN KEY 约束"FK__职工__仓库号__0AD2A005"冲突。该冲突发生于数据库"实验",表"yaojinhong.仓库", column '仓库号'。

insert into yaojinhong.仓库 values('QW0006','天津',30)

原因:在定义时,面积要大于等于50,这里面积为30,明显违反了用户定义完整性

delete yaojinhong.仓库 where 城市='北京'

删除操作失败。因为有职工参照了干记录

delete yaojinhong.供应商 where 供应商号='S002'

因为删除参照完整性规则定义为set null

alter table yaojinhong.职工

drop constraint ck

alter table yaojinhong.职工

drop column 仓库号

alter table yaojinhong.职工

add 仓库号 char(6)constraint ck foreign key references yaojinhong.仓库

on delete cascade

on update cascade

update yaojinhong.职工 set 仓库号='QW0006' where 职工号='ZG000002'

更新操作失败,因为职工表所参考的仓库表中不存在仓库号为QW0006的仓库。

update yaojinhong.仓库 set 仓库号=null where 仓库号='QW0001'

更新操作失败,因为仓库号是关键字,不能为空。

update yaojinhong.仓库 set 面积=30 where 仓库号='QW0001'

更新操作失败,因为面积被定义约束大于或等于50,此处面积=30,显然违反了约束。

update yaojinhong.职工 set 工资=(工资+(工资*0.1))

update yaojinhong.订购单 set 金额=(select SUM(单价*数量) from yaojinhong.订购单明细

where 订购单明细.订购单号=订购单.订购单号)

delete yaojinhong.职工 where 仓库号 in (select 仓库号 from yaojinhong.仓库 where 城市='北京')

delete yaojinhong.订购单 where 供应商号 in (select 供应商号 from yaojinhong.供应商 where 供应商名='广工')

实验4

1 select distinct 工资 from yaojinhong.职工

select all 工资 from yaojinhong.职工

2 select * from yaojinhong.仓库

3 select 职工号 from yaojinhong.职工 where 工资>5000

4 select * from yaojinhong.仓库 where 仓库号 in(select 仓库号 from yaojinhong.职工 where 工资>5000)

5 select 职工号 from yaojinhong.职工 where 仓库号 in ('QW0005','QW0002') and 工资<5000

6 select * from yaojinhong.职工 where 工资 between 3000 and 5000

7 select * from yaojinhong.供应商 where 供应商名 like '%公司'

8 select * from yaojinhong.仓库 where 城市!='北京

9 select * from yaojinhong.订购单 where 供应商号 is null

10 select * from yaojinhong.订购单 where 供应商号 is not null

11 select * from yaojinhong.职工  order by 工资 ASC

12 select * from yaojinhong.职工  order by 仓库号 ASC,工资 DESC

13 select 职工号,城市 from yaojinhong.职工  join yaojinhong.仓库 on 职工.仓库号=仓库.仓库号 where 工资>6000

14 select 职工号,城市 from yaojinhong.职工  join yaojinhong.仓库 on 职工.仓库号=仓库.仓库号 where 面积>700

16 select * from yaojinhong.仓库  cross join yaojinhong.职工

17 select * from yaojinhong.仓库  cross join yaojinhong.职工

where 仓库.仓库号=职工.仓库号

18 select 供应商.供应商号,供应商名,订购单号,订购日期 from yaojinhong.供应商  join yaojinhong.订购单

on 供应商.供应商号=订购单.供应商号

19 select 供应商.供应商号,供应商名,订购单号,订购日期 from yaojinhong.供应商 left join yaojinhong.订购单

on 供应商.供应商号=订购单.供应商号

20 select 供应商.供应商号,供应商名,订购单号,订购日期 from yaojinhong.供应商 right join yaojinhong.订购单 on 供应商.供应商号=订购单.供应商号

21 select 供应商.供应商号,供应商名,订购单号,订购日期 from yaojinhong.供应商 full join yaojinhong.订购单 on 供应商.供应商号=订购单.供应商号

22 select 城市 from yaojinhong.仓库 where 仓库号 in

(select 仓库号 from yaojinhong.职工 where 工资=3300)

23 select * from yaojinhong.仓库 where 仓库号 not in

(select 仓库号 from yaojinhong.职工 where 工资<5000)

24 select * from yaojinhong.职工 where 工资 in

(select  工资 from yaojinhong.职工 where 职工号='ZG000001')

and 职工号!='ZG000001'

25 select 城市 from yaojinhong.仓库 where 仓库号 in

(select 仓库号 from yaojinhong.职工 where 职工号 in

(select 职工号 from yaojinhong.订购单 where 供应商号 in

(select 供应商号 from yaojinhong.供应商 where 地址='广州')))

26 select 供应商名 from yaojinhong.供应商 join yaojinhong.订购单 on 供应商.供应商号=订购单.供应商号 join yaojinhong.职工 on 订购单.职工号=职工.职工号 join yaojinhong.仓库 on 职工.仓库号=仓库.仓库号 where 地址='广州'and 城市='广州'

select 供应商名

from yaojinhong.供应商 where 地址='广州' and 供应商号 in

(select 供应商号 from yaojinhong.订购单 join yaojinhong.职工 on 订购单.职工号=职工.职工号

join yaojinhong.仓库 on 职工.仓库号=仓库.仓库号 where 城市='广州')

27 select 仓库号 from yaojinhong.仓库 where 仓库号 in

(select 仓库号 from yaojinhong.职工 where 工资>any

(select 工资 from yaojinhong.职工 join yaojinhong.仓库 on 职工.仓库号=仓库.仓库号

where 仓库.仓库号='QW0001')and 仓库号!='QW0001')

28 select 仓库号 from yaojinhong.仓库 where 仓库号 in

(select 仓库号 from yaojinhong.职工 where 工资>all

(select 工资 from yaojinhong.职工 join yaojinhong.仓库 on 职工.仓库号=仓库.仓库号

where 仓库.仓库号='QW0001'))

29 select * from yaojinhong.订购单 a where 金额=

(select MAX(金额) from yaojinhong.订购单 b where a.职工号=b.职工号)

order by 职工号 ASC

30 select * from yaojinhong.仓库 where exists(select * from yaojinhong.职工 where 职工号 is null and 职工.仓库号=仓库.仓库号)

31 select * from yaojinhong.仓库 where not exists(select * from yaojinhong.职工 where 职工号 is null and 职工.仓库号=仓库.仓库号)

32 select COUNT(distinct 城市)城市数目 from yaojinhong.仓库 where 城市 is not null

33 select SUM(工资)需要支付职工工资总数 from yaojinhong.职工

34 select SUM(工资)北京和上海的仓库职工的工资总和 from yaojinhong.职工 join yaojinhong.仓库 on 职工.仓库号=仓库.仓库号

where 城市='北京' or  城市='上海'

35 select AVG(面积)平均面积 from yaojinhong.仓库 where 仓库号 not in

(select 仓库号 from yaojinhong.职工 where 工资<6000)

36 select max(金额)工资大于的职工所经手的订购单最高金额 from yaojinhong.订购单 where 职工号 in

(select 职工号 from yaojinhong.职工 where 工资>6000)

37 select 仓库号,AVG(工资)平均工资 from yaojinhong.职工

group by 仓库号

38 select 仓库号,max(金额)最高金额,MIN(金额)最低金额,AVG(金额)平均金额 from yaojinhong.职工 join yaojinhong.订购单 on 职工.职工号=订购单.职工号 group by 仓库号

39 select 订购单.订购单号,AVG(金额)平均金额 from yaojinhong.订购单 join yaojinhong.订购单明细  on 订购单.订购单号=订购单明细.订购单号

group by 订购单.订购单号 having COUNT(订购单.订购单号)>=5

40 select 仓库号,职工号,工资 from yaojinhong.职工

order by 仓库号

compute avg(工资),sum(工资)by 仓库号

compute avg(工资),sum(工资)

41select 订购单明细.订购单号,序号,产品名称,单价,数量,金额

from yaojinhong.订购单明细 join yaojinhong.订购单 on

订购单.订购单号=订购单明细.订购单号 order by 订购单.订购单号

compute avg(金额),sum(金额)by 订购单.订购单号

compute avg(金额),sum(金额)

42 select * from yaojinhong.订购单

compute avg(金额),sum(金额)

实验5

(1) 基于单个表按投影操作定义视图。

create view yaojinhong.仓库视图 as select * from yaojinhong.仓库

(2) 基于单个表按选择操作定义视图。

create view yaojinhong.仓库视图1 as select * from yaojinhong.仓库 where 城市='广州'

(3) 基于单个表按选择和投影操作定义视图。

create view yaojinhong.仓库视图2 as select 仓库号,面积 from yaojinhong.仓库 where 城市='广州'

(4) 基于多个表根据连接操作定义视图。

create view yaojinhong.视图3 as select 职工号,城市,工资 from yaojinhong.职工 join yaojinhong.仓库 on 职工.仓库号=仓库.仓库号

(5) 基于多个表根据嵌套查询定义视图。

create view yaojinhong.视图4 as select * from yaojinhong.仓库 where 仓库号 in

(select 仓库号 from yaojinhong.职工 where 工资>4000)

(6) 定义含有虚字段的视图。

create view yaojinhong.虚字段视图(仓库号,城市,面积) as select 仓库号,城市,面积*2 from yaojinhong.仓库

2、分别在定义的视图上设计一些查询(包括基于视图和基本表的连接或嵌套查询)。

select * from yaojinhong.仓库视图

select * from yaojinhong.仓库视图1 where 城市='广州'

select 仓库号,面积 from yaojinhong.仓库视图2

select 职工号,城市,工资 from yaojinhong.职工 join yaojinhong.仓库视图 on 职工.仓库号=仓库视图. 仓库号

select * from yaojinhong.仓库视图 where 仓库号 in

(select 仓库号 from yaojinhong.职工 where 工资>4000)

3、在不同的视图上分别设计一些插入、更新和删除操作,分情况讨论哪些操作可以成功完成,哪些操作不能完成,并分析原因。

insert into yaojinhong.仓库视图(仓库号,城市) values('QW0008','长沙')

update yaojinhong.仓库视图 set 面积=650 where 仓库号='QW0008'

insert into yaojinhong.仓库视图 values('QW0008','长沙',500)

update yaojinhong.仓库视图 set 面积=700 where 仓库号='QW0001'

delete yaojinhong.仓库视图 where 仓库号='QW0008'

delete yaojinhong.仓库视图 where 仓库号='QW0008'