现在我们已经知道了如何利用图形界面创建数据库了,但数据库仅仅是一个存放数据的仓库,我们还没有把具体的数据存放进去,是不是?我们把表格中的数据放进去了吗?没有。
那么我们下面就要把表格中的数据放进去,就是建表。建表之前我们需要掌握几个术语。
数据表是数据库是最重要的对象,数据库中的所有数据都是存放在数据表中的.数据表和平时我们所说的表格类似.我们先来看一个我们平时的表格.
准备工作:
确定表名:
确定表的属性:
字段名
|
记录
|
编号
|
姓名
|
性别
|
年龄
|
籍贯
|
电话号码
|
是否党员
|
0001
|
贾宁
|
男
|
27
|
黑龙江
|
131412315678
|
是
|
0002
|
霍玉娟
|
女
|
25
|
天津
|
131456781234
|
否
|
0003
|
李逍遥
|
男
|
40
|
杭州
|
13845678914
|
否
|
0004
|
赵灵儿
|
女
|
38
|
北京
|
13945678912
|
是
|
每一列称为一个字段,字段的标题称为字段名
每一行称为一条记录!
如第一条记录的编号字段值为“0001”,姓名字段值为“贾宁”…
是否为空:有些可以为空,但有些是不可以为空的,空了的话那么这张表就没有意义了。如编号,姓名,等等。
我们再研究一个问题就是这么字段中哪一个能唯一的确定一个记录。也就是说字段值不会有重复的。这个字段就称为“主键”。“编号”
主键:该字段能唯一的确定一条记录。
掌握了这些我们就可以建表了。建表的顺序是先建库的结构也就是字段再输入记录!
常用数据类型
数据类型:指的是你为每个字段指定某种类型,那么在以后进行录入的时候就只能是该类型或者是相兼容的类型,比如年龄,应该是数字,但如果你写一个字母进去就不行。
数值型
整数类型和小数类型
四种整数数据类型,只是表示数的范围不同
1、bigint 大整型,从-2的63次方到2的63次方减1的所有整型数据(所有数字)。存储大小为8个字节。
2、INT (INTEGER)INT (或INTEGER)数据类型存储从-2的31次方 (-2 ,147 ,483 ,648) 到2的31次方-1 (2 ,147 ,483,647) 之间的所有正负整数。每个INT 类型的数据按4 个字节存储,其中1 位表示整数值的正负号,其它31 位表示整数值的长度和大小。
3、SMALLINT SMALLINT 数据类型存储从-2的15次方( -32, 768) 到2的15次方-1( 32 ,767 )之间的所有正负整数。每个SMALLINT 类型的数据占用2 个字节的存储空间,其中1 位表示整数值的正负号,其它15 位表示整数值的长度和大小。
4、TINYINT TINYINT数据类型存储从0 到255 之间的所有正整数。每个TINYINT类型的数据占用1 个字节的存储空间。
如果你不能确定具体使用哪种类型你就使用INT型,但你在付出的代价就是多浪费了一些磁盘空间。
小数类型:
Numeric 从 -10的38+1到10的38次方-1之间的小数 存储的长度和精度有关
1-9 位 5字节 10 -19 9字节 20-18位 13字节 29 – 38位 17字节
总长度,小数位 对小数位会四舍五入
Float -1.79E+308 到 1.79e+308位
Float 有效值: 参见联机丛书
字符类 用到最多的。 四种
1 CHAR(n) 固定长度字符型 若输入数据的字符个数小于n,则系统自动在其后添加空格来填满设定好的空间。若输入的数据过长,将会截掉其超出部分。固定给你,你不用也给你。最大长度8000个字符
2、VARCHAR可变长度字符型 若输入的数据过长,将会截掉其超出部分。若输入数据的字符数小于n ,则系统不会在其后添加空格。他也能达到8000个字符的长度
declare @A CHAR(5),@B VARCHAR(5)
SET @A='AA'
SET @B='BB'
PRINT @B+@A
declare @A CHAR(5),@B VARCHAR(5)
SET @A='AAAAAA'
SET @B='BBBBBB'
PRINT @B+@A
3.Nchar(n) 包含n个字符的固定长度的unicode字符数据,存储大小为两倍的两倍
4. nvarchar(n) 包含n个字符的可变长度unicode字符数据,字节的存储大小是所输入字符个数的两倍。
逻辑数据类型
BIT: BIT数据类型占用1 个字节的存储空间,其值为0 或1 。如果输入0 或1 以外的值,将被视为1。 BIT 类型不能定义为NULL 值 或者是 true 为真,即为1 false为假,即为0
日期型
DATETIME 一个 DATETIME型的字段可以存储的日期范围是从1753年1月1日第一毫秒到9999年12月31日最后一毫秒。
SMALLDATETIME 一个SMALLDATETIME型的字段能够存储从1900年1月1日到2079年6月6日的日期,它只能精确到分钟。
DATETIME占用8个字节,而SMALLDATETIME只占4个字节。
注:插入记录时,应使用 ’ ’
货币型:货币数据类型用于存储货币值。在使用货币数据类型时,应在数据前加上货币符号,系统才能辨识其为哪国的货币,如果不加货币符号,则默认为“¥”。
MONEY 介于 -2^63与2^63-1之间,
SMALLMONEY 介于 -2^31到2^31-1
图形界面建表: 略 并插入记录测试
命名方式:
建表;
Create table 表名
(字段名 字段类型(长度)是否为空not null 是否为主键primary key,
字段名 字段类型 (长度) 是否为空
………)
具体如
create table student
(编号 char(4) not null primary key,
姓名 varchar(10) not null,
性别 char(2) ,
年龄 tinyint,
籍贯 varchar(10),
手机号码 varchar(15),
部门 varchar(20)
是否党员 bit)
系统默认长度的数据类型则不能再指定长度。注意;正确选择当前数据库
那如果发现表的结构不合理怎么办?
修改表
[1.1]、添加列
Alter table 表名称 add 列定义 | 计算列 | 表约束[,...]
[1.2]、编辑列
alter table 表名称 alter column 列定义
[1.3]、删除列
alter table 表名称 drop column 列名称
如果有多个文件组的话可以将表放在指定的文件组中
create table yuangong (编号 char(4),
姓名 varchar(8)) on filegroup02
创建一个计算列的表
create table 员工表
(
姓名 nvarchar(20) not null,
性别 bit,
年龄 tinyint,
籍贯 nvarchar(20),
出生日期 datetime,
联系电话 varchar(20),
基本工资 money,
奖金 money,
交通补助 money,
住房补助 money,
应缴税款 money,
最后所得 as 基本工资+奖金+交通补助+住房补助-应缴税款
)
创建一个编号自增的表
create table yuangong (编号 int identity primary key,
姓名 varchar(8)) on filegroup02 --------主键约束
SET identity_insert 表名 ON(系统默认:off)同时只能对一个表进行操作
比如:
SET identity_insert STUDENT ON
Insert into student(stu_id) values(100)
create table 职务表
(
职务编号 int Not Null Identity,
职务名称 nvarchar(30) not null
)
创建数据库的时,如果数据库已经存在,为了美观不能让系统报错,让系统输出一个提示即可!加入一个 if not exists …………………………..
本文转自 dufei 51CTO博客,原文链接:http://blog.51cto.com/dufei/80748,如需转载请自行联系原作者