数据库笔记
一、数据库:用于存放数据的
1、组成
①表:数据真正是存放在表中的,而比表是才存放在数据库中的
行:(从第二行)=数据=记录=实体=元组
列头 = 字段 = 属性 = 域
②视图、索引、存储过程、触发器
二、数据库管理系统(DBMS):它就是一个软件,通过该软件来管理整个数据库
1、常见的:oracle sqlserver MySql DB2 Access……
2、RDBMS:关系型数据库管理系统
Relation DateBase Management System
三、数据库的基本概念
1、数据冗余:存在了大量的的重复的数据(浪费硬盘空间,为更新数据带来了方便)
2、数据完整性:数据的准确性
①实体完整性:当一个表中出现重复的数据从而无法区分这些数据时,此表便失去了实
体完整性(维护:设置主键字段,该字段下的数据不能重复、不能为空
(primary key))
②域完整性:字段的完整性,当某个字段下填写的数据不准确时,此表便失去完整性(维
护:设置约束)
③引用完整性:当表1中的某个字段引用了表2中某个字段下不存在的数据,此时我们
认为表1失去了引用完整性(维护:设置外键字段)
④用户自定义完整性
一、开启和关闭数据库服务
1、开启
①在开始菜单中进入sqlserver2008目录下找到“sqlserver配置管理器”
②在“服务”窗口中,在也行窗口中输入 server.msc
③通过dos命令来开启服务
net start mssqlserver (.bat批处理)
2、关闭
①在开始菜单中进入sqlserver2008目录下找到“sqlserver配置管理器”
②在“服务”窗口中,在也行窗口中输入 server.msc
③通过dos命令来开启服务
net stop mssqlserver (.bat批处理)
二、进入sqlserver2008软件
1、在运行窗口输入ssms
2、服务器名称:登录哪一台电脑的数据库,如果登录本机可以填写:本机电脑名 或
. 或本机的IP地址 或 localhost
3、身份验证:
①Windows身份验证:采用的是当前登录操作系统时的用户和密码,因此不用输入密
码
②server身份验证:该方式的用户名和密码均有sqlserver2008提供、与操作系统无
关,sa是超级管理员
三、数据库的分类
1、
①master:管理整个sqlserver2008服务器的运行
②model:创建自定义数据库时的模板数据库
③msdb:管理sqlserver2008的提示信息
④tempdb:存放临时的表(当服务被重启后临时表就会消失)
2、数据库的物理文件
①数据库文件:主要:mdf 有且只有一个
次要:ndf >= 0
用于存放数据
②日志文件:。ldf >= 1
用于记录日常操作,以便日后的查阅和数据恢复
四、创建数据库
create database 数据库名
on [primary]
(
name =’ mdf文件名’ ,
filename = ‘mdf文件的存储路径’,
size = ‘mdf文件的初始大小(至少3MB)’,
maxsize = ‘mdf文件的最大大小’,
filegrowth = ‘mdf文件的增长方式’
)
log on
(
name =’ldf文件名’ ,
filename = ‘ldf文件的存储路径’,
size = ‘ldf文件的初始大小(至少1MB)’,
maxsize = ‘ldf文件的最大大小’,
filegrowth = ‘ldf文件的增长方式’
)
五、删除数据库
drop database 数据库的名字
六、数据库搬家(分离—附加):将数据库对应的mdf、ndf、ldf文件进行移动
一、常用的数据类型
1、字符/字符串型
char(字节大小) varchar(字节大小)
固定长度、查询效率高 变化长度
nchar(字符大小) nvarchar(字符大小)
不带n的 VS 带n的
只支持英文数字 可以支持多种字符
text ntext:大文本类型,可以支持超过8000字节以外的大字符串
2、整数型
tinyint:字节型
smallint:短整型
int:整型
big:长整型
3、小数型
float:单精度浮点型
decimal(总位数,小数位数)
numeric(总位数,小数位数)
4、日期/时间型
smalldatetime:年月日小时分钟秒
datetime:年月日小时分钟秒毫秒
datetime:年月日
time:小时分钟秒
5.货币型
money :可以存放货币符号,只允许四位小数
6、布尔型
bit:0和1
二、创建表
create table 表名
(
字段名 数据类型 约束,
字段名 数据类型 约束
)
注意:在每段完整代码后都建议加上go(批处理标志)
三、删除表
drop table 表名
四、使用数据库
use 数据库名
五、维护数据完整性
(一)、维护实体完整性
1、主键字段(给某个字段添加主键约束)
①创建表时就给字段添加
字段名 数据类型 primary key
②表已经建好了, 为表的某个字段追加主键约束
alter table 表名 addconstraint 约束名 primary key(字段名)
注意:一个表只能有一个主键约束
2、唯一约束:unique
唯一约束 VS 主键约束
允许一个NULL 不许NULL
不能重复 不能重复
一个表有多个 一个表只有一个
3、标识列(自动增长列):identity(起始值,增长值)
注意: ①只能用于数字类型的字段
②一个表只能有一个自动增长列
③当插入数据时出现错误,自动增长列也会增长
(二)、维护域完整性
1、检查约束:check(表达式)
注意:①and 并且 or 或者
②表达式中如果有多个or,则可以简化为 字段in(值,值……)
③表示 >= 值1 and <= 值2 则可以简化为字段 between 值1 and值2
④当表达式中涉及多个字段时,应该将检查约束放在最后
一个字段之后或者单独追加
2、默认值约束:当用户没有为字段提供值时,由系统自动提供 default
①创建表时: 字段名 数据类型 default ‘默认值’
②追加: alter table 表名 add constraint 约束名 default ‘默认值’for字段名
3、非空约束:not null
①创建表时: 字段名 数据类型 not nul
②将可以为空的字段修改为不可以为空
alter table 表名 alter column 字段名 数据类型 not null
(三)、维护引用完整性
1、外键约束 foreign key references
①创建表时
字段名 数据类型 foreign key references 主键表(主键字段/唯一字段)
②追加
alter table 表名 add constraint 约束名 foreign key(外键字段) references
主键表(主键字段/唯一字段)
注意:能够被外键引用的字段必须是表中的主键字段或者是具有唯一约束的字
段
一、查询数据:select
1、查询表中的所有数据
Select * / 字段列表(字段之间用,隔开)from 表名
2、为字段取别名
Select 别名 = 字段名,字段名[as]别名 from表名
3、有条件的查询
Select * /字段列表 from表名 where 条件表达式
4、模糊查询:like + 通配符
①通配符:用来匹配支付的符号
a:%用来匹配任意长度的字符
b:_用来匹配任意的一个字符
c:[]用来匹配范围之内的一个字符 例:[ab你]有任意一个 [a-d你]
d:[^]用来匹配范围之外的一个字符 例:[^张]
二、增加数据:insert
1、insert [into] 表名[(字段列表)] values(值,值,值……)
向表中指定字段下插入一条数据
注意:①如果省略“(字段列表)”,则表示向该表除identity字段外所有的字段下都要插入值,插值的顺序和表结构字段顺序必须一致
②插入的值的个数、顺序、类型与字段列表中的保持一致
③插入的值不能违反表中的约束
④若要启用某个字段的默认值,要么不给字段插值
⑤忽略identity字段(既不用插值也不用写字段名)
2、批量插入数据
①:insert[into] 表名[(字段列表)] values (值,值),(值,值)……
②:insert[into] 表名[(字段列表)] select 值,值 union select 值,值
③:将表1中的数据插入到表2中
insert [into]表2[(字段列表)]
select * / (字段列表) from表1 where 条件表达式
注意:表2 必须存在
④:生成表查询
Select * / (字段列表) into 新表名 from 旧表 where 条件表达式
注意:新表不能存在
三、更改数据库 update
Update 表名 set 字段名 = 值,字段名 = 值 where 条件表达式
四、删除数据:delete 和 truncate table
1、使用delete删除
Delete [from] 表名 where 条件表达式
2、使用truncate table 删除
Truncate table 表名
delete VS truncate table
①可以带条件 不能带条件
②可以恢复,因为被ldf文件记录了 永久删除
③速度慢 速度快
注意:为空 is null 不为空 is not null
一、完整的select 语句写法
select top 数量 percent */字段列表,聚合函数,其他数量 from 表(表的联接)
where 条件表达式
group by 分组
having 条件表达式
order by排序
二、排序:order by 字段名 [asc]/desc,字段名 [asc]/desc
注意:如果按照多个字段进行排序,那么只有当前一个字段中出现重复数据时,才会按
照最后一个字段来排序(仅针对重复的数据排序)
三、限制返回前n条数据
1、top 数量
2、top 数量 percent
注意:①top 一般都与order by 语句联合使用
②使用with ties 如果有多个相同的值
四、聚合函数:实现数据的统计
1、sum (字段名):求和
2、avg (字段名):求平均值(average)
3、max (字段名):求最大值
4、min (字段名):求最小值
5、count(*):不忽略某个字段中的空值
count(字段名):如果该字段下出现有空值,则会忽略不计
注意:在没有进行分组查询时(没有group by 语句时),当select中出现过带有聚合函
数的表达式后,就不能再出现不带聚合函数的字段了

浙公网安备 33010602011771号