相关知识
什么是表
如果说数据库是一个仓库,那么表就是存放物品的架子。
数据表是数据库中最基本的操作对象,通常把数据存放在数据库中,其实就是将数据存放在数据库中的一张表中,且一个数据库可以包含一个或多个表。
数据表中的数据,按照行和列的规则,来进行数据存储。每一行,为一条数据记录,一条数据记录是由多个字段的描述信息组成的,每一列就是一个字段。
例如:有一个记录了员工信息的 employee 表,每一列就是用来描述员工特定信息的字段,比如工号、姓名等等;每一行则用于描述某一员工的所有字段信息:工号、姓名、性别和学历等,这些信息的集合称之为一条记录,如下图所示。
操作数据表
SQL Server 提供了非常丰富的数据表操作方法,用户可以通过企业管理器和 T-SQL 语言进行操作。使用 T-SQL 操作数据表,具有灵活、快捷等特点,也是数据库管理人员使用最多的一种方式。
对于数据表的操作主要分为:
-
CREATE TABLE 创建数据表
-
ALTER TABLE 修改数据表结构
-
DROP TABLE 删除数据表
创建数据表
数据表的创建主要是对基本结构的构建。例如,列属性的设定,数据完整性的约束。创建数据表使用 CREATE TABLE 语句,基本语法格式如下:
CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);
column_name :列名;
data_type :列的数据类型(例如 varchar 、 integer 、 decimal 、 date 等等);
size :列的最大长度。
例如,使用下面的 CREATE TABLE 语句,创建一个名为 Persons 的表,包含五列 PersonID 、 LastName 、 FirstName 、 Address 和 City :
CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
利用 select name, length, COLLATION from syscolumns where id=object_Id('Persons')
查看创建的 Persons 表结构:
插入数据
创建完表后,可用 INSERT INTO 语句向表中插入数据。其语法如下:
INSERT INTO 表名称 VALUES (值1, 值2,....)
我们也可以指定所要插入数据的列,如下:
INSERT INTO 表名称 (列1, 列2,...) VALUES (值1, 值2,....)
例如,向 Persons 表中,插入 Tom 的个人信息,可以使用下列的语句完成。
INSERT INTO Persons VALUES('1001','Tom','Green','West Road','New York')
使用select * from Persons
语句查看插入结果。
修改表结构
在表已经创建好的前提下,可以使用 ALTER TABLE 语句,对表中的列进行增加、删除或修改数据类型等操作。
- 新增列
ALTER TABLE table_name
ADD column_name datatype
使用如下语句,可以为数据表 Persons 添加一列 AddedCol :
ALTER TABLE Persons
ADD AddedCol varchar(50)
新增列后的表结构如下图:
- 删除列
ALTER TABLE table_name
DROP COLUMN column_name
例如,使用下列语句,可以删除数据表 Persons 中的列 City :
ALTER TABLE Persons
DROP COLUMN City
删除 City 列后,表 Persons 的结构如下图:
- 修改列的数据类型
ALTER TABLE table_name
ALTER COLUMN column_name datatype
下列语句把数据表 Persons 中 AddedCol 列的数据类型改为 int 类型:
ALTER TABLE persons
ALTER COLUMN addedCol int
修改数据类型后的表结构如下:
删除数据表
删除数据表是对数据库中已建立的表进行删除,在删除表的同时,会对表中定义的数据、索引和视图进行清除。在做任何删除操作前,应做好备份工作。我们使用 DROP TABLE 语句,对数据库中的数据表进行删除,语法格式如下:
DROP TABLE table_name
编程要求
本次编程任务是:
在右侧编辑区 create table 下的 Begin-End 区域补全代码,创建 Student 、 Course 和 Score 三个表;
在右侧编辑区 insert 下的 Begin-End 区域补全代码,向 Score 表中插入下面给出的数据;
在右侧编辑区 alt student table 下的 Begin-End 区域补全代码,修改 Student 表结构,新增一列 addr 用于描述地址信息,并设置数据类型以及长度为 varchar(256),;
在右侧编辑区 del score table 下的 Begin-End 区域补全代码,删除 Score 表。
Student 表结构如下:
字段名 | 数据类型 | 说明 |
---|---|---|
sno | varchar(50) | 学号 |
name | varchar(50) | 姓名 |
sex | varchar(10) | 性别 |
birthday | Date | 出生日期 |
discipline | varchar(50) | 专业 |
school | varchar(100) | 学院 |
Course 表结构如下:
字段名 | 数据类型 | 说明 |
---|---|---|
cno | varchar(50) | 课程号 |
cname | varchar(50) | 课程名称 |
description | varchar(256) | 课程说明 |
credit | float | 学分 |
cinstitution | varchar(128) | 开课单位 |
Score 表结构如下:
字段名 | 数据类型 | 说明 |
---|---|---|
sno | varchar(50) | 学号 |
cno | varchar(50) | 课程号 |
grade | float | 成绩 |
Score 表待插入的数据:
学号 | 课程号 | 成绩 |
---|---|---|
09011101 | 101 | 89 |
09011101 | 102 | 78 |
第一关实验代码:
USE studentdb
go
SET NOCOUNT ON
go
--********** create table **********--
--********** Begin **********--
create table student(
sno varchar(50),
name varchar(50),
sex varchar(10),
birthday Date,
discipline varchar(50),
school varchar(100)
);
create table course(
cno varchar(50),
cname varchar(50),
description varchar(256),
credit float,
cinstitution varchar(128)
);
create table score(
sno varchar(50),
cno varchar(50),
grade float
);
--********** End **********--
go
select name, length, COLLATION from syscolumns where id=object_Id('student')
go
select name, length, COLLATION from syscolumns where id=object_Id('course')
go
select name, length, COLLATION from syscolumns where id=object_Id('score')
go
--********** insert **********--
--********** Begin **********--
insert into score values('09011101','101',89);
insert into score values('09011101','102',78);
--********** End **********--
select * from score
go
--********** alt student table **********--
--********** Begin **********--
ALTER TABLE Student
ADD addr VARCHAR(256);
--********** End **********--
go
select name, length, COLLATION from syscolumns where id=object_Id('student')
go
--********** del score table **********--
--********** Begin **********--
drop table score;
--********** End **********--
go
GO
IF NOT EXISTS(Select 1 From Sysobjects Where Name='score') --查询表是否存在
BEGIN
PRINT 'NOT EXISTS TABLE score'
END
GO