数据库的基础.docx

上传人:b****7 文档编号:11378153 上传时间:2023-02-28 格式:DOCX 页数:36 大小:29.03KB
下载 相关 举报
数据库的基础.docx_第1页
第1页 / 共36页
数据库的基础.docx_第2页
第2页 / 共36页
数据库的基础.docx_第3页
第3页 / 共36页
数据库的基础.docx_第4页
第4页 / 共36页
数据库的基础.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

数据库的基础.docx

《数据库的基础.docx》由会员分享,可在线阅读,更多相关《数据库的基础.docx(36页珍藏版)》请在冰豆网上搜索。

数据库的基础.docx

数据库的基础

数据库的基础:

概念一,信息:

现实世界事物的存在方式或运动状态的反映。

概念二,数据:

是数据库中存储的基本对象,描述事物的符号记录。

概念三,数据库:

(存放数据的仓库,)长期存储在计算机内的有组织的、可共享的数据集合。

四大特点:

一:

数据库中的数据按一定的数据模型组织描述和存储;

二:

具有较小的冗余度;

三:

具有较高的数据独立性和易扩充性;

四:

为各种用户共享。

数据库的发展:

阶段一:

人工(手工)管理;

阶段二:

文件系统;

阶段三:

数据库系统。

数据(DB:

Database)

数据库系统(DBS)采用了数据库技术的计算机系统;

数据库管理系统(DBMS)位于用户和操作系统之间的一层数据库管理软件。

DBMS四大功能:

数据定义;数据操作(DML);数据库的运行管理;数据库的建立和维护。

信息世界的基本概念:

一:

实体(Entity):

是指客观存在并可以相互区别的事物。

实体可以是具体的人、事、物,也可以是抽象的概念和联系;

二:

(Attribute):

具有的某一特性称为实体的属性,一个实体有若干个属性来描述;

实体域实体之间的联系:

<一对一(1:

1)、一对多(1:

m)、多对多(m:

n)>

E-R图

实体:

矩形框

属性:

椭圆表示

联系:

直线表示

联系名:

菱形

三:

码(Key):

唯一标识实体的属性集成为码;

四:

域(Domain):

属性的取值范围称为该属性的域;

五:

实体型(EntityType):

具有相同属性的实体成为同型实体,用实体名及其属性名的集合来抽象和刻画同类实体,称为实体型;

六:

实体集(EntitySet):

同型的实体集合称为实体集。

实例:

学生选课管理系统

一:

确定实体

学生:

属性:

姓名、性别、学号、出生日期、籍贯;

课程:

属性:

学时、名称、学分、课程代码;

教材:

属性:

ISBN号(教材编号)、出版社、作者、单价、教材名。

数据库的系统体系结构

采用三级模式两级映射的结构

数据库的三级模式:

外模式:

子模式或用户模式,是模式的子集,一个数据库可以有多个外模式

模式:

逻辑结构……

内模式:

数据库只有一个内模式

两级映射:

外模式/模式映射

模式/内模式映射

关系数据库

关系模型:

数据结构、关系操作、关系的完整性

主关键字或主码:

pk

外部关键字或外码:

fk

主表和从表。

数据库的基本运算

增、删、改、查

select查询

create创建

table表

drop删除

alter修改

view视图

index索引

数据库文件的三种类型

主数据文件.MDF有且只有一个主数据文件

辅助数据文件.NDF

事务日志文件.LDF至少要有一个

 

数据库以命令形式建立:

createdatabasestudent1

onprimary

name='student1_data',

filename='c:

\shujuku\student1_data.mdf',

size=3MB,

filegrowth=20%)

logon

name='student1_log',

filename='C:

\shujuku\student1_log.ldf',

size=1MB,

filegrowth=10%)

collateChinese_PRC_CI_AS

 

例二:

createdatabaseBVTC_DB

onprimary

name='BVTB_DB_data',

filename='c:

\shujuku\BVTB_DB_data.mdf',

size=5MB,

maxsize=20MB,

filegrowth=20%)

logon

name='BVTC_DB_log',

filename='C:

\shujuku\BVTC_DB_log.ldf',

size=5MB,

filegrowth=10%)

collateChinese_PRC_CI_AS

例题:

createdatabasestudent

onprimary

(name=StuPri1_dat,

filename='E:

\SQLDATA\SPri1dat.mdf',

size=10,maxsize=50,filegrowth=15%

),

(name=StuPri2_dat,

filename='E:

\SQLDATA\SPri2dat.ndf',

size=10,maxsize=50,filegrowth=15%

),

(name=StuPri3_dat,

filename='E:

\SQLDATA\SPri3dat.ndf',

size=10,maxsize=50,filegrowth=15%

),

filegroupStuGroup1

(name=StuGrp1Fi1_dat,

filename='E:

\SQLDATA\SG1Fi1dt.ndf',

size=10,maxsize=50,filegrowth=5

),

(name=StuGrp1Fi2_dat,

filename='E:

\SQLDATA\SG1Fi2dt.ndf',

size=10,maxsize=50,filegrowth=5

),

(name=StuGrp1Fi3_dat,

filename='E:

\SQLDATA\SG1Fi3dt.ndf',

size=10,maxsize=50,filegrowth=5

),

filegroupStuGroup2

(name=StuGrp2Fi1_dat,

filename='E:

\SQLDATA\SG2Fi1dt.ndf',

size=10,maxsize=50,filegrowth=5

),

(name=StuGrp2Fi2_dat,

filename='E:

\SQLDATA\SG2Fi2dt.ndf',

size=10,maxsize=50,filegrowth=5

),

(name=StuGrp2Fi3_dat,

filename='E:

\SQLDATA\SG2Fi3dt.ndf',

size=10,maxsize=50,filegrowth=5

logon

(name=student_log,

filename='E:

\SQLDATA\student.ldf',

size=5MB,

maxsize=25MB,

filegrowth=5MB

go

1、打开数据库:

(代码)

usedatabase_name

usestudent1(文件名称)

go

2、查看数据库信息:

execsp_helpdb‘student’

3、修改数据库信息:

alterdatabasestudent1

(1)添加数据文件:

addfile

(2)添加日志文件:

addlogfile

(3)修改数据文件容量:

modifyfile

(4)删除数据库文件:

removefile

例:

为BVTC_DB数据库增加容量:

useBVTC_DB

go

alterdatabaseBVTC_DB

modifyfile

name=BVTC_DBdata

size=20MB

查看数据库选项:

execsp_dboption‘student1’(文件名称)

修改数据库选项:

execsp_dboption‘student1’,option_name,

 

例:

更改数据库‘teacher’名称为‘student’。

student

execsp_dboption’teacher’,’read_only’,false

go

execsp_renamedb‘teacher’,’student’

go

分离数据库:

sp_detach_db‘student’(文件名)

usemaster

sp_detach_db‘student’

附件数据库:

createdatabasedatabase_name

on(filename=’C:

\······’)

例:

将student数据库附加到SQLserver服务器中

usemaster

createdatabasestudent

on(filename=’D:

\student_data.mdf’)

forattach

 

删除数据库:

方法一:

dropdatabasestudent

方法二:

execsp_dbremovestudent

usemaster

go

dropdatabasestudent

go

分组代码:

filegroupstugroup1

 

代码建表:

usestudent

go

createtabledbo.zy

zydmchar(4)notnull,

zymcvarchar(20)notnull,

xbdmchar

(2)notnull

go

修改表的数据:

altertabledepartment

altercolumnxbmcvarchar(50)

notnull

创建约束:

(创建主键)

usestudent

go

createtablebanji

bjdmchar(9)constraintpk_bjdmprimarykey,(意为创建的约束条件“主键”:

创建主键)

bjmcvarchar(20)notnull,

zydmchar(4)notnull,

xbdmchar

(2)notnull,

bzvarchar(50)

表备份:

选中表,单击右键,选中“编写表脚本”,“CREATE到”,“新查询编辑器窗口”:

USE[student]

GO

/******Object:

Table[dbo].[Internet]ScriptDate:

09/11/201313:

41:

42******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

SETANSI_PADDINGON

GO

CREATETABLE[dbo].[Internetbenfen](添加蓝色区域代码)

[zydm][char](4)NOTNULL,

[zymc][varchar](20)NOTNULL,

[xbdm][char]

(2)NOTNULL

)ON[PRIMARY]

GO

SETANSI_PADDINGOFF

GO

用代码创建外键:

usestudent

go

createtablexuesheng

xhchar(12)constraintpk_xhprimarykey,

xmchar

(2),

csrpdatetime,

rxrpdatetime,

bjdmchar(9)constraintfk_bjdmreferencesbanji(bjdm)(意为创建外键:

外键必须是另一个表里的主键,意为若要实现外键约束,那么必须有两张表才能,并且一张表的主键会是另一张表的外键,那么才能够实现)

go

在已存在列表中添加行:

usestudent(表名)

go

insertbanjivalues('060501001','软件-2班','0501','05','')

查看表中数据:

usestudent

select*fromdbo.xuesheng(表名)

查看表结构:

executesp_helpxuesheng

在列表中添加一列:

altertablexuesheng

addjtdzvarchar(30)notnull

更改添加列的参数:

altertablexuesheng

altercolumnjtdzvarchar(50)null

删除表中的一列:

altertablexuesheng

dropcolumnjtdz

删除表:

droptabledbo.Internet(表名)

(注:

代码中绿色区域为表名及各列名)

 

在已建立好的表中建立数据信息:

insertbanji

values

('060101001','06级软件工程班','0101','01',''),

('060102002','06级网络技术班','0102','01',''),

('060201001','06级经济管理班','0201','02',''),

('060202002','06级会计专业班','0202','02',''),

('060301001','06级电子商务班','0301','03',''),

('060302001','06级信息管理班','0302','03',''),

('060401001','06级影视制作班','0401','04','')

char、varchar、datetime···型时使用单引号,int,smallint,tinyint···型时不使用单引号。

建立数据表,进入,输入列:

createtablexibu1

xbdmchar

(2)constraintpk_xbdm1primarykey,

xbmcvarchar(30)notnull,

xzrvarchar(8)

go

insertxibu1

(xbdm,xbmc,xzr)

selectxbdm,xbmc,xzr

fromxibu

 

使用update语句更新数据的语法格式:

Update表名

Set字段名=新值,字段名=新值

Where条件表达式

例:

update系部

set系主任=‘刘海军’

where系部代码=‘01’

updatedbo.xibu

setxzr='刘海军'(注意是否要加单引号)

wherexbdm='01'(意为更改的具体位置)

两张表格的同时更改,并使得两张表格中被要求的字段名值相等:

updaterenke

set

renke.ksz=jiaoxuejihua.ksz,renke.jsz=jiaoxuejihua.jsz

fromjiaoxuejihua

wherejiaoxuejihua.kch=renke.kch

andjiaoxuejihua.zydm=renke.zydm

andjiaoxuejihua.zyxj=renke.zyxj

 

使用delete语句删除数据:

Deletefrom表名

Where字段名=值

例:

deletezhuce

fromxuesheng

wherexuesheng.xh=zhuce.xh

andxuesheng.xm='张三'

andzhuce.kch='0001'

使用truncatetable清空表格(删除后不能恢复):

truncatetable表格名

 

查询课程表中的课程号和课程名称:

selectkch,kcmcfromkecheng

查询学生表中的‘男’:

select*fromxuesheng

wherexb=’男’

查看学生表中的姓名、性别、出生日期:

selectxmas姓名,xb性别,出生日期=csrqfrom学生

groupby:

对结果集进行分组。

having子句:

对结果再次按照条件进行筛选,通常与groupby子句一起使用。

orderby子句:

对结果进行排序

asc升序desc降序

知识点:

日期函数

year()年

month()月

data()日

getdata()获得当前的日期

例:

selectxm,YEAR(gate())-YEAR(csrq)as(可省略)名称fromxuesheng

selectxm,名称=YEAR(gate())-YEAR(csrq)fromxuesheng

 

选择表中的若干记录:

去掉重复行:

distinct

例4查询选修了课程的学生学号:

selectxhfromkczc

selectdistinctxhfromkczc

限制返回行数:

topn

topnpercent(百分比)

例5查询课程注册表中的前三条记录消息:

selecttop3*fromkczc

例6查询课程注册表中的前20%记录:

selecttop20percent*fromkczc

查询满足条件的元组:

where子句引导条件

常用的查询条件:

1、比较查询:

=><<>(不等于)!

=!

>!

2、确定范围:

between..and

notbetween..and

3、确定集合:

in

notin

4、字符匹配:

like

notlike

(1)%代表任意长度的字符

(2)_代表任意单个字符a_b

(3)[]代表方括号内列出的任意一个字符

(4)[^]代表不在方括号内列出的任意一个字符

5、空值:

isnull

notisnull

6、多重条件的判断:

andornot

例1:

查询年龄小于或等于35岁的教师信息。

select*fromjiaoshi

whereyear(getdate())-year(csrq)<=35

例2:

查询出生日期在1971年至1980年之间的教师编号,姓名和出生日期。

selectjsbh,xm,csrqfromjiaoshi

wherecsrqbetween‘1971-01-01’and‘1980-12-31’

例3:

查询计算机系,经济管理系的班级名称和班级代码。

selctbjmc,bjdmformbanji

wherexbdmin(‘01’,‘02’)

例4:

冲寻学生表中姓刘的学生信息。

select*fromxuesheng

wherexmlike‘刘%’

例5:

查询班级表中备注字段为空的班级信息。

select*frombanji

wherebzisnull

例6:

查询教师表中出生日期在1971年至1980年之间的女教师信息。

select*fromjiaoshi

wherecsrqbetween‘1971-01-01’and‘1980-12-31’andxb=‘女’

对查询的结果排序:

orderby

升序asc

降序desc

默认排序为:

升序

例7:

查询男教师的基本信息,按照年龄降序排序。

select*fromjiaoshi

wherexb=‘男’

orderbyyear(getdate)-year(csrq)desc

例8:

查询全体学生信息,查询结果按照所在的班级的班级代码降序排序,同一个班级按照学号升序排序。

select*fromxuesheng

orderbybjdmdesc,xhasc

对数据进行统计:

1、集合函数

count()记录个数

sum()求和

avg()求平均值

max()求最大值

min()求最小值

例9:

查询学生表中的学生总数

selectcount(*)as学生总数fromxuesheng

例10:

查询学生的平均年龄

selectavg(year(getdate)-year(csrg))

as平均年龄fromxuesheng

对结果进行分组:

groupby

having子句:

对分组的结果按照条件进行再次筛选

例11:

查询课程注册表中选课人数3人以上的各课程号和相应的选课人数

selectkch,jsbh,count(*)as选课人数

fromkczc

groupbyjsbh,kch

havingcount(*)>=3

orderbykch

使用compute子句进行分类汇总

例12:

查询所有学生所有成绩的总和:

select*fromkczc

orderbyxh

computesum(cj)

例13:

对每个学生的所有课程的成绩求和,并显示详细记录:

select*fromkczc

orderbyxh

computesum(cj)byxh

用查询结果生成新表:

into新表名

例14:

创建班级表的一个副本:

select*intobanjifubenfrombanji

go

slect*frombanjifubeng

多表查询:

多表连接查询;交叉连接查询;等值连接与非等值连接;外连接查询;复合连接条件查询。

连接查询:

从多过表中查询数据的查询。

多表连接查询:

例:

查询“08级电子商务班”的学生信息。

Select*from学生innerjoin班级

On学生.班级代码=班级.班级代码

Where班级.班级名称=“08级电子商务班”

交叉连接查询:

crossjoin

等值连接与非等值连接查询:

外连接:

outerjoin

1、左外连接:

leftjoin

2、右外连接:

rightjoin

3、内部连接:

innerjoin

4、全连接:

fulljoin

5、复合连接条件查询:

on

例:

查询成绩在75分以上的学生的学号、姓名、专业代码和专业学级,选修课的学期、课程号、成绩,任课教师的教师编号、姓名。

学生asA

课程注册表asB

教师asC

selectA.学号,A.姓名,B.专业代码,B.专业学级,B.学期,B.课程号,B.成绩,C.教师编号,C.姓名

from学生asAjoin课程注册asB

onA.学号=B.学号and成绩>75

join教师asC

onB.教师编号=C.教师编号

子查询:

父查询:

查询的嵌套:

查询:

select..from..where查询块

三种结构实现子查询:

(1)通过运算符in引入或者由运算符any或者all修改的比较运算符引入;

(2)通过没有修改的比较运算符引入;

(3)通过exists(存在)引入的存在性测试;

处理方式:

从里面到外面

最多嵌套32层。

子查询块必须用圆括号括起来。

1、带有in运算符的子查询:

子查询的结果是一个集合。

例、使用“系部”表和“班级”表,查询计算机系和经管系的班级信息。

Select*from班级

Where系部代码in(select系部代码from系部where系部名称=‘计算机系’and系部名称=‘经济管理系’)<蓝色部分为子查询>

例2、查询选修了课程名称为“数据库应用”的学生的学号和姓名。

select学号,姓名from

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1