SQL Server数据库设计==>>MySchool

1.数据库设计之步调

第一步:需求分析(收集信息)

亚步:绘制
E-R 图 (标示实体 ,找到实体的性

老三步:将 E-R 图转换成数据库模型图

季步:将数据库模型图转换成多少表

2.怎样绘制 E-R 图
矩形:实体
椭圆形:属性
菱形:关系

3.怎么绘制数据库模型图
PowerDesigner :选择 PhysicalModel
如发有人非小心关掉了 Platter,对工具栏点击右键,勾选 Platter 即可。
当我们将数据库模型图设计完毕后,可以由此菜单中的 database下之
GenerateDatabase来变化对应的 sql

4.老三良范式规范数据库设计
先是范式:保证每列的原子性,不可再吃拆分
亚范式:在满足第一范式的根底及,一张表只能描述一码业务
老三范式:在满足第二范式的根基及,除了主键列之外任何列都如直依赖让
要当规范化和总体性之间取得一个平衡

5.T-SQL告知句子回顾(其中[]屡遭之代表可粗略)

1.添加多少

 insert [into] 表名 (列1,列2,…) values(值1,值2,…)

2.修改数据

 update 表名 set 列1=值1,列2=值2,… where (条件)

3.询问数据

select 列1,列2,… from 表名 where (条件) order by 列名

4.剔除数据

delete from 表名 where (条件)

6.施用SQL语句创建和去数据库

  1.创造数据库([]代表足简简单单,{}表示必需的一对,<>表示说说明)

 语法:

   create detabase 数据库名

    on [primary]

     (

     <数据文件参数> [,……n] [<文件组参数>]

     )

     [log on]

    (

    {<日志文件参数> [,……n]}

    )

 数据文件的现实参数如下:

 ([name=逻辑文件名]

 filename=物理文件称

 [,size=大小]

 [,maxsize={最要命容量|unlimited}]

 [,filengrowth=增长量]) [,…..n]

 文件组的现实性参数如下:

  filegroup 文件组名 <文件参数> [,……n]

eg:

create database stuDB 
on  primary  -- 默认就属于primary文件组,可省略
(
/*--数据文件的具体描述--*/
    name='stuDB_data',  -- 主数据文件的逻辑名称
    filename='D:\stuDB_data.mdf', -- 主数据文件的物理名称
    size=5mb, --主数据文件的初始大小
    maxsize=100mb, -- 主数据文件增长的最大值
    filegrowth=15%--主数据文件的增长率
)
log on
(
/*--日志文件的具体描述,各参数含义同上--*/
    name='stuDB_log',
    filename='D:\stuDB_log.ldf',
    size=2mb,
    filegrowth=1mb
)

 

2.剔除数据库

语法:

 drop database 数据库名

那么哪些去这个数据库也,SQL
Server将数据库的清单存放于master系统数据库的sysdatabases表中,只需要查阅该表是否在于该数据库中虽好,这样在创造数据库的时段也足以预先判断,再创

了,语句如下:

use master -- 设置当前数据库为master,以便访问sysdatabases表
go
if exists(select * from sysdatabases where name='stuDB')
drop database stuDBgo

 

 7.用SQL语句创建同删除表

   1.想起一下咱SQL Server
中的数据类型(转载自http://blog.sina.com.cn/zhanshiqi)

率先坏接近:整数多少

bit:bit数据类型代表0,1或者NULL,就是表示true,false.占用1byte.
int:以4个字节来储存正负数.可存储范围也:-2^31届2^31-1.
smallint:以2单字节来储存正负数.存储范围吗:-2^15暨2^15-1
tinyint: 是最为小的整数类型,仅用1字节,范围:0至此^8-1

亚挺类:精确数值数据

numeric:表示的数字可以达标38号,存储数据常常所用底字节数目会就使用权因此位数的粗变化.
decimal:和numeric差不多

老三怪类:近似浮点数值数据

float:用8独字节来囤积数据.最多而也53位.范围为:-1.79E+308到1.79E+308.
real:位数为24,用4独字节,数字范围:-3.04E+38顶3.04E+38

季万分类:日期时数额

datatime:表示时间限制可以表示于1753/1/1及9999/12/31,时间得代表到3.33/1000秒.以8个字节.
smalldatetime:表示时间限制可以表示于1900/1/1至2079/12/31.用到4单字节.

第五好类:字符串数据

char:长度是设定的,最短缺也1字节,最丰富为8000独字节.不足之长短会因此空白补及.
varchar:长度也是设定的,最缺乏为1字节,最丰富呢8000只字节,尾部的空白会错过掉.
text:长宽也是设定的,最丰富可存放2G底数据.

第六不胜类:Unincode字符串数据

nchar:长度是设定的,最短缺也1字节,最丰富吗4000单字节.不足之长会为此空白补上.储存一个字符需要2单字节.
nvarchar:长度是设定的,最缺也1字节,最丰富吗4000单字节.尾部的空会去掉.储存一个字符需要2个字节.
ntext:长度是设定的,最短也1字节,最丰富也2G.尾部的空会失去丢,储存一个字符需要2独字节.

第七特别类:货币数据类型

money:记录金额限制也:-92233720368577.5808交92233720368577.5807.需要8
个字节.
smallmoney:记录金额限制吗:-214748.3648及214748.36487.欲4独字节.

第八老大类:标记数据

timestamp:该数据类型在各一个表中是唯一的!当表中的一个笔录转时,该记录之timestamp字段会自动更新.
uniqueidentifier:用于识别数据库里许多个表的唯一一个记录.

第九深接近:二进制码字符串数据

binary:固定长度的二进制码字符串字段,最短缺也1,最丰富为8000.
varbinary:与binary差异为数量尾部是00时不时,varbinary会将那夺丢
image:为而变换长的二进制码字符串,最丰富2G.

 2.创建表

 语法:

   create table 表名

   (

     列1 数据类型 列的性状,

     列2 数据类型 列的特点,

     ……

    )

 
**:数据库中表的清单存放于数据库的体系表sysobjects中.

use StuDBgo 
if exists(select * from sysobjects where name='stuMarks')
drop table stuMarks
create table stuMarks
(   
    ExamNo      int     identity(1,1) primary key,    
    stuNo       char(6) not null,    
    writtenExam int     not null,   
    LabExam     int     not null
)
go

里面,列属性”identity(起始值,递增量)” 表示”ExamNo”列为自动编号,
也叫标识列

  3.删除表

   语法:

 drop table
表名

 

use StuDBgo 
if exists(select * from sysobjects where name='stuMarks')
drop table stuMarks

 

 

8.用SQL语句创建同去约束

 

 1.回顾一下SQL Server
中有关数据完整性

 

 
(1)实体完整性:唯一确定表中一行记录

 

 
(2)域完整性:表中一定数据的可行,以保不见面输入无效的数值

 

  (3)引用完整性:插入或删除记录时,维护表之间定义之涉嫌

 

  2.添加约束

 

  语法:

 

    alter
table 表名

 

    add
constraint 约束名 约束类型 具体的羁绊说明

 

上述语法表示修改某表,并于中添加某个约束.其中,约束名的命名规则推荐用”约束类型_封锁列的款式

 

eg:

 

也学号(StudentNo)添加主键约束,约束名推荐取名”PK_StudentNo;

 

…唯一约束=>”UQ_IdentityCard;

 

…默认约束=>”DF_Address;

 

…检查约=>”CK_BornDate;

 

…外键约束=>”FK_StudentNo.

 

--添加外键约束(主表Student和Result建立关系,关联StudentNo)
alter table Result
add constraint FK_StudentNo
  foreign key(StudentNo) references Student(StudentNo)
Go

 

--添加主键约束(将StudentNo作为主键)
alter table Student
add constraint PK_StudentNo primary key (Student)

--添加唯一约束(身份证)
alter table Student
add constraint UQ_IdentityCard unique (IdentityCard)

--添加默认约束(不填地址,则默认为"地址不详")
alter table Student
add constraint DF_Address  default('地址不详') for Address

--添加检查约束
alter table Student
add constraint CK_BornDate ckeck (BornDate>='1980-01-01')

 

3.去除约束

  语法:

   alter table 表名

   drop constraint 约束名

eg:

 

--Student表中地址列默认约束的语句如下
alter table Student
drop constraint DF_Address

 

相关文章