Sql笔记二:数据库表的设计
创建了数据库,我们需要创建表来对数据进行操作。一个数据库中可以创建200万个表,一个表可以定义为1024列。在同一数据库不同表中,可以有相同的字段,但在同一个表中,不允许有相同的字段,每个字段都要求数据类型相同。
表的创建:
create table tablename
(
列名1 数据类型,
列名2 数据类型
[约束]
)
我们先简单说一下数据类型:
整型:int、gibint、smallint、tinyint、bit
浮点型:float、real、decimal、numeric
字符型:char、varchar、text、nchar、nvarchar、ntext
日期和时间数据类型:datetimen、 smalldatetime
货币类型:money、smallmoney
二进制数据类型:binary、varbinary、p_w_picpath
特殊数据类型:timestamp、uniqueidentifier、sql_variant
然后我们讨论约束:
唯一约束:unique
一个表中可以有多个唯一约束,允许为空
语法:列名 数据类型 unique
作用:是这一列的数据具有唯一性,特别是用在手机号码,身份证等唯一的数字中。
检查性约束:check
语法:列名 数据类型 check(sex=’male’ or sex=’famale’)
作用:在给定的括号中选择值,防止出错。
默认约束:default
格式:列名 数据类型 default(‘默认值’)
作用:对于某列大部分值相同时设置,防治一个一个输入,节约时间。
主键约束:primary key
列名 数据类型 主键约束
外键约束:foreign key
foreign key(本表列名) references 目标表表名
标识列:identity
特点:有且只有一个,必能编辑,不能更新,数据类型为整型,不能为空,不能重复。
格式 列名 数据类型 identity
实例:id int identity
说明:id会从1开始排序,即使删除这行,id也不会从1开始,而是从2继续延伸。
说了这么多,让我们实际操作创建一个表格:
create table score
(
id int,
name char(10),
sex char(2) default(‘男’,’女’),
age int,,
score1 float,
score2 float,
score3 float
hooby varchar
)
创建完成,那么是什么结构呢:
查看表结构:
格式: exec sp_help table_nam
通过查看之后,发现少添加了一条地址列add,多了一条列hobby:
修改表:
增加列:
格式:alter table table_name add 列名 数据类型
实例:alter table table_name add add char(50)
删除列:
格式:alter table table_name drop column 列名
实例
删除表:
drop table table_name
这样我们就能简单创建一个表格了,不过表格里面没有数据,关于数据的操作请看下节。