设为首页 加入收藏

TOP

关系数据库标准语言SQL数据类型及数据操作介绍(二)
2017-12-23 06:07:08 】 浏览:258
Tags:关系 数据库 标准 语言 SQL 数据 类型 操作 介绍
{cascade | restrict} 其中cascade表示级联,删除将成功,并且依赖于该列的数据库对象(如涉及到该列的视图)也一并删除。restrict表示受限,仅当没有依赖于该列的数据库对象时删除才成功。 例:删除Courses中的Pno列可以用: alter table Courses drop Pno; (4)添加表约束 alter table <表名> add <表约束定义> 其中表约束定义与创建基本表相同。 (5)删除表约束 alter table <表名> drop constraint <约束名> {cascade | restrict} 其中被删除的约束名一定是命名的约束,给出约束名。cascade导致删除约束并且同时删除依赖于该约束的数据库对象。而restrict仅当不存在依赖于该约束的数据库对象才可以删除该约束。 删除基本表
当不需要某个基本表时,可以将其删除。语句格式为:
drop table <表名> {cascade | restrict}
其中cascade表示级联删除,依赖于表的数据对象(最常见的是视图)也将一同删除。restrict表示受限删除,如果基于该表定义有视图或者有其他表引用该表(如check,foreign key等约束),或者该表有触发器。存储过程或函数等,则不能删除。
删除基本表将导致存放在表中的数据和表定义都将被彻底删除。

例:
drop table Student restrict;
添加
insert语句有两种使用形式,一种是向基本表中插入单个元组;另一种是将查询的结果(多个元组)插入基本表。

1)插入单个元组
语句格式为:
insert into T[(A1, .... ,Ak)] values (c1,....,ck);
其中T通常是基本表,也可以是视图,Ai是T的属性,ci是常量。
(A1, .... ,Ak)缺省时,values子句必须按基本表属性的定义次序提供新元素每个属性上的值。否则,(A1, .... ,Ak)中属性的次序可以是任意次序,并且可以仅列举基本表的部分属性。此时,value子句中的常量与属性个数是相等的,并且常量对应相对位置上的属性,新元组取缺省值(如果定义了缺省值的话)或空值为null。

eg.

insert 表名 (栏位名称) values (栏位值)

insert stu_info (stu_no, stu_name, gender, birthday)
values('20171217123', '张三', 1, '2017‐12‐14');

insert stu_info (stu_no, stu_name, birthday)
values ('20171217123', '张三', '2017‐12‐14');

2)插入查询结果

语句格式为
insert into T[(A1, .... ,Ak)] <查询表达式>
其中查询表达式通常是一个select语句。该表达式对查询表达式求值,并将结果元组插入到基本表中。

设存放就餐卡登记信息关系Cardinf具有如下模式:
Cardinf(Card-no, Name, Banlance)
其中属性分别是持卡人编号,Name为持卡人姓名,Balance为卡中余额。假设现为教师办理一个就餐卡,直接使用教师号作为持卡人编号,并预存100元。
insert into Cardinf(Card-no, Name, Banlance)
select Tno, Tname, 100.00
from Teachers;

注意:常量100.00出现在select子句中。这使得查询结果的每个元组的第三列均取常量值100.00。
查询
 模糊查询 
 
like表达式允许我们表示模糊查询,一般格式是:
<匹配值> [not] like <模式> [escape'<换码字符>']

其中<匹配值>和<模式>都是字符串表达式,它们的值是可以比较的。通常,<匹配值>是属性,<模式>是给定的字符串常量。<模式>中允许使用通配符。有两种通配符:“_”(下划线)可以与任意单个字符匹配,而"%"可以与零个或多个任意字符匹配。escape'<换码字符>'通常是escape'\'。它定义‘\’为转义字符,将紧随其后的一个字符转义。如果<模式>中的_或%紧跟在\之后,则这个_或%就失去了通配符的意义,而取其字面意义。
当<匹配值>与<模式>匹配时,则like表达式的值为真,否则,值为假。

eg.

select Sno, Sname
from Student
where Sname like '李__';   /*有两个下划线,因为一个汉字占两个字符位置*/

select *
from Courses
where Cname like 'C\_%' escape '\';        /* 定义"\"为转义字符,“_" 被转义 */
NULL 查询
SQL允许元组在某些属性上取空值(NULL)。空值代表未知的值,不能与其他值进行比较。NULL表达式允许我们判断给定的值是否为空值。NULL表达式常见的形式如下:

<值表达式> | <子查询> IS [NOT] NULL
通常<值表达式>是属性。

eg.

select Sno, Cno
from SC
where Grade IS NULL;
删除
使用delete语句删除表中的某些记录,语句格式为:
delete from T [where <删除条件>]

其中T通常为基本表,但也可以是某些视图,<删除条件>与select语句中的查询条件类似。
delete语句的功能是从指定的表T中删除满足<删除条件>的所有元组。where子句缺省时,则删除表T中全部元组(剩下一个空表T)。

删除所有学生的记录:
delete from Students;

删除学号为200624010的学生记录可以用:
delete from Students where Sno='200624010';

尽管delete语句只能从一个表删除元组,但是删除条件可以涉及到多个表
例如删除计算机系所有学生的选课记录(SC是学生选课关系表)
我们可以先得到计算机系所有学生的学号
delete from SC
where Sno In
(
select Sno
from Students
where Speciality='计算机');
修改
使用update语句可以修改表中某些元组指定属性上的值。格式为:
update T
set A1=e1,...,Ak=ek
[where <修改条件>]

其中T通常为基本表,但也可以是某些视图;A1,...Ak是T的属性,而e1,...ek是表达式;<修改条件>与select语句中的查询条件类似
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇SQL分组统计查询教程 下一篇Mysql的关键字集合

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目