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
小知识:
-
smalldatetime和datetime的区别:
smalldatetime的有效时间范围1900/1/1~2079/6/6,smalldatetime只精准到分
datetime的有效时间范围1753/1/1~9999/12/31,datetime则可精准到3.33毫秒
-
char(10)和VARCHAR(10)的区别
- 首先明确的是,char的长度是不可变的,而varchar的长度是可变的,
- 定义一个char[10]和varchar[10],如果存进去的是‘abcd’,那么char所占的长度依然为10,除了字符‘abcd’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的,
- char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的。
- char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据。