
SQL Server 2005系列教学(3) 创建数据表
现在我们已经知道了如何利用图形界面创建数据库了,但数据库仅仅是一个存放数据的仓库,我们还没有把具体的数据存放进去,是不是?我们把表格中的数据放进去了吗?没有。
那么我们下面就要把表格中的数据放进去,就是建表。建表之前我们需要掌握几个术语。 数据表是数据库是最重要的对象,数据库中的所有数据都是存放在数据表中的.数据表和平时我们所说的表格类似.我们先来看一个我们平时的表格.
准备工作: 确定表名: 确定表的属性: 编号 | 姓名 | 性别 | 年龄 | 籍贯 | 电话号码 | 是否党员 |
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博客,原文链接:,如需转载请自行联系原作者