欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

创建数据表

程序员文章站 2024-03-21 10:52:28
...

1 建表的语法

crreate table 表名
{
	字段1 数据类型 列的特征,
	字段2 数据类型 列的特征,
	...
}
go

列的特征包含的内容如下:

  • 是否为空(NULL):在输入数据时,数据库的列允许为空时,可以不输入数据,否则必须输入。列是否为空要根据数据库设计的具体要求决定,对于关键列必须禁止为空。
  • 是否是标识列(自动编号)。
  • 是否有默认值:如果数据表的某列在用户不输入数据的时候,希望提供一个默认的内容,比如用户如果不输入学员地址,则默认‘地址不详’。
  • 是否为主键:主键是实体的唯一标识,保证实体不被重复。一个数据表必须有主键才有意义,否则更新和删除实体可能会出异常。

建表举例:


--创建学员信息数据表
use StudentManageDB
go
 if exists(select * from sysobjects where name='Students')
drop table Students
go
create table Students
(
	StudentId int identity(10000,1),--学号
	StudentName varchar(20) not null,--姓名
	Gender char(2) not null,--性别
	Birthday datetime not null,--出生日期
	StudentIdNo numeric(18,0) not null,--身份证号
	Age int not null,--年龄
	PhoneNumber varchar(50),
	StudentAddress varchar(500),
	ClassId int  not null   --班级外键
)
go
--创建班级表
if exists(select * from sysobjects where name='StudentClass')
drop table StudentClass
go
create table StudentClass
(
	ClassId int primary key,--班级编号
	ClassName varchar(20) not null
)
go
--创建成绩表
if exists(select * from sysobjects where name='ScoreList')
drop table ScoreList
go
create table ScoreList
(
	Id int identity(1,1) primary key,
	StudentId int not null,--学号外键
	CSharp int null,
	SQLServer int null,
	UpdateTime datetime not null--更新时间
)
go
--创建管理员表
if exists(select * from sysobjects where name='Admins')
drop table Admins
go
create table Admins
(
	LoignId int identity(1000,1) primary key,
	LoginPwd varchar(20) not null,--登录密码
	AdminName varchar(20) not null
)
go


2 标识列的特殊说明

标识列使用的意义: 有时候,一个数据表存储的实体,很难找到不重复的列作为主键列,比如学员成绩表中存储着学生的多次考试成绩,则学号也很容易重复,其他列更无法做到不重复。SQLServer提供了一个“标识列”,也叫“自动增长列”或“自动编号”,它本身没有什么具体意义,但我们也可以让它表示特殊意义。比如学生成绩表中的自动表示列Id,不表示实体属性;但学生信息表中的StudentId也是标识列,但她表示学生实体属性(学号)。

标识列的使用方法:

  • 该列必须是整数类型,或没有小数位数的精确类型。
  • 标识种子:标识列的起始大小。
  • 表示增量:标识列每次递增(自动增加)的值。

注意问题:

  • 有标识列的数据被删除某一行时,数据库会将改行空缺,而不会填补。
  • 标识列由系统自动维护,用户既不能自己输入数据,也不能修改数值。
  • 标识列可以同时定义为主键,也可以不定义为主键,根据需要决定。