设为首页 加入收藏

TOP

关系数据库标准语言SQL数据类型及数据操作介绍(一)
2017-12-23 06:07:08 】 浏览:257
Tags:关系 数据库 标准 语言 SQL 数据 类型 操作 介绍

数据库一般分为关系型数据和NoSql数据库, 关系型数据库一般使SQL操作,SQL对大小写不敏感。

SQL的数据类型

SQL支持许多内置的数据类型,并且允许用户定义新的域(数据)类型。

char(n):定长字符串,长度n由用户指定。省略(n)时,长度为1。全称为character。

varchar(n):变长字符串,最大长度n由用户指定。全称是character varying。定长和变长的区别主要表现在前者需要固定长度的空间,二后者占用的空间在最大长度范围内是可以改变的。

bit(n):定长二进位串,长度n由用户指定。省略n时,长度为1。

bit varying(n):变长二进位串,最大长度n由用户指定。

int:整数,其值域依赖于具体的实现,全称是integer。

smallint:小整数,其值域依赖于具体的实现,但是小于int的值域。

numeric(p, d):p位有效数字的定点数,其中小数点右边占d位。

dec(p, d):p位有效数字的定点数,其中小数点右边占d位。全称是decimal。

float(n):精度至少为n位数字的浮点数,其值域依赖于实现。

real:实数,其值域依赖于实现。

double precision:双精度实数,精度依赖于实现,但精度比real高。

date:日期,包括年、月、日,格式为YYYY-MM-DD。

time:时间,包括时、分、秒,格式为HH:MM:SS。time(n)可以表示比秒更小的单位,秒后取n位

timestamp:时间戳,是data和time的结合体,包括年、月、日、时、分、秒。timestamp(n)可以表示比秒更小的单位,秒后取n位。

interval:时间间隔。SQL允许对date、time和interval类型的值进行运算。例如,如果x和y都是date类型,则x-y为interval类型,其值为x和y之间的天数。在date或time类型的值上加减一个interval类型的值得到新的date或time类型的值。

数据库操作:

查看当前数据库服务器有哪些数据库: show databases; 使用当前数据库服务器下的某一个数据库:use 数据库名称; 创建数据库:create database 数据库名称; 删除数据库:drop database 数据库名称

数据表操作

创建数据表:
create table <表名> (<列定义>...<列定义>   [<表约束定义>...<表约束定义>]);

<表名>:标识符,是对定义的基本表命名

<列定义>:定义每个属性(列)的名称、类型、缺省值和列上的约束条件,格式是:
<列名> <类型> [default<缺省值>] <列约束定义>,...,<列约束定义>

列约束定义格式:
[constraint <约束名>] <列约束>
其中可选短语“constraint <约束名>”为列约束的命名。常用的列约束包括:
1)not null:不允许该列取空值,不加此限制时,该列可以取空值。
2)primary key:知名该列时主码(主键),其值非空、唯一。
3)unique:该列上的值必须唯一。这相当于说明该列为候选码。
4)check(<条件>):指明该列的值必须满足的条件,其中<条件>是一个涉及该列的布尔表达式。

表约束定义格式:
[constraint <约束名>] <表约束>
其中可选短语“constraint <约束名>”为表约束的命名。常用的表约束包括:
1)primary key(A1, A2,...Ak):说明属性列A1...Ak构成该表的主码(主键)。当主码只包含一个属性时,也可以用列定义约束定义主码。
2)unique(A1, A2,...Ak):说明这些属性列上的值必须唯一,这相当于说明A1,...,Ak构成该表的候选码。当候选码只包含一个属性时,也可以用列约束定义候选码。
3)check(A1,...,Ak):说明该表上的一个完整性约束条件。通常,<条件>是一个涉及到该表一个或多个列的布尔表达式。

外码比较复杂,它具有如下形式:
foreign key(A1,...,Ak) references <外表名> (<外表主码>)
[<参照触发动作>]
它说明属性时A1,...,Ak是表的外码,<外表名>给出被参照关系的表名,<外表主码>给出被参照关系的主码,而<参照触发动作>说明违反参照完整性时需要采取的措施。

eg:创建教师表Teachers
creat table Teachers
(
Tno      char(7) not null primary key,
Tname    char(10) not null,
Sex      char(2) check(Sex='男' or Sex='女'),
Birthday date,
Title    char(6),
Dno      char(4),
foreign key (Dno) references Departments (Dno)
);

这里,我们定义Tno为Teachers的主码,Tname不能为空,而用check短语限定Sex的值只能是“男”或“女”。最后一行定义Dno为关系Teachers的外码,它参照Departments的主码Dno。


eg:创建选课表SC
create table SC
(
Sno     char(9),
Cno     char(5),
Grade   smallint check(Grade>=0 and Grade<=100),
primary key(Sno, Cno),
foreign key(Sno) references Students (Sno),
foreign key(Cno) references Courses (Cno)
);
修改数据表
(1)向数据表中添加新列
alter table <表名> add [column] <列定义>
例:向Courses中增加一个新列Pno,表示课程的先行课程号
alter table Courses add Pno char(5);

(2)对于已经存在的列,只允许修改或删除列的缺省值,语句形式为
alter table <表名> alter [column] <列名> {set default <缺省值> | drop default}
例:在Students的Sex列设置缺省值“女”可以减少大约一半学生性别的输入。可以使用如下语句:
alter table Students alter Sex set default '女';
而删除Sex上的缺省值可以用:
alter table Students alter Sex drop default;

(3)删除已经存在的列
alter table <表名> drop [column] <列名>
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇SQL分组统计查询教程 下一篇Mysql的关键字集合

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目