SQL应用与开发:(三)数据操作 #183; 改 AND 删
继续上一篇博客的序幕,接下来,写一些关于数据操作的“改”和“删”的相关课题。在本次的学习总结中,一致围绕着数据的操作问题,这也是数据库基本、最简单的应用之一。
1.修改和删除表
在创建好表之后,如果想对表中的数据进行修改,可以使用SQL提供的ALTER TABLE语句;如果在使用过程中发现某个表已不再需要,可以通过SQL提供的DROP TABLE语句将该表删除。
1.1修改SQL表
可以使用ALTER TABLE语句修改存储在数据库中的基表定义。ALTER TABLE语句的基本语法:
ALTER TABLE <table_name>
ADD [COLUMN] <column definition>
|ALTER [COLUMN] <column_name>
{SET DEFAULT <default value> | DROP DEFAULT}
| DROP [COLUMN] <column_name> {CASCADE | RESTRICT}
上述语句可以完成三中不同的功能:添加列、更改列和删除列。其中,ADD [COLUMN] 子句的占位符<column definition>与CRERATE TABLE语句中的列定义类似。在这个占位符中可以提供列名和数据类型,还可以添加默认子句、列约束或整序。
例如,在“客户信息”表中添加一个名为“备注”的列。执行语句如下:
ALTER TABLE 客户信息
ADD COLUMN 备注 DATE
与ADD [COLUMN]子句不同,ALTER [COLUMN]子句只能实现设置默认或删除默认值两种功能。例如,如果没有上述在表”客户信息“添加列”备注“中定义默认值,则通过下述语句为其添加默认值:
ALTER TABLE 客户信息
ALTER COLUMN 备注 SET DEFAULT 'Unknown'
如果想删除某一列的默认值,可以通过一下语句来实现:
ALTER TABLE 客户信息
ALTER COLUMN 备注 DROP DEFAULT
其中,子句DROP [COLUMN]提供了两个关键字CASCADE和RESTRICT,通过这两个关键字可以从表中删除列及其数据。如果指定CASCADE关键字则无论其他对象书否引用这一列,列和列中的数据都将会被删除,并且所有引用该列的视图、约束、列程或触发器也将会被删除。如果指定RESTRICT关键字,则只有在没有视图、约束、列程或触发器引用该列时,该列才会被删除。例如,从”客户信息“表中,删除列”备注“,但并不考虑是否有依赖该列的视图、约束、列程或触发器,执行语句:
ALTER TABLE 客户信息
DROP COLUMN 备注 CASCADE
1.2删除SQL表
删除SQL表及其存储数据的过程比较简单,其语法格式:
DROP TABLE <table_name> {CASCADE | RESTRICT}
从上述语句可以看出,当删除一个表时,要对关键字关键字CASCADE和RESTRICT,通过这两个关键字可以从表中删除列及其数据。如果指定CASCADE关键字则无论其他对象书否引用这一列,列和列中的数据都将会被删除,并且所有引用该列的视图、约束、列程或触发器也将会被删除。如果指定RESTRICT关键字,则只有在没有视图、约束、列程或触发器引用该列时,该列才会被删除。例如,从”客户信息“表中,删除列”备注“,但并不考虑是否有依赖该列的视图、约束、列程或触发器,执行语句:
ALTER TABLE 客户信息
DROP COLUMN 备注 CASCADE
通过DROP TABLE语句删除表,不仅将表中的数据删除,还将删除表定义本身。如果只想删除表中的数据,而保留表的定义,则使用DELETE语句。DELETE语句删除表中的所有行,或者根据语句中的定义只删除特定的行。关于DELETE 语句的用法将在接下来的课题中介绍。
2.更新SQL数据
当数据被添加到数据表后,会经常需要修改,如客户的地址发生了变化,货品库存量的增减等。在SQL中,对数据的是修改是通过使用UPDATE语句实现的。UPDATE语句可以修改述语句表中的一列或多列的值。其基本语法结构:
UPDATE <Table_Name>
SET <Set clause sxpression>[{,<Set clause expression>}...]
[WHERE <Search_condition>]
可以看出,UPDATE子句和SET子句是必选的,而WHERE子句是可选的。UPDATE子句中,必须指定将要更新的数据表的名称。WHERE子句可以指定要搜索的条件,以限制只对满足条件的行进行更新。
2.1使用UPDATE修改数据
在对UPDATE语句的各个部分进行分析后,现在把他们放在一些示例中,这些示例都死基于数据库”销售管理系统“的。
在数据库”销售管理系统中“,更新编号为1002和1003的商品信息。即把这两家的商品单价提高10%。
UPDATE 商品信息
SET 单价=单价*1.1
WHERE 供应商编号=1002 or 供应商编号=1003
Set子句可以同时更新多个列,这时,各列之间要用逗号”,“隔开。示例如下:
UPDATE 商品信息
SET 单价=单价*1.1,产地='南京市'
WHERE 商品名称='Maxtor 40G 硬盘'
但是UPDATE无法对同一列的多个行赋不同的值。比如,可以更新上述代码中的Maxtor 40G硬盘行的单价和产地信息,但不能在一条UPDATE语句中更新CORSAIR VS512MB内存和Maxtor 40G硬盘的单价。遇到这种情况后,应使用多个UPDATE语句。其代码:
UPDATE 商品信息
SET 单价=500
WHERE 商品名称='Maxtor 40G硬盘'
UPDATE 商品信息
SET 单价=260
WHERE 商品名称='CORSAIR VS512MB内存'
2.2使用SELECT语句更新
前面介绍过在INSERT语句中使用SELECT语句代替VALUES语句,同样在UPDATE语句中,SET子句也可以使用SELECT语句。SELECT语句出现在SET子句中等号的右边。也就是说,SET子句所需要的值由SELECT子句所需的值由SELECT语句提供。
下面的这些示例都是基于数据库”销售管理系统“。第一个示例更新”商品信息“数据表中的供应商编号,即把所有产地为北京市的商品编号修改为“中达恒业”的编号。其代码如下:
UPDATE 商品信息
SET 供应商编号=
(SELECT 供应商编号 FROM 供应商信息
WHERE 供应商名称='中达恒业')
WHERE 产地='北京市'
根据“供应商信息”中的相关信息,查的中达恒业的编号为1005,这样SE子句就可以理解为:SET 供应商编号=1005。因此,在“商品信息”表中,所有产地为北京市的行,其供应商编号都被修改为1005。
通过进一步的修改SET子句,可增加UPDATE语句的复杂性。比如,假定在SELECT提取的值赋给供应商编号前,需要将此值加4,那么可对表达式修改:
UPDATE 商品信息
SET 供应商编号=
(SELECT 供应商编号 FROM 供应商信息
WHERE 供应商名称='中达恒业')+4
WHERE 产地='北京市'
因此,新的SET子句就可以表示为:SET 供应商编号=(1005)+4,执行后,相关行的编号将被修改为1009。
3.删除SQL数据
当数据库的添加工作完成以后,随着不断使用和对数据的修改,表中可能存在一些无用的数据,这些无用的数据不仅会占用空间,还会影响修改和查询的速度,所以应及时将它们删除。
在SQL支持的所有数据修改语句中,DELETE语句可能是最简单的语句。它只包含两个子句。DELETE语句的基本结构:
DELETE FROM <table_name>
[WHERE <search_condition>]
DELETE子句是必选项,WHERE子句是可选项。WHERE子句,在这里用于限定要删除的行,即删除满足搜索条件的行。如果在DELETE语句中没有使用WHERE子句,那么将删除整个表。
注意在DELETE语句中没有指定列名,这是由于DELETE语句不能从表中删除单个列的值。它只能删除行。如果要删除特定的列值,可使用UPDATE语句把该列值设为NULL,当然,该列值必须支持NULL值。
现在举几个简单的示例,这些示例都是基于数据库”销售管理系统“的:
从“业务员信息”表中删除姓名为“王俊峰”的数据:
DELETE FROM 业务员信息
WHERE 业务员姓名='王俊峰'
从“业务员信息”表中删除所有姓“黄”的业务员:
DELETE 业务员信息
WHERE 业务员姓名 LIKE '黄%'
由此可以看出,从表中删除的行数取决于WHERE子句中定义的搜索条件。注意,使用DELETE语句删除数据时,与INSERT和UPDATE语句一样,必须满足表定义中的约束限制。
4.阶段小结
对于数据操作的学习,已经进行了一段的学习,关于今天的学习感觉来说,真的很充实,自己先前对于SQL的数据的操作学习算是很马虎的,而经过今天的总结学习来说,感觉这部分知识并不难,知识繁琐,知识都是相联系的,从不会单独存在,理解了一个简单的公式之后,下面的练习,就是小菜一碟。也希望能够给大家带来一定的知识冲击!
依然在后面的时间来总结自己在SQL的学习,期待着自己的努力!
SQL应用与开发:(三)数据操作 #183; 改 AND 删相关推荐
- SQL应用与开发:(七)数据操作 #183; 查 #183; (一)常规型
数据库是为了便于有效地管理信息而创建的,人们希望数据库可以随时提供所需要的数据信息.因此,对用户来说,数据查询是数据库最重要的功能.在数据库中创建了对象并且在基表中添加了数据后,用户便可以从数据库中检 ...
- JDBC完成对数据库数据操作(增,删,改,查)
写在前面 虽然在实际开发中关于这些操作都不会让我们去写,但是掌握这代码的逻辑编写对我们使用框架有一定的帮助. 学习JDBC:请关注专栏--JDBC学习--内容详细 相关文章: JDBC总述 JDBC连 ...
- 微信小程序数据操作(增、删、改、查),id为随机数
addItem() { let that = this var math = Math.floor(Math.random() * 50 + 10) var dataList = that.data. ...
- 二次开发mysql数据反推_Discuz二次开发之数据库操作
一.discuz数据操作之查: 1.fetch_all DB::fetch_all(sql, $arg = array());//取出符合条件的所有数据 sql为查询语句,$arg为绑定参数 例:$r ...
- SQL不同服务器数据库之间的数据操作整理(完整版)(转)
-- Blog : http://blog.csdn.net/htl258(转载保留此信息) -- Subject: SQL不同服务器数据库之间数据操作整理 ------------------- ...
- 转载-SQL Server各种导入导出数据方式的比较
注:本文转载自 http://blog.csdn.net/nokiaguy/article/details/4684822 当我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新 ...
- MySQL常见的库操作,表操作,数据操作集锦及一些注意事项
一 库操作(文件夹) 1 数据库命名规则 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用关键字如 create select 不能单独使用数字 最长128位 2 数据库相关操作 创 ...
- SQL Server数据库导入导出数据方式比较
在我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验.净化和转换时,将会面临很大的挑战.幸好SQL Server为我们提供了强大.丰富的数据 ...
- Atitit.数据操作dsl 的设计 ---linq 方案
Atitit.数据操作dsl 的设计 ---linq 方案 1.1. sql与api方式1 1.2. Linq方案与stream方案的选择,1 1.3. 前缀表达式 vs 中缀表达式1 1.4. 要不 ...
最新文章
- 整理第十六届全国大学智能车竞赛比赛数据
- 递归算法转换为非递归算法的技巧
- Mesos源码分析(8): Mesos-Slave的初始化
- 递归和循环:斐波那契数列
- Spring + JDBC + Struts联合开发(实现单表的CRUD)
- zabbix安装使用及监控案例(从头到尾)
- 华为服务器更换主板后怎么进系统,服务器更换主板
- matlab时域转复频域,信号与系统实验(MATLAB版)实验15连续系统的复频域分析.ppt...
- Google Maps API 进级:在信息窗口GInfoWindow中嵌入Flash动画
- lucene案例demo
- 灰度MANA信托增持729.04万MANA,FIL持仓增长185%
- [Robot Framework] 怎么写动态等待?
- Futter基础第12篇: 实现TabController定义顶部tab切换,并介绍生命周期函数
- 网站Webshell大马密码极速暴力爆破工具-cheetah
- 浅析成套设备研制中的项目模板管理
- .dmg文件转.iso的工具:dmg2img
- 九种NPP\GPP数据集介绍和下载
- 轻雀协作客户最佳实践之凯叔讲故事
- VMWare 文件格式详解 .VMX .VMSD .VMDK
- 服务器被挖矿入侵,进程 command为ld-linux-x86-64占用cpu很高,解决经历