一、表与表数据操作 表(关系):
用于存放数据库中的数据,表中数据的操作包括:插入、修改、删除、查询
1、数据类型
1)整数型
bigint: 大整数,长度8个字节。
int: 整数,长度4个字节。
smallint: 短整数,长度为4个字节。
tinyint: 微短整数,1个字节。
2)精确数值型:
数据由整数和小数构成从功能上说,两者完全等价。
decimal,numeric
3)浮点型:近似值型,(整数和小数构成),但可能会损失一些精度。
float:存储长度8个字节
real:4个字节存储
4)货币型
money :8个字节
smallmoney: 4个字节
5)位型:0或1
6)字符型:用于存放字符串。(ASCII码表)
char(n): 定长字符类型,n 表示固定长度,用户可以自定。
varchar(n): 变长字符类型,n表示字符串可达到的最大长度。
7)unicode字符型:存储非英语语种的字符。
nchar(n): 固定长度uniciode字符型。n 表示固定长度。
nvarchar(n):变长unicode字符类型,n表示字符串可达到的最大长度。
8)文本型:当存储大量的字符数据时。
text:存储大量的ASCII码字符数据。
ntext:存储大量的unicode码字符数据。
9)日期型:存储日期和时间。
datetime,smalldatetime
10)图像数据类型 image, 微软推荐varbinary(MAX)代替image。
2、表结构设计
表结构设计包括:表名、表所包含的列名、列的数据类型、长度、主键、是否可为空、约束条件、默认值设置等。
1)
为存储学生信息,现数据库中需要一张学生表:(学号 姓名 性别 出生时间 专业 总学分 备注)
3、创建表的语法
create table 表名
(
<列的定义>
列名 数据类型 约束或默认值,
列名 数据类型 约束或默认值,
….
<计算列的定义>
表的约束
)
create table kc
(
课程号 char(20) not null primary key,
课程名 nchar(20) not null,
学时 tinyint not null,
学分 tinyint not null,
授课教师名 nchar(20)
)
2、创建带计算列的表
create table pjcj
(
课程号 char(10) not null primary key,
总成绩 real not null,
人数 int not null,
平均成绩 as 总成绩/ 人数 persisted
)
计算列是指:其值可以由计算机列所在表中的其他属性列通过计算二得到。表示方法: 计算列名 as ….
两个问题
1、上例中的计算列 平均成绩好像
没有说明数据类型呢? 计算列不用声明数据类型,其 数据类型由计算后的数据类型 决定!
2、persisted的申明有什么作用? 计算列只是个虚拟列,系统不会将其及其数据进行存储,若希望系统对计算列数据进行长期存储,就用persisted申明!
4、创建表的实例
1).创建表
use xs
create table xsb
( 学号 char(6) not null primary key,
姓名 nchar(8) not null,
性别 nchar not null,
出生时间 datetime not null,
专业 nchar(20) not null,
总学分 tinyint not null,
备注 nvarchar(1000) not null
)
2)、修改表结构的语法
2、修改表结构的语法
alter table 表名
alter column 列名 //修改已有列的属性
[ 新的数据类型| not null/null | add/drop persisted]
add 列名 //添加列
[列的定义 或 计算列的定义
一次可添加多条列,多条列之间用逗号隔开]
drop coulmn 列名 //删除已有的列
[一次可删除多个列,多条列之间用逗号隔开]
3)实例
1、在XS表中增加一新列“奖学金等级”。
alter table xs
add 奖学金等级 tinyint not null
2、在XS表中增加多新列“奖学金等级1”,“奖学金等级2”。
alter table xs
add 奖学金等级1 tinyint not null,
add 奖学金等级2 tinyint not null
//各列之间用逗号隔开
3、在XS表中删除“奖学金等级”一列。
alter table xs
drop column 奖学金等级 tinyint null
4、修改XS表中已有列的属性:将“姓名”的长度由原来的8改为10;将”出生时间“列的数据类型由原来的datetime改为smalldatetime。
alter table xs
alter column 姓名 char(10)
alter table xs
alter column 出生时间 smalldatetime
//一个 alter table 只能包含一个子命令。 alter column一次只能修改一个列的属性。
5、删除表XS
drop table xs