数据库基础知识点

数据库基础知识点

1. 数据库的作用

持久化:永久得保存数据。

数据挖掘:通过以有信息,发掘出有价值的信息。

冗余:数据的重复出现,(插入,删除,修改)带来一些异常。查询时可以提高查询的效率。

2. 创建数据库,创建表,确定表中字段的类型

数据文件:.mdf(main data file主要数据文件)

.ldf(log data file日志数据文件)

数据完整性:保证数据库的数据是客观真实的,没有错误的。

数据库登录:

方式一:window身份验证,如果你具有登录操作系统的权限,你就可以登录登录数据库。

方式二:sql server身份验证,能够登录操作系统,还需要知道登录名和密码。

用户名 sa 数据库管理者,他是数据库的最大权限拥有者 常用数据类型:

整型:bigint int smallint tinyint

货币:money smallmoney

时间:datetime smalldatetime

位: bit (0,1)

字符串:char varchar text(一个字符表示8位)

Nchar nvarchar ntext(一个字符表示16位)

差异:1. 字符串类型需要加长度。Char(4) text,ntext不需要加长度

2. char varchar的区别

Char是固定长度的,char(8) 存储了’abc’ 会在’abc’之前加5个空格 Varchar 是可变长的 varchar(20) 存储了’abc’,长度就是3

3. 如何分离 附加 数据库

4. 对数据库的 增 删 改 查(操作的是表中的数据)

T_sql:sql+sql server对标准的加强 Sql当中不区分大小写。

增(insert):insert into 表名 values(字段1的值,字段2的值……)

insert into表名(字段1, 字段2) values(字段1的值,字段2的值……)—插入部分数据,其他的字段可以不插入,是因为允许为空

字符串和日期类型都是用'' 括起来的

查(select):select * from 表名(*表示全部)

select 字段1, 字段2 from表名

select 字段1, 字段2 from表名

where 条件表达式

删(delete):delete

from 表名

where 条件表达式

改(update): update 表名

set 字段1=字段1的值,字段2=字段2的值

where 条件表达式

5. 数据库完整性

--域完整性(列的要求) 默认值:采用默认值的时候,需要default占位 主键:不可以为空,不能重复。 标识列:不需要自己输入,完成初始值设定,以后依次递增,一定是整型 标识种子:初始值 标识增量:递增的值

注意: 如果插入数据时错误,自增长列还是会加1,如果数据全部删除,

自增长列还是保留以前的值。truncate table department可以重置表

结构。

唯一约束:不允许重复,但可以为空,只能有一个空。 1.在哪个表中创建外键?在引用的那张表上 2.主键表,外键表?有主键的就是主键表。 注意点: 1 不能向外键表里插入主键表没有的数据。 2 不能删除主键表中有外键引用的数据,除非将外键表中引用的数据删除掉。 3 不能先删除主键表。 --引用完整性(表之间关系的要求) --实体完整性(行的要求) --自定义完整性

6. sql

--dml:数据操作语言,就是增删改查

--dcl:数据控制语言

--ddl:数据定义语言,创建数据库,创建表

1 ddl

创建数据库:create database 数据库名

go --批处理

Use数据库名

use master --exists() 返回true,false

if exists(select * from sysdatabases where name='company')

go

create database company

go --批处理

use company drop database company

创建表 create table 表名 (字段1名 类型 , 字段2名 类型 ……)

if exists(select * from sysobjects where name='department')

go

create table department--创建表时一定要选择好数据库use company (

)

添加约束 --identity(1,1)自增长列 --字段和字段之间用,隔开 departmentid int identity(1,1) primary key, departmentname varchar(20) not null --primary key主键 drop table department

--主键 alter table employee add constraint PK_employee_employeeid primary key(employeeid) --唯一约束

alter table employee

add constraint UQ_employee_telephone unique(telephone) --默认约束

alter table employee

add constraint DF_employee_address default('地址不详') for address --检查约束

alter table employee

add constraint CK_employee_salary check(salary>=1800 and

salary<=20xx0)

--外键约束

alter table employee

add constraint FK_employee_departmentid foreign key(departmentid) references department(departmentid)

修改表的字段

--添加一个字段

alter table employee

add test int

--修改列的类型

alter table employee

alter column test varchar(20)

--删除一列

alter table employee

drop column test 1 dml

--成批插入1 default不可以写,因为select结果集不解析表结构

insert into department

select '教质部' union

select '学员服务部' union

select '财务部'

--成批插入2 临时表不需要创建,他会继承上一张表的结构,包括自增长列等等

select departmentname

into temp

from department

--成批插入3 临时表需要创建

insert into department

select * from temp

--查询

--排序order by 字段 升序:asc(默认是升序) 降序:desc

select * from department

order by departmentid

--有条件的查询where

select * from department

where departmentid<3

select * from department

where departmentid>=2 and departmentid<=3

select * from department

where departmentid<2 and departmentid>3

--有条件的更新where

update department

set departmentname='索迪'+departmentname

where departmentid=2 or departmentid=4

--有条件的删除

delete from department

where departmentname='索迪教质部' or departmentname='索迪财务部'

6. 模糊查询

通配符:和like一起使用,用来匹配字符串

‘_’代表任意一个字符

‘%’代表任意多个(0-……)字符

‘[]’代表[]范围内的任意一个字符 [ade] [0-9] [a-z] [03-7ACE-Pa-z] ‘[^]’代表部包含在[]范围内的任意一个字符 [^ade] [^0-9]


第二篇:数据库原理知识点


6、3NF ( B)规范化为 BCNF 。

A .消除非主属性对码的部分函数依赖 B .消除非主属性对码的传递函数依赖

C .消除主属性对码的部分和传递函数依赖 D .消除非平凡且非函数依赖的多值依赖

8、一个 1 : n 联系可以转换为一个独立的关系模式,关系的码为( C)

A .实体的码 B. 各实体码的组合 C. n 端实体的码 D. 每个实体的码

关系中主码的取值必须唯一且非空,这是由 __实体_________ 完整性规则决定的

4、关系数据操作语言的特点是:操作对象与结果均为 __关系_________ 、操作的非过程性强、语言一体化、并且建立在数学理论基础之上。、

SQL 是一种介于关系代数和 __关系演算___________ 之间的结构化的查询语言

6、对于每一个外模式,数据库系统都有一个 ______外模式/模式_________ 映象,它定义了该外模式与模式之间的对应关系。

7、视图是一个需表,它一经定义就可以和基本表一样被查询,但 _____更新____ 操作将有一定的限制。

1.任何一个满足2NF但不满足3NF的关系模式都不存在( )

A)主属性对主码的部分依赖 B)非主属性对主码的部分依赖

C)主属性对主码的传递依赖 D)非主属性对主码的传递依赖

2.相对于非关系模型,关系数据模型的缺点之一是( )

A)查找记录的速度最慢 B)数据结构简单

C)数据独立性高 D)有严格的数学基础

3.创建一个用户数据库时,( )数据库的内容(表和视图)就会自动地复制到新创建的数据库中。

A)master B)model C)msdb D)tempdb

4.下列聚合函数中不忽略空值(null)的是( )

A)sum(列名) B)max(列名) C)count(*) D)avg(列名)

5.关于唯一约束的叙述,错误的是( )

A)一个表可以定义多个唯一约束 B)唯一约束的值不能重复

C)唯一约束的值不能为null D)一个唯一约束可以施加到多个属性中

6.下列涉及空值的操作,不正确的是( )

A)age is null B)age is not null

C)age=null D)not(age is null)

7.层次模型不能表示( )的联系

A)多对多 B)一对多 C)多对一 D)一对一

8.下列关系运算中,( )运算不属于专门的关系运算。

A)选择 B)连接 C)投影 D)广义笛卡尔积

12.下列说法不正确的是( )

A)任何一个包含两个属性的关系模式一定满足3NF

B)任何一个包含两个属性的关系模式一定满足BCNF

C)任何一个包含三个属性的关系模式一定满足3NF

D)任何一个关系模式一定有码。

3.在select语句中,如果使用了group by子句,则select子句只能使用_聚合_函数和_分组__字段。

1.SQL中文全称是_结构化查询语言__,SQL语言集__数据定义___、___数据查询_、___数据操纵和数据控制四大功能。

10.数据库系统提供了两个方面的映象功能,这样就使得数据库具有_逻辑_独立性,又具有_物理__独立性。


第三篇:数据库知识点总结


题型:

一、 选择题(每题 1 分,共 10 分)

二、 简答题:(每题 10 分,共 30 分)

三、 应用题:(第1题15 分,第2题45分,共 60 分) 考试范围:

第一章

1、 数据、的定义描述事物的

数据库是长期储存在计算机内的、有组织的、可共享的数据集合。 2、 数据库、数据库系统的特点(了解)

3、 DBMS的功能(了解)

4、 实体间联系的三种类型(1:1,1:n,m:n)

5、 E-R图的画法

a、不必画出中间步骤。

b、标出实体间联系的类型。

c、只需画出关键字对应的属性。

6、 数据库系统的组成、核心

7、 数据库设计的步骤

第二章

认识关系运算符

第五章

1、 数据库的创建 CREATE DATABASE

2、 创建表CREATE TABLE

3、 数据插入INSERT

4、 数据修改UPDATE

5、 数据删除 DELETE

第六章

1、相关子查询和非相关子查询之间的区别

2、视图的优点(了解)

3、数据查询 SELECT:

1) 内连接

2) 分组、统计函数

3) 排序

4) 非相关子查询

第七章

1、 触发器的写法

小结(第一章课件34到56第五章课件64到75

第六章课件 (SELECT语句,内连接,分组、统计函数,排序,非相关子查询)重点第七章课件58到71) 数据(DATA,简称D)

定义:描述事物的符号记录称为数据。

数据库(Data Base,简称DB)

.定义:是长期储存在计算机内的、有组织的、

可共享的数据集合。

.特点:

(1)数据库中的数据按照一定的数据模型组织、

描述和储存。

(2)具有较小的冗余度。

(3)较高的数据独立性和易扩展性,并可为各种用

户共享。

数据库管理系统(DBMS)

主要功能:

1)数据定义功能:。

2)数据组织、存储和管理功能:

3)数据操纵功能:

4)数据库的事务管理和运行管理

5)数据库的建立和维护功能

简答题:

1. 相关子查询和非相关子查询之间的区别 a) 非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值

传递给外部查询。

b) 相关子查询是内层子查询条件依赖于外层父查询的某个属性值的子查询,外部查询执行一行,子查询就执行一次。

2. 数据库设计的步骤

1需求分析;2概念结构设计;3逻辑结构设计;4数据库物理设计数据库实施;5数据库运行和维护

3.视图的优点(了解) (1)为用户集中数据,简化用户的数据查询和处理。

(2)屏蔽数据库的复杂性。

(3)简化用户权限的管理。

(4)便于数据共享。

(5)可以重新组织数据以便输出到其他用程序中。

例5-1 创建一个名为BookSys的数据库。

例5-2 创建一个名为KEJI_DB的数据库。要求

有三个文件,其中,主数据文件为10MB,最

大大小为50MB,每次增长20%;辅助数据文件

属于文件组Fgroup,文件为10MB,大小不受

限制,每次增长10%;事务日志文件大小为

20MB,最大100MB,每次增长10MB。文件存储

在‘c:\db’路径下。

CREATE DATABASE KEJI_DB /*数据库名*/

ON PRIMARY /*主文件组*/ (NAME='KEJI_DB_Data1', /*主文件逻辑名称*/

FILENAME='c:\db\KEJI_DB_Data1.mdf', /*主文件物理名称*/

SIZE=10mb,

MAXSIZE=50mb,

FILEGROWTH=20%),

FILEGROUP Fgroup /*文件组*/

(NAME='KEJI_DB_Data2', /*主文件逻辑名称*/

FILENAME='c:\db\KEJI_DB_Data2.ndf', /*主文件物理名称*/

MAXSIZE=UNLIMITED, /*增长不受限制*/

SIZE=10Mb,

FILEGROWTH=10mb)

LOG ON

(NAME='KEJI_DB_Log', /*日志文件逻辑名称*/

FILENAME='c:\db\KEJI_DB_Log.ldf',

/*日志文件物理名称*/ SIZE=20mb,

MAXSIZE=100mb,

FILEGROWTH=10mb)

使用SQL语句

(1)修改数据库内容

语法:

ALTER DATABASE database_name

{ADD FILE <filespec>[,…n]

[TO FILEGROUP filegroup_name]

/*在文件组中增加数据文件*/

|ADD LOG FILE <filespec>[,…n]

/*增加事务日志文件*/

|REMOVE FILE logical_file_name

/*删除数据文件*/

|ADD FILEGROUP filegroup_name

/*增加文件组*/

|REMOVE FILEGROUP filegroup_name

/*删除文件组*/

|MODIFY FILE <filespec>[,…n]

/*修改文件属性*/

|MODIFY NAME=new_dbname

/*更新数据库名称*/}

例:使用触发器判断插入的工资数据,如果

工资超过100,000则不允许插入。

CREATE TABLE trig_example

(id INT,

name VARCHAR(10),

salary MONEY)

GO

CREATE TRIGGER insertrig ON trig_example

FOR INSERT

AS

IF (SELECT COUNT(*) FROM INSERTED

WHERE salary > 100000) > 0

BEGIN

PRINT '数据插入错误: 您试图插入一个大于$100,000的工资数据!' ROLLBACK TRANSACTION --事务回滚

END

`

1.使用后级触发器的插入和删除

例题:使用(后级)触发器判断插入的工资数据,如果 工资超过100,000则不允许插入。 CREATE TABLE trig_example

(id INT,

name VARCHAR(10),

salary MONEY)

GO

CREATE TRIGGER insertrig ON trig_example

FOR INSERT

AS

IF (SELECT COUNT(*) FROM INSERTED

WHERE salary > 100000) > 0

BEGIN

PRINT '数据插入错误: 您试图插入一个大于$100,000的工资数据!'

ROLLBACK TRANSACTION --事务回滚

END

练习:使用后级触发器对数据删除操作进行检 查,如果删除工资大于5000的记录时提示错误 信息,并回滚到删除前的状态。

Insert into trig_example Values(1,'tom',2000)

Insert into trig_example Values(2,'marry',6000)

Insert into trig_example Values(3,'rose',8000)

CREATE TRIGGER deleted ON trig_example

FOR delete

AS

IF (SELECT COUNT(*) FROM deleted

WHERE salary > 100000) > 0

BEGIN

PRINT '数据插入错误: 您试图删除一个大于$100,000的工资数据!'

ROLLBACK TRANSACTION --事务回滚

END

.使用前级级触发器的插入和删除

1.使用前级触发器判断插入trig_example表的 工资数据,如果工资超过100,000则不允许插 入。

CREATE TRIGGER insert_trig_example ON trig_example

Instead of insert

AS

declare @salary money

select @salary =salary from inserted

IF @salary > 100000

print 'wong data!'

else

begin

insert into trig_example

select * from inserted

end 2.使用前级触发器对trig_example表的数据删 除操作进行检查,如果删除工资大于5000的记 录时提示错误信息,不删除记录;否则删除相 应记录。

CREATE TRIGGER delete_trig_example ON trig_example

Instead of delete

AS

declare @id int, @salary money

select @id=id from deleted

IF @salary > 100000

print '删除的数据大于!'

else

begin

delete trig_example

where @id=id

end

五、(12分)某商店管理涉及商店、商品和职工三个实体,它们分别具有下列属性:

商店:商店编号,店名,店址,店经理

商品:商品编号,商品名,单价,产地

职工:职工编号,职工名,性别,工资

这些实体间的联系如下:百货公司管辖若干个连锁商店,每家商店经营若干商品,每家商店有若干职工,但每个职工只能服务于一家商店。职工参加某商店工作有开始时间,商店销售商品的有月销售量。

①请画出商店、商品和职工的E—R 图。

②将该E—R 图转换为关系数据模型。

答:实体:商店(商店编号,店号,店址,店经理)(0.5分)

商品(商品编号,商品名,单价,产地)(0.5分)

职工(职工编号,职工名,性别,工资)(0.5分)

联系:P1-商店销售商品的有销售量间(0.5分)

P2-职工参加某商店工作的开始时(0.5分)

ER图:(5分)

数据库知识点总结

关系模式集:商店模式(商店编号,店号,店址,店经理)(0.5分) 商品模式(商品编号,商品名,单价,产地)(0.5分)

职工模式(职工编号,职工名,性别,工资,商店编号,开始时间)分)

P1模式(商店编号,商品编号,月销售量)(0.5分)

2.使用sql语句创建表authors,结构如下表所示(本题8分)

列名 数据类型 大小 是否为空 默认值 说明

authorID int 4 N 编号(主键),自动增长

authorName nvarchar 50 N 姓名

Phone nvarchar 13 Y 电话

address nvarchar 255 Y 地址

2. create table authors

(authorid int identity(1,1) primary key not null,

authorname nvarchar(50) not null,

phone nvarchar(13) null,

address nvarchar(255))

3.使用SQL语句对2中创建的authors表进行如下修改:(每小题5分,共15分)

(1)添加Sex 列 char(2),city列 varchar(20)。

(2)删除city列。

(3) 修改作者信息表authors中的address列将该列的属性的长度更改为500。

3. (1) alter table authors

add sex char(2) null,city nvarchar(20) null;

(2) alter table authors drop column city

(3) alter table authors

alter column address nvarchar(500) not null

5.表结构的修改 1(

? 使用SQL语句将ygqk表的“姓名”列的数据类型 改为varchar,长度

为20;

? 使用SQL语句在xmqk表中添加新列"立项时间",类型为datetime;

? 使用SQL语句删除xmqk表中的"立项时间"列。

? use yeel

? go

? alter table ygqk

? alter column name varchar(20)

?

? use yeel

? go

? alter table xmqk

? add lixiangshijian datetime

?

? use yeel

? go

? alter table xmqk

? drop column lixiangshijian

4.表中数据的修改和删除

使用SQL语句将ygqk表中第一条记录的"邮政编码"改为'450044'

删除ygqk表中出生日期在'1960-1-1'日之前的员工信息;

use yeel

go

update ygqk

set zip='450044'

use yeel

go

delete ygqk

where birthday<'1960-1-1' 6.1.1 最简单的SELECT语句

练习:

1.改造例6-12,结果表中的列命名为‘sno-sname’。

2.计算‘成绩表’中每位学生的总成绩。

3.计算‘成绩表’中每位学生的平均成绩。

4.计算‘成绩表’中每位学生的总成绩,并将结果 填入原表中。

5.计算‘成绩表’中每位学生的平均成绩(要求: 有不及格成绩的不进行平均成绩的计算),并 将结果填入原表中。

select sno 学号,数学+英语+数据库+操作系统总成绩

from 成绩表 /*2*/

select sno 学号,(数学+英语+数据库+操作系统)/4 平均成绩

from 成绩表 /*3*/

alter table 成绩表

add 总成绩float

update 成绩表

set 总成绩=数学+英语+数据库+操作系统 /*4*/

alter table 成绩表

add 平均成绩float

update 成绩表

set 平均成绩=(数学+英语+数据库+操作系统)/4

select sno 学号,(数学+英语+数据库+操作系统)/4 平均成绩 from 成绩表

where 数学>=60 and 英语>=60 and 数据库>=60 and 操作系统>=60 /*5*/

6.1.4 函数的使用

练习:

1.查询男生(女生)的人数。

2.查询‘计算06’班的最小年龄

select count(*)

from student

where ssex='男'

select max(sbirthday)

from student 6.1.5 查询结果排序

练习:

1.查询所有学生的信息,将结果按系别降序、

班级升序排列。

2.查询‘信息系’年龄最大的3个学生的信息

select *

from student

order by depart desc

select top 3 sno,sname,sage,depart

from student

where depart='信息系'

order by sage desc

6.1.6 使用分组

练习:

1.查询人数大于等于3的班级。

2.查询各个姓氏的学生人数。

select class,count(*)

from student

group by class

having count(*)>=3

select left(sname,1) as 姓氏, count(*) as 人数

from student

group by left(sname,1)

6.2.1 连接查询 2.查询学生的学号,所选课程的课程号、课程名和学分。

3.查询学生的学号、姓名,所选课程的课程号、课程名和成绩信息。

select sno,score.cno,cname,credit

from course inner join score

on score.cno=course.cno

/*92页题*/

select sname,student.sno,score.cno,cname,degree

from course ,score,student

where student.sno=score.sno and score.cno=course.cno

/*92页题*/

6.2.1 连接查询

3.查询每门课程间接先行课的先行课

select frist.cno,frist.cpno,second.cpno,third.cpno

from 课程表frist, 课程表second,课程表third

where frist.cpno=second.cno and second.cpno=third.cno and third.cpno is not null /*109页题*/ 6.2.3 子查询

练习:

1.查询选修了‘C语言’的学生学号。

select sno

from score

where cno=

(select cno

from course

where cname='C语言')

/*139页题*/

6.2.3 子查询

3.查询选修了“C语言”的学生姓名

select sname

from Student

where sno in

(select sno from Score where cno=

(select cno from Course where cname='c语言'))

/*145页第三题*/

标签:

相关文章