郝斌SqlServer2005
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、数据库是如何解决数据存储问题的
1.从三个方面来学习数据库
a)数据库是如何存储的
i.字段,记录,表,约束(主键,外键,唯一键,非空,check, default, 触发器)
b)数据库是如何操作数据的
i.Insert, update, delete, T-SQL, 存储过程,函数,触发器
c)数据库是如何显示数据的
i.select(重点中的重点)
2.必备的一些操作
d)如何建数据库
i..mdf是数据文件.LDF是日志文件
ii.右键->新建数据库->输入名字->确定
e)如何删除一个库;如何附加和分离数据库
f)设置登录用户名和密码;建用户
3.用鼠标建立的第一个数据库Test
g)nvarchar() 国际化编码的可变的字符串。n表示国际化,对汉字也支持;var是
变量,字符的长度是可变化的
h),其中的dbo表示一个系统的身份
i)
j)存在外键的表叫外键表
k)当要选择是否可以为空时,用空格键来进行控制,即:可以用空格来选择
l)PK,primary 主要的;FK, foreign 外部的
4.通过sql命令建表和主外键约束
m)在sql server里最后一句写不写逗号都可以,但是在oracle里不可以写逗号,因此在写命令时,最后一个字段的后面就不要写逗号了
n)create table dept
(
--设置了非空
dept_address nvarchar(100)
)
create table emp
( --这个是注释
--此处给主键起了
--一个名字,红字部分可以不写
emp_name nvarchar(20) not null,
emp_sex nchar(1),
dept_id int constraint FK_dept_id_hd
--在此处建立了一个外键,使用了references )
5.约束
o)约束的分类
i.主键约束不允许重复元素,避免了数据的冗余(实体完整性)
ii.外键约束通过外键约束从语法上保证了本事物所关联的其他事物一定是存在的(引用完整性)事物和事物之间的关系是通过外键来体现的p)check约束
i.create table student
{
)
在此处使用了check约束,限定了stu_sal的值在1000与8000之间ii.保证事物属性的取值在合法的范围之内
q)default约束
i.
ii.保证事物的属性一定有一个值
iii.create table student2
(
stu_id int primary key,
是可以省略的,在数据库中字符串是
--必须用’’括起来
)
insert into student2(stu_id, stu_sal) values (1, 1000)
insert into student2 values (2, 5000, '女')
--insert into student2 values (3, 10000) 这样写是不对的
在此处,声明了三个属性,在第一个命令中,指定了二个属性,所以填入了两
个值;第二个命令中,没有指定要填写几个属性,所以要填写全部的三个值;
第三个命令中,没有指定要填写几个属性,不过只写了两个值,这是不对的r)unique约束(唯一约束)
i.保证了事物的取值不允许重复,
ii.create table student5
(
stu_id int primary key,
stu_sal int check (stu_sal >= 1000 and stu_sal <= 8000),
)
insert into student5 values (1, 6000, '男', '张三') --此句话正确
insert into student5 values (2, 6000, '男', '张三') --违反了唯一键约束,不正确
insert into student5 values (null, 6000, '男', '王五') --主键不能为空,不正确
insert into student5 values (3, 6000, '男',null) --唯一键可以为空iii.unique键是否允许多列为空?
1.Sql Server 2012只允许一个unique列为空
2.Oracle11G允许多个unique列为空
s)主键和唯一键区别及其两者配合使用举例
i.不要用业务逻辑作主键(编号不是一个事物的属性)
ii.把编号(代理主键)当主键,
iii.create table student6
(
stu_name nvarchar(50) not null unique,
stu_email nvarchar(50) not null,
stu_address nvarchar(50)
--这一句是删除一个表
在此处,identity是自增的意思;设定了一个编号当作主键,把用户名作为唯一键;通常不会删除一个用户,一般每个用户都有一个标识位,1或者0,
如果注消一个用户的话可以把他的标识位改一个,就不能使用此帐户了t)not null(可以当作一个约束)和default的区别
i.not null要求用户必须为该属性赋一个值,否则语法出错
ii.如果有默认值,如果不指定要为哪一个属性赋值的话,必须为全部属性赋值iii.如果指定了为哪些属性赋值,有一个属性没在括号内且可以为空的话,这个值就是NULL;如果指定了为哪些属性赋值,有一个属性没在括号内且有默认值,
那么这个值就是默认值
6.表和约束的区别(他自己的理解)
u)数据库是通过表来解决事物的存储问题的
v)数据库是通过约束来解决事物取值的有效性和合法性的问题
w)建表的过程就是指定事物属性及其事物属性各种约束的过程
7.什么是关系
x)定义:表和表之间的联系
y)实现方式:通过设置不同形式的外键来体现表和表的不同关系
z)分类:一对一,一对多,多对多
aa)一对一:
i.可以把表A的主键充当表B的外键,也可以把表B的主键当充当表A的主键
bb)一对多:
i.在多的一方添加外键
cc)多对多:
i.任何一个表都有一个主键,但不一定都有外键
ii.多对多的关系需要另外一张表来表示(通常至少有两列)
iii.--班级表
create table banji
(