数据库设计
2016-01-24 20:51
141 查看
数据库自考学习中也学过,之前也看过耿建林视频。不过数据库一直都没有自己亲自建过。这一次进行重构要自己亲手建立自己的数据库,要自己动手用EA画一下E-R图。之前自己没有亲手动手做的东西,在这次重构中都想自己认真做一遍。
数据库的创建 有两种方法,一种是很简单的 数据库-新建数据库然后给数据库命名等这一种方法应该大家都比较熟悉。第二种是自己写代码创建数据库。
数据库文件列表中包含两个文件,一行是数据文件,一行是日志文件。创建数据库需要设置逻辑名称(也就是数据库名)文件类型:.mdf/log用于区别当前数据库文件所属文件组是数据文件还是日志文件。初始大小:在SQL中数据文件默认值为3MB,日志文件默认值为1MB,自动增长:用于设置文件的容量不够时以何种方式自动增长,数据文件和日志文件的增长方式是不同的。
主键约束是不允许为空值的,在SQL中我们常见的约束还有Check约束,check 约束可以被定义为表约束和列约束
check约束应用:性别不是男就是女,所以在这个地方可以加一个check约束 性别 varchar(2) check(性别 in ('男','女'))
数据库还有很多东西需要探索,比如说触发器、创建视图等等,这些东西在以后用到的时候在细致的探究吧。
varchar数据类型:使用方式和char 数据类型类似,和char不同的是可以存储变长的字符,存储长度会随存储字符数的不同而变化,不会填充空格。我们用的时候大多用这种数据类型,节省数据存储空间。
与char数据类型相似,不同的是nchar 数据类型的取值范围比char类型大,可以存储不同语言的数据(可以将全世界的语言文字包括在内中文、英文等)不会出现编码冲突
nvarchar
与vchar数据类型相似,同样范围比较大,每个国家都有不同语言,nvarchar就好像国际统一语言一样,把所有国家的字符都编进去了。
包含日期和时间,存储范围从公元1753年1月1日零时到公元9999年12月31日23:59:59
smalldatetime 范围比较小从1990年1月1日到2079年6月6日
date 只包含日期
time 只包含时间不存储日期部分比如12:00
货币类型的是 money和smallmoney
在创建表的时候,我们就要用到之前学些数据库的一些知识了,创建数据库需要遵循三个范式,在创建表的过程中遇到一些问题, 在1:N一对多的关系中我们可以建两张表,比如说学生---注册----卡号,学生信息一张表,注册一张表。我们之前给的数据库只有一张表。具体创建表可以画E-R图来确定建表的个数。
数据库的创建 有两种方法,一种是很简单的 数据库-新建数据库然后给数据库命名等这一种方法应该大家都比较熟悉。第二种是自己写代码创建数据库。
创建数据库
<span style="font-size:18px;"><span style="font-size:18px;">Create DataBase 机房收费系统 On ( Name=机房收费系统_DATA, FileName="F:\机房收费数据库\机房收费系统_DATA.mdf", size=5MB, MaxSize=20MB, FileGrowth=5% ) Log on ( Name=机房收费系统_Log, FileName="F:\机房收费数据库\机房收费系统_Log.ldf", size=2MB, MaxSize=10MB, FileGrowth=1MB )</span></span>
数据库文件列表中包含两个文件,一行是数据文件,一行是日志文件。创建数据库需要设置逻辑名称(也就是数据库名)文件类型:.mdf/log用于区别当前数据库文件所属文件组是数据文件还是日志文件。初始大小:在SQL中数据文件默认值为3MB,日志文件默认值为1MB,自动增长:用于设置文件的容量不够时以何种方式自动增长,数据文件和日志文件的增长方式是不同的。
创建表:
<span style="font-size:18px;"><span style="font-size:18px;">use MotoCharge_sys GO Create Table 学生信息 ( StudentNo varchar(14) Primary key ,//隐式约束 StudentName varchar(8) Null, StudentSex varchar(2) Null, StudentGrade int Null, //constraint StudentNo Primary key (StudentNo)//显示约束</span></span>
一些简单“约束”
如果约束用于学号和姓名上,则写Primary Key(学号,姓名)就可以了。主键约束是不允许为空值的,在SQL中我们常见的约束还有Check约束,check 约束可以被定义为表约束和列约束
check约束应用:性别不是男就是女,所以在这个地方可以加一个check约束 性别 varchar(2) check(性别 in ('男','女'))
数据库还有很多东西需要探索,比如说触发器、创建视图等等,这些东西在以后用到的时候在细致的探究吧。
数据类型
我们在创建数据库的时候也发现了,用数据类型的时候我们用到了nchar ,nvarchar 等,数据库都有哪些数据类型呢?字符串数据类型
char类型:char 数据类新年歌使用固定长度来存储字符,如果实际数据字符长度短于给定的最大长度,则多余的字节会被以空格填充。varchar数据类型:使用方式和char 数据类型类似,和char不同的是可以存储变长的字符,存储长度会随存储字符数的不同而变化,不会填充空格。我们用的时候大多用这种数据类型,节省数据存储空间。
Unicode字符数据类型
nchar与char数据类型相似,不同的是nchar 数据类型的取值范围比char类型大,可以存储不同语言的数据(可以将全世界的语言文字包括在内中文、英文等)不会出现编码冲突
nvarchar
与vchar数据类型相似,同样范围比较大,每个国家都有不同语言,nvarchar就好像国际统一语言一样,把所有国家的字符都编进去了。
时间和日期数据类型
datetime包含日期和时间,存储范围从公元1753年1月1日零时到公元9999年12月31日23:59:59
smalldatetime 范围比较小从1990年1月1日到2079年6月6日
date 只包含日期
time 只包含时间不存储日期部分比如12:00
货币类型的是 money和smallmoney
在创建表的时候,我们就要用到之前学些数据库的一些知识了,创建数据库需要遵循三个范式,在创建表的过程中遇到一些问题, 在1:N一对多的关系中我们可以建两张表,比如说学生---注册----卡号,学生信息一张表,注册一张表。我们之前给的数据库只有一张表。具体创建表可以画E-R图来确定建表的个数。
相关文章推荐
- 从关系型数据库到非关系型数据库
- mysql批量插入
- MongodbVUE使用手册和Mongodb的坑
- SQL远程过程调用失败
- mysql图形化界面MySQL_Workbench
- win7下mysql免安装版使用
- 数据库基础命令
- 数据库的创建
- SQL Server 过期
- Java EE V7.0学习笔记-Oracle Enterprise Pack for Eclipse (OEPE) 12.2.1下载就可以使用
- mysql配置
- express + redis 构建基于node的开发环境
- SQL Server中NULL的正确使用与空间占用
- Linux下安装Oracle12cR1
- SQL 左连接(left join) 排序 分页 中遇到的未按理想状态排序分页的解决方案
- 通讯录-数据库SQLite的存储 数据库语言的模糊查询
- hive 配置mysql元数据库
- tornado下momoko的简单使用
- 关于远程MySQL Access denied for user admin@'dongwt' (using password: YES)
- (事物学习笔记一) 对于数据库事物的理解