数据库系统概论(超详解!!!)第三节 关系数据库标准语言SQL(Ⅴ)

本文主要是介绍数据库系统概论(超详解!!!)第三节 关系数据库标准语言SQL(Ⅴ),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.数据更新

1.插入数据

1.插入元组

语句格式     

INSERT     

INTO <表名> [(<属性列1>[,<属性列2 >…)]     

VALUES (<常量1> [,<常量2>]… );

功能:将新元组插入指定表中

INTO子句 :

指定要插入数据的表名及属性列

属性列的顺序可与表定义中的顺序不一致

没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致

指定部分属性列:插入的元组在其余属性列上取空值

VALUES子句  :

提供的值必须与INTO子句匹配: 值的个数, 值的类型

将一个新学生元组(学号:201215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。INSERTINTO  Student (Sno,Sname,Ssex,Sdept,Sage)VALUES ('201215128','陈冬','男','IS',18);将学生张成民的信息插入到Student表中。INSERTINTO  StudentVALUES ('201215126','张成民','男’,18,'CS');插入一条选课记录( '200215128','1 ')。INSERTINTO SC(Sno,Cno)VALUES ('201215128 ',' 1 ');关系数据库管理系统将在新插入记录的Grade列上自动地赋空值。或者:INSERTINTO SCVALUES (' 201215128 ',' 1 ',NULL);

2.插入子查询结果 (可以一次插入多个元组)

语句格式:     

INSERT    

INTO <表名>  [(<属性列1> [,<属性列2>…  )]      

子查询;

INTO子句

子查询 :SELECT子句目标列必须与INTO子句匹配 (值的个数 ,值的类型)

对每一个系,求学生的平均年龄,并把结果存入数据库
第一步:建表CREATE  TABLE  Dept_age( Sdept     CHAR(15)                     /*系名*/Avg_age SMALLINT); 	/*学生平均年龄*/第二步:插入数据INSERTINTO  Dept_age(Sdept,Avg_age)SELECT  Sdept,AVG(Sage)FROM     StudentGROUP BY Sdept;

关系数据库管理系统在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则

实体完整性

参照完整性

用户定义的完整性: NOT NULL约束, UNIQUE约束 ,值域约束

2.修改数据

语句格式    

UPDATE  <表名>    

SET  <列名>=<表达式>[,<列名>=<表达式>]…    

[WHERE <条件>];

功能 :

修改指定表中满足WHERE子句条件的元组

SET子句给出<表达式>的值用于取代相应的属性列

如果省略WHERE子句,表示要修改表中的所有元组

1.修改某一个元组的值

将学生201215121的年龄改为22岁UPDATE  StudentSET Sage=22WHERE  Sno=' 201215121 '; 

2.修改多个元组的值

将所有学生的年龄增加1岁。UPDATE StudentSET Sage= Sage+1;

3.带子查询的修改语句

将计算机科学系全体学生的成绩置零。UPDATE SCSET     Grade=0WHERE Sno  IN(SELETE SnoFROM     StudentWHERE  Sdept= 'CS' );

关系数据库管理系统在执行修改语句时会检查修改操作是否破坏表上已定义的完整性规则

实体完整性

主码不允许修改

用户定义的完整性 : NOT NULL约束,  UNIQUE约束 , 值域约束

3.删除数据 

语句格式        

DELETE        

FROM     <表名>      

 [WHERE <条件>];

功能:

删除指定表中满足WHERE子句条件的元组

WHERE子句:

指定要删除的元组

缺省表示要删除表中的全部元组,表的定义仍在字典中

1.删除某一个元组的值  

删除学号为201215128的学生记录。DELETEFROM StudentWHERE Sno= 201215128 ';

2.删除多个元组的值

删除所有的学生选课记录。DELETEFROM SC;

3.带子查询的删除语句

删除计算机科学系所有学生的选课记录。DELETEFROM  SCWHERE  Sno  IN(SELETE  SnoFROM   StudentWHERE  Sdept= 'CS') ;

2.练习

/*(1)在 Departments中插入一个部门,部门编号为4,部门为销售部。*/
INSERT
INTO  Departments(DepartmentID,DepartmentName)
VALUES ('4','销售部');/*(2)自拟数据,对Employee表插入4个元祖,要求都是销售部的员工。*/
INSERT
INTO Employee
VALUES 
('4001','张三','1956-3-12',0,'河南郑州','475012','3345378','zs@henu.edu.cn','4'),
('4002','王五','1978-11-2',1,'河南新乡','475013','0764311','ww@henu.edu.cn','4'),
('4003','李四','1998-6-22',0,'云南昆尼','475014','0378652','ls@henu.edu.cn','4'),
('4004','刘二','1946-10-3',1,'河北廊坊','475015','7765987','le@henu.edu.cn','4');/*(3)将’1003’号员工的地址变为“陕西”。*/
update Employee
set Address='陕西'
where EmployeeID='1003';/*(4)将研发部所有职员的Income涨500元。*/
update Salary
set Income=Income+500
where EmployeeID in (select EmployeeIDfrom Employeewhere DepartmentID in(select DepartmentIDfrom Departmentswhere DepartmentName='研发部'));/*(5)将‘2002’号员工的地址变为‘北京’,所属部门改为2。*/
update Employee
set Address='北京' ,DepartmentID='2'
where EmployeeID='2002';/*(6)将Salary表中前3个元组的outcome属性值统一修改为1100。*/
update top(3) Salary
set OutCome='1100';update Salary set OutCome=REPLACE(OutCome,1500,1100)
update Salary set OutCome=REPLACE(OutCome,1000,1100)
update Salary set OutCome=REPLACE(OutCome,1200,1100);/*(7)将‘3001’号员工调入财务部。*/
update Employee
set DepartmentID='1'
where EmployeeID='3001';/*(8)在Departments表中新增一名为DepartmentTEL的属性列,并插入正确的数据信息。(DepartmentTEL为8位的部门电话)*/
alter table Departments
add DepartmentTEL char(8)update Departments set DepartmentTEL='34568765' where DepartmentID='1'
update Departments set DepartmentTEL='34359665' where DepartmentID='2'
update Departments set DepartmentTEL='98648765' where DepartmentID='3'
update Departments set DepartmentTEL='47836865' where DepartmentID='4';/*(11)删除Departments表的‘Note’列。*/
alter table Departments 
drop column Note;/*(12)在Salary表中新增一名为Stime的属性列,Stime的值为插入时系统的时间数据*/
alter table Salary
add Stime date not null default getdate()/*(13)删除“王霞”的信息。*/
delete from Salary
where EmployeeID in( select EmployeeIDfrom Employeewhere Name='王霞') ;

这篇关于数据库系统概论(超详解!!!)第三节 关系数据库标准语言SQL(Ⅴ)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871642

相关文章

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四