sql数据库基础.docx
- 文档编号:3548281
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:61
- 大小:688.21KB
sql数据库基础.docx
《sql数据库基础.docx》由会员分享,可在线阅读,更多相关《sql数据库基础.docx(61页珍藏版)》请在冰豆网上搜索。
sql数据库基础
一.数据库基础4
目标:
4
1.关系:
4
2.健(key)4
3.表间联系4
4.关系数据库管理系统(RDBMS)4
5.字段的类型和大小4
6.数据的规范5
7.排序与索引5
8.数据的完整性与约束6
9.创建数据库创建表库的分离与附加创建索引实施约束7
二:
结构化查询语言(SQL)7
目标:
7
1.SQL概述7
2.SQL2000里的Transact-SQL(简称T-SQL)7
2.1SQL语言的动词7
2.2T-SQL语言的语法规7
2.3查询分析器的使用7
3.数据定义8
3.1定义数据库8
3.2定义.删除与修改基本表9
3.2.1定义基本表:
9
3.2.2常用完整性约束表10
3.2.2初始化基本表10
3.2.3修改基本表10
3.2.4删除基本表11
3.3建立与删除索引11
3.3.1建立索引11
3.3.2删除索引11
4.数据库查询11
4.1单表查询11
4.2选择表中的若干记录12
4.2.1消除取值重复的行12
4.2.2查询满足条件的记录13
4.2.3常用的查询条件13
4.2.3.1比较大小13
4.2.3.2确定范围14
4.2.3.3确定集合14
4.2.3.4字符匹配14
4.2.3.5LIKE其它查询条件15
4.2.3.6涉及空值的查询15
4.2.3.7多重条件查询16
4.3对查询结果排序16
4.4使用聚集函数.常用的函数集16
4.5对查询结果进行分组17
4.5.1WHERE与HAVING的区别18
4.6连接查询18
4.6.1内联接(等值连接查询、非等值连接查询和自然连接查询)18
4.6.2外联接20
4.6.3复合条件连接21
4.7嵌套查询21
4.7.1带有IN谓词的子句查询22
4.7.2带有ANY或ALL谓词的子查询22
5.数据更新24
5.1插入数据24
5.1插入子查询结果24
5.2修改数据25
5.2.1修改某个记录的值25
5.2.2修改多个记录的值25
5.2.3带子查询的修改语句25
5.2.4删除数据26
6.定义、删除与修改视图26
6.1定义视图26
6.2查询视图28
6.3更新视图28
6.3.1一般不可以更新的视图29
6.4删除视图29
三.存储过程和触发器30
1.存储过程的概念30
2.创建储存30
3.执行存储过程31
4.查看存储过程32
5.修改存储过程32
6.删除存储过程32
7.触发器33
7.1使用CREATETRIGGER命令创建触发器33
7.2使用触发器34
7.2.1inserted表和deleted表34
7.2.2.INSERT触发器34
7.2.3DELETE触发器35
7.3删除触发器35
四.并发与事务35
五.数据库设计35
1数据依赖35
1.1依赖35
1.2完全依赖,部分依赖36
1.3直接依赖传递依赖37
2范式37
2.1第一范式37
2.1.1解决不符合第一范式的方法38
2.2第二范式39
2.3第三范式40
3.设计过程综述40
3.1需求分析41
3.2逻辑设计42
3.2.1对象命名43
3.2.2识别主题43
3.2.3识别字段43
.3.2.4键43
3.2.5枚举列表43
3.2.6子集表43
3.3联系的表示43
3.3.1联系的表示44
3.3.2两个实体型间的联系44
3.4概念模型的表示方法44
3.4.1ER图44
3.4.2UML图45
3.5识别联系46
3.6物理实现46
3.7优化重构46
一.数据库基础
目标:
掌握数据库的基本概念,入关系.表.记录.字段.键.约束.关系模型.了解关系数据库系统;掌握如何恰当地选字段的类型呵大小;理解数据库的规范.排序
索引等;掌握SQL基本的使用方法。
1.关系:
实体属性实例
表行列
记录字段
关系的结构可描述:
表名(字段一,字段二…)
2.健(key)
唯一健非唯一键复合键主键候选键外键(与主键的“参照完整性”)
3.表间联系
一对多联系一对一联系多对多联系
4.关系数据库管理系统(RDBMS)
关系模型数据库管理系统(DBMS)数据库系统:
用户.数据库应用程序.数据库管理系统.数据库
5.字段的类型和大小
(1)整数
bigint:
从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据(天文数字)。
int:
从-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型数据(所有数字)。
十亿)
Smallint:
从-2^15(-32,768)到2^15-1(32,767)的整数数据(万)
tinyint:
从(0~255)的整数数据
(2)bit
bit:
1或0的整数数据
(3)decimal和numeric
带定点精度和小数位数的numeric数据类型。
定点精度和小数位数decimal[(p[,s])]和numeric[(p[,s])]
使用最大精度时,有效值从-10^38+1到10^38-1。
decimal的SQL-92同义词是dec和dec(p,s)。
decimal(4,2)33.330.10
p(精度)
指定小数点左边和右边可以存储的十进制数字的最大个数。
精度必须是从1到最大精度之间的值。
最大精度为38。
s(小数位数)
指定小数点右边可以存储的十进制数字的最大个数。
小数位数必须是从0到p之间的值。
默认小数位数是0,因而0<=s<=p。
最大存储大小基于精度而变化。
(4)money和smallmoney
☐money
☐货币数据值介于-2^63(-922,337,203,685,477.5808)与2^63-1(+922,337,203,685,477.5807)之间,精确到货币单位的千分之十。
☐smallmoney
☐货币数据值介于-214,748.3648与+214,748.3647之间,精确到货币单位的千分之十。
(十万)
(5)浮点数
☐float
☐从-1.79E+308到1.79E+308的浮点精度数字
☐
☐real
☐从-3.40E+38到3.40E+38的浮点精度数字。
(6)datetime和smalldatemtime
☐Datetime
☐从1753年1月1日到9999年12月31日的日期和时间数据,精确到百分之三秒(或3.33毫秒)。
☐smalldatetime
☐从1900年1月1日到2079年6月6日的日期和时间数据,精确到分钟。
(7)字符串(数据abc)(一个汉字是:
一个双字节以上的字符一个英文是一个单字节字符)
char:
固定长度的非Unicode(只能保存一个单字节字符/Unicode能保存任何一个字符)字符数据,最大长度为8,000个字符。
varchar:
可变长度的非Unicode数据,最长为8,000个字符。
(char/varchar;char(30):
无论实际输入多少字符,系统都会分配30个字符的空间,而varchar(30):
是按实际输入的字符来分配储存空间,输入多少就分配多少,但不会超过30个。
text:
可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。
(8)Unicode字符串
nchar:
固定长度的Unicode数据,最大长度为4,000个字符。
Nvarchar:
可变长度Unicode数据,其最大长度为4,000字符。
sysname是系统提供用户定义的数据类型,在功能上等同于nvarchar(128),用于引用数据库对象名
ntext:
可变长度Unicode数据,其最大长度为2^30-1(1,073,741,823)个字符。
(9)二进制字符串(图)
binary:
固定长度的二进制数据,其最大长度为8,000个字节。
varbinary:
可变长度的二进制数据,其最大长度为8,000个字节。
image:
可变长度的二进制数据,其最大长度为2^31-1(2,147,483,647)个字节。
(10)其他数据类型
cursor:
游标的引用
sql_variant:
一种存储SQLServer支持的各种数据类型(text、ntext、timestamp和sql_variant除外)值的数据类型
table:
一种特殊的数据类型,存储供以后处理的结果集
timestamp:
数据库范围的唯一数字,每次更新行时也进行更新。
uniqueidentifier:
全局唯一标识符(GUID)
6.数据的规范
(1)空值(尽量不允许为空)/空格(相当一个英文字母)
(2)英文大小写(一般要统一).全角半角(无特别要求只用半角)
7.排序与索引
(1)…空格…0123456…ABC…XYZ…abc…xyz…中文…
(2)索引(引用列):
唯一索引(不允许两行有重复值)主键索引(唯一索引的特殊类型)集聚索引(?
)
8.数据的完整性与约束
(1)数据的完整性:
实体完整性域完整性参照完整性用户自定义完整性
(2)从作用的范围来看,还可以把完整性分为一下几种:
库级完整性表级完整性字段完整性
(3)约束:
保证数据完整性的机制(在sql2000中包括有:
1.NOTNULL“非空约束”2.CHECK约束“检查约束”3.UNIQUE约束“唯一值约束”4.PRIMARYKEY约束“主键约束”4.FOREIGNKEY约束“外键约束”)
数据库的对象:
表(Table);索引(Index);视图(View);默认(Default);自定义数据类型(UserDefinedDatatype);自定义函数(UserDefinedFunction);约束(Constraints);储存过程(STORE
Procedures);触发器(Trigger)
文件:
至少两个文件:
数据库文件,日志文件(.ldf)
系统数据库:
1)master数据库
master数据库记录SQLServer系统的所有系统级别信息。
它记录所有的登录帐户和系统配置设置。
master数据库是这样一个数据库,它记录所有其它的数据库,其中包括数据库文件的位置。
master数据库记录SQLServer的初始化信息,它始终有一个可用的最新master数据库备份。
2)tempdb数据库
tempdb数据库保存所有的临时表和临时存储过程。
它还满足任何其它的临时存储要求,例如存储SQLServer生成的工作表。
tempdb数据库是全局资源,所有连接到系统的用户的临时表和存储过程都存储在该数据库中。
tempdb数据库在SQLServer每次启动时都重新创建,因此该数据库在系统启动时总是干净的。
临时表和存储过程在连接断开时自动除去,而且当系统关闭后将没有任何连接处于活动状态,因此tempdb数据库中没有任何内容会从SQLServer的一个会话保存到另一个会话。
3)model数据库
model数据库用作在系统上创建的所有数据库的模板。
当发出CREATEDATABASE语句时,新数据库的第一部分通过复制model数据库中的内容创建,剩余部分由空页填充。
由于SQLServer每次启动时都要创建tempdb数据库,model数据库必须一直存在于SQLServer系统中。
4)msdb数据库
msdb数据库供SQLServer代理程序调度警报和作业以及记录操作员时使用。
9.创建数据库创建表库的分离与附加创建索引实施约束
二:
结构化查询语言(SQL)
目标:
定义.删除与修改基本表;建立和删除索引;定义.删除与修改视图;各种数据查询方法;数据更新(包括插入数据.修改数据.删除数据);数据控制(包括用户授权和收回授权)。
1.SQL概述
SQL(StructuredQueryLanguage)称为结构化查询语言,它专应用于数据库中对数据的各种操作,其功能包括查询、操作、定义和控制四个方面,是一个通用的功能极强的数据库标准语言。
2.SQL2000里的Transact-SQL(简称T-SQL)
2.1SQL语言的动词
2.2T-SQL语言的语法规
2.3查询分析器的使用
3.数据定义
3.1定义数据库
SLQ语言使用CREATEDATABASE语句定义基本表,其一般格式:
CREATEDATABASEdatabase_name
[ON
([NAME=logical_file_name,]
FILENAME=‘os_file_name’
[,SIZE=size])[,...n]
[LOGON
([NAME=logical_file_name,]
FILENAME=‘os_file_name’
[,SIZE=size])[,...n]
各部分的参数解释如下:
CREATEDATABASE:
创建一个新数据库及存储该数据库的文件,或从先前创建的数据库的文件中附加数据库(帮助G)。
database_name:
新数据库的名称。
数据库名称在服务器中必须唯一,并且符合标识符的规则。
ON:
指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。
NAME:
为数据库数据文件或日志文件指定逻辑名称。
FILENAME:
为数据库数据文件或日志文件指定系统名称。
SIZE:
指定数据库数据文件或日志文件的大小。
LOGON:
指定显式定义用来存储数据库日志的磁盘文件(日志文件)。
例如:
CREATEDATABASE学生选课与成绩管理
ON
(NAME=学生选课与成绩管理_dat,
FILENAME='d:
\学生选课与成绩管理.mdf',
SIZE=10)
LOGON
(NAME='学生选课与成绩管理_log',
FILENAME='d:
\学生选课与成绩管理.ldf',
SIZE=5)
3.2定义.删除与修改基本表
3.2.1定义基本表:
CREATETABLE<表名>(<列名><数据类型>[列级完整性约束条件],
<列名><数据类型>[列级完整性约束条件],<表级完整性约束条件>)
各部分的参数解释如下:
<表名>:
所要定义的基本表的名字
<列名>:
组成该表的各个属性(列)
<列级完整性约束条件>:
涉及相应属性列的完整性约束条件<表级完整性约束条件>:
涉及一个或多个属性列的完整性约束条件
例如:
《1》CREATETABLE学生(/*建立一个学生表*/
学号CHAR(9)PRIMARYKEY,/*PRIMARYKEY为设置主键*/
姓名NCHAR(5),
班级CHAR(20),
性别NCHAR
(1),
出生年月日SMALLDATETIME,
电话CHAR(11),
EmailVARCHAR(30),
备注VARCHAR(100))
《2》REACTETABLE课程(/*建立一个课程表*/
课程号CHAR(3)PRIMARYKEY,
课程名VARCHAR(30)NOTNULLUNIQUE,
/*NOTNULL为非空,UNIQUE为取值唯一*/
学时SMALLINT,
学分DECIMAL(3,1))
《3》CREATETABLE选修(/*建立一个学生表*/
学号CHAR(9),
课程号CHAR(3),
成绩INT,
选修日期DATETIME,
PRIMARYKEY(学号,课程号),/*PRIMARYKEY为设置主键*/
FOREIGNKEY(学号)REFERENCES学生(学号),
FOREIGNKEY(课程号)REFERENCES课程(课程号))
/*FOREIGNKEY为设置外键,REFERENCES为参照完整性约束
3.2.2常用完整性约束表
☐注意:
☐[1]当主属性多于一个时,需把设置主键的语句放在后面。
☐[2]当属性被设为主键时,它必定是非空且唯一的。
3.2.2初始化基本表
所谓的初始化即在表中添加数据,SQL中用INSERT语句来初始化数据表数据
例如
将一个新学生记录(学号:
050103001;姓名:
陈冬伟;班级:
计算机软件;性别:
男;出生年月日:
1983-4-18;电话:
22894152;Email:
cdwei@;备注:
转校生)插入到学生表中。
INSERT
INTO学生
VALUES(‘050103001’,‘陈冬伟’,‘计算机软件’,‘男’,‘1983-4-18’,‘22894152’,‘cdwei@’,‘转校生’)
由上面的例子我们可以看到,插入单个记录的INSERT语句的格式为:
INSERT
INTO<表名[(<属性列1>[,<属性列2>…])
VALUES(<常量1>[,<常量2>]…)其功能是将新记录插入指定表中。
其中新记录属性列1的值为常量1,属性列2的值为常量2,…。
INTO子句没有出现的属性列,新记录在这些列上将取空值。
☐在表定义时说明了NOTNULL的属性列不能取空值。
否则会出错。
☐如果INTO子句没有指明任何列名,则新插入的记录必须在每个属性列上均有值
3.2.3修改基本表
例如
《1》向“学生”表增加“入学时间”列,其数据类型为日期型。
ALTERTABLE学生ADD入学时间DATETIME
《2》将例1中增加的“入学时间”列删除。
ALTERTABLE学生DROPCOLUMN入学时间
由上例我们可以看到,SQL语言用ALTERTABLE语言修改基本表,其一般格式为:
ALTERTABLE<表名>
[ADD<新列名><数据类型>[完整性约束]]
[DROPCOLUMN<完整性约束名>]
各部分的参数解释如下:
⏹<表名>:
要修改的基本表
⏹ADD子句:
增加新列和新的完整性约束条件
DROP子句:
删除指定的完整性约束条件。
3.2.4删除基本表
例如
删除“学生”表。
DROPTABLE学生
使用DROPTABLE语句删除它。
其一般格式为:
DROPTABLE<表名>
3.3建立与删除索引
3.3.1建立索引
建立索引使用CREATEINDEX语句,其一般格式为:
CREATE[UNIQUE]INDEX<索引名>ON<表名>(<列名>[<次序>][,<列名>[<次序>]]……);
各部分的参数解释如下:
⏹用<表名>指定要建索引的基本表名字
⏹索引可以建立在该表的一列或多列上,各列名之间用逗号分隔
⏹用<次序>指定索引值的排列次序,升序:
ASC,降序:
DESC。
缺省值:
ASC
⏹UNIQUE表明此索引的每一个索引值只对应唯一的数据记录
例如
《1》为学生选课与成绩管理数据库中的课程表按课程名降序建立唯一索引
CREATEUNIQUEINDEXCcourseON课程(课程名DESC)/*Ccourse为索引名*/
《2》CREATEUNIQUEINDEXScnoON选修(学号ASC,课程号DESC)/*Scno为索引名*/
3.3.2删除索引
例如
《1》删除学生表的stusname索引。
DROPINDEX学生.Stusname
在SQL语言中,删除索引使用DROPINDEX语句,其一般格式为:
DROPINDEX<表名>.<索引名>
4.数据库查询
4.1单表查询
☐SQL语言用SELECT动词来进行数据查询,其一般格式为:
SELECT[ALL\DISTINCT]<目标列表达式>[,<目标表达式>]……
FROM<表名或视图名>[,<表名或视图名>]……
[WHERE<条件表达式>]
[GROUPBY<列名1>[HAVING<条件表达式>]]
[ORDERBY<列名2>[ASC\DESC\]]
☐各部分的参数解释如下:
⏹SELECT子句:
指定要显示的属性列
⏹FROM子句:
指定查询对象(基本表或视图)
⏹WHERE子句:
指定查询条件
⏹GROUPBY子句:
对查询结果按指定列的值分组,该属性列值相等的记录为一个组。
通常会在每组中作用集函数。
⏹HAVING短语:
筛选出只有满足指定条件的组。
⏹ORDERBY子句:
对查询结果表按指定列值的升序或降序排序
例如
《1》查询全体学生的学号与姓名。
SELECT学号,姓名
FROM学生
《2》查询全体学生的详细记录。
SELECT学号,姓名,班级,性别,出生年月日,电话,Email,备注
FROM学生;
或(推荐:
)
SELECT*
FROM学生
《3》查询全体学生的姓名及年龄。
SELECT姓名,YEAR(GETDATE())-YEAR(出生年月日)as年龄
FROM学生
提示:
[1]由于学生表中只有出生年月日字段,求学生的年龄则必须要先把出生年月日字段转为年份,再用现今年份减去该年龄就求出学生的年龄,其中“YEAR(GETDATE())“用来求现在的年份,而“YEAR(出生年月日)”就是用来求每位学生的出生年份。
[2]因为年龄是计算出来的,所以查询的结果中年龄那一列没有相关的字段名,“AS年龄”就是为计算机出来的那一列赋一个字段名。
[3]<目标列表达式>不仅可以是算术表达式,还可以是字符串常量,函数等。
[4]用户可以通过指定别名来以改变查询结果的列标题,这对于含算术表达式,常量,函数名的目标列表达式尤为有用。
4.2选择表中的若干记录
4.2.1消除取值重复的行
有时候,我们由于要查找表中的某些列,而其他的列都不显示,这样就有可能出现要查找的列中出现重复的现象,例如,要求查询选修表中选修了课程的学生学号。
则我们可以用用以下的SQL语句:
SELECT学号
FROM选修
由该结果图我们可以看出,学号030101001重复出现3次,学号030101002和030101003各重复出现2次,这是因为一个学生可以选修
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sql 数据库 基础