SQL server 命令创建、修改、删除数据表

1. 创建数据表 create

创建数据表的完整语法格式为:

CREATE TABLE 表名
(列名 数据类型[缺省值][NOT NULL]
 [,列名 数据类型[缺省值][NOT NULL]]....
 [,UNIQUE(列名[,列名]...)]
 [,PRIMARY KEY(列名[,列名]...)]
 [,FOREIGN KEY(列名[,列名]...) REFERENCES(列名[,列名]...)]
 [,CKECK(条件)]
)

参数说明:

  • DEFAULT(缺省值):指定列的缺省值;
  • NOT NULL:列值不能为空值;
  • UNNIQUE:取值唯一的列名;
  • PRIMARY KEY:主关键字(主码)列名;
  • FOREIGN KEY:外部码列名;
  • REFERENCES:引用的外部码的表名和列名
  • CKECK:指定表级约束条件。

注意事项:

例1:在数据库student中创建student表,表中包括:学号、姓名、出生年月、性别、地址、电话号码、邮编、所在系代号、等

USE students --选择数据库
CREATE TABLE  student --创建表
(学号 char(10) NOT NULL PRIMARY KEY,
 姓名 char(8) NOT NULL,
 出生年月 datetime NULL,
 性别 char(2) NOT NULL DEFAULT('女'),
 地址 char(20),
 
 )

例2:如下表

列名 数据类型 允许空 默认值 主键
学号 Varchar(20) 主键
姓名 Varchar(20)
性别 Varchar(2) '男'
出生年月 Smalldatetime
身份证号 Varchar(20)
USE students
CREATE TABLE  student
(学号 Varchar(10) NOT NULL PRIMARY KEY,
 姓名 Varchar(8) NOT NULL,
 性别 Varchar(2) NOT NULL DEFAULT('男'),
 出生年月 Smalldatetime,
 身份证号 Varchar(20) UNIQUE --身份证号不可以重复
 
 )

例3:建立一个“选课”表,它是由学号、课程号、成绩、3个属性组成,其“学号”和“课程号”是联合主键,表结构如下表所示。

列名 数据类型 允许空 约束 主键
学号 Varchar(20) PRIMARY KEY
课程号 Varchar(20) PRIMARY KEY
成绩 int 0≤成绩≤100
CREATE TABLE class
(学号 Varchar(20),
 课程号 Varchar(20),
 成绩 INT CHECK(成绩>=0AND成绩<=100),
 PRIMARY KEY(学号,课程号)
)

2. 修改数据表 alter

在student中增加新字段“院系”,“班级名称”;

alter table student

add 院系 char(10),班级名称char(10)

修改表student中字段“院系”长度为char(5);

alter table student

alter column 院系 char(20)

3. 删除数据表 drop

删除class数据表

drop table class

小知识

  1. smalldatetime和datetime的区别:

    smalldatetime的有效时间范围1900/1/1~2079/6/6,smalldatetime只精准到分

    datetime的有效时间范围1753/1/1~9999/12/31,datetime则可精准到3.33毫秒

  2. char(10)和VARCHAR(10)的区别

    1. 首先明确的是,char的长度是不可变的,而varchar的长度是可变的,
    2. 定义一个char[10]和varchar[10],如果存进去的是‘abcd’,那么char所占的长度依然为10,除了字符‘abcd’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的,
    3. char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的。
    4. char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据。

猜你喜欢

转载自www.cnblogs.com/CGGG/p/12576539.html