IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQL学习日记(8) -> 正文阅读

[大数据]SQL学习日记(8)

插入数据

数据插入

insert用来将行插入到数据库表。插入方式有:插入完整的行;插入行的一部分;插入某些查询的结果

插入完整的行

使用基本的insert语法,要求指定表名和插入到新行中的值

Insert into customers

Values(‘1000000006’,

??????‘Toy Land’,

??????‘123 any street’,

??????‘New York’,

??????‘NY’,

??????‘11111’,

??????‘USA’,

??????NULL,

??????NULL);

将一个新顾客数据插入customers表中。存储在表中的每一列数据在values子句中给出,必须给每一列提供一个值。

注意:上述语法很简单,但是并不安全,应尽量避免使用。高度依赖于表中列的定义次序

优化:

Insert into customers(cust_id

??????cust_name,

??????cust_address,

??????cust_city,

??????cust_state,

??????cust_zip,

??????cust_country,

??????Cust_contact,

??????Cust_email)

Values(‘1000000006’,

??????‘Toy Land’,

??????‘123 any street’,

??????‘New York’,

??????‘NY’,

??????‘11111’,

??????‘USA’,

??????NULL,

??????NULL);

与前一个insert语句的工作完全相同,但在表名后的括号中明确给出了列名。在插入行时,DBMS将用values列表中的相应值填入列表中的对应项。因为提供了列名,values必须以其指定的次序匹配指定的列名,不一定按照各列出现在表中的实际次序。

插入部分行

使用insert时,还可以省略列,表明可以只给某些列提供值,其他列不提供值

Insert into customers(cust_id

??????cust_name,

??????cust_address,

??????cust_city,

??????cust_state,

??????cust_zip,

??????cust_country)

Values(‘1000000006’,

??????‘Toy Land’,

??????‘123 any street’,

??????‘New York’,

??????‘NY’,

??????‘11111’,

??????‘USA’);

注意:1.省略的列必须满足以下条件:该列定义允许NULL值;在表定义中给出默认值。

??????2.若省略所需的值,即不满足上述条件,将会产生错误信息

插入检索出的数据

假若想把另一表中的顾客列合并到customers表中,不需要每次读取一行再将它用Insert插入,可以进行以下操作:

Insert into customers(cust_id

??????cust_name,

??????cust_address,

??????cust_city,

??????cust_state,

??????cust_zip,

??????cust_country,

??????Cust_contact,

??????Cust_email)

Select ?cust_id

??????cust_name,

??????cust_address,

??????cust_city,

??????cust_state,

??????cust_zip,

??????cust_country,

??????Cust_contact,

??????Cust_email)

From custnew;

select中列出每一列对应于customers表名后所跟的每一列,插入多少行取决于custnew表中有多少行

注意:1.列子中在insert和select语句中使用了相同的列名,但是不一定要求列名匹配,DBMS使用的是列的位置

??????2.insert select中select语句可以包含where子句,以过滤插入的数据

??????3.insert通常只插入一行,要插入多行,必须执行多个insert语句。但是insert select是个列外,允许一条insert语句插入多行,取决于select返回多少行

从一个表复制到另一个表

要将一个表的内容复制到一个全新的表中,可以使用select into语句(DB2不支持)。相较于Insert select将数据添加到一个以及存在的表不同,select into将数据复制到一个新表。

Select *

Into custcopy

From customers;

这里使用通配符*,所以将customers表的整个内容复制到新表custcopy中。若只想复制部分列,可以明确给出列名。

在使用select into语句,注意:

  1. 任何select选项和子句都可以使用,包括where和group by
  2. 可利用联结从多个表插入数据
  3. 不管从多少个表中检索数据,数据只能插入到一个表中

更新和删除数据

更新数据

更新表中的数据,使用update语句。有两种方式:更新表中的特定行;更新表中所有行

基本的update语句有三部分组成,分别是:要更新的表;列名和新值;过滤条件

Update customers

Set cust_email=’kim@thetoystore.com’

Where cust_id=’1000000005’;

update语句要以更新的表名开始,set用来将新值赋予被更新的列,若没有where子句,DBMS将会更新customers表中的所有行

更新多个列:

Update customers

Set cust_email=’kim@thetoystore.com’,

???Cust_contact=’Sam Roberts’

Where cust_id=’1000000005’;

注意:1.update语句中可以使用子查询,使得能用select语句检索出的数据更新列数据

??????2.有的SQL实现支持在update语句中使用from子句,用一个表的数据更新另一个表中的行

要删除某个列的值,可设置为NULL:

Update customers

Set cust_email=NULL,

Where cust_id=’1000000005’;

删除数据

从一个表中删除数据,使用delete语句。有两种方式:从表中删除特定的行;从表中删除所有行

Delete from customers

Where cust_id=’10000006’;

注意:1.友好的外键可以确保引用完整性,DBMS可以防止删除某个关系需要的行。如要从Products表中删除一个产品,而这个产品在ordertems的已有订单中,那么delete语句将抛出错误并中止

??????2.delete不需要列名或通配符,其删除整行而不是整列,要删除指定的列,使用update语句

??????3.删除的是表的内容而不是表本身

??????4.如果想从表中删除所有行,可使用truncate table语句,完成相同的工作,速度更快

更新和删除的指导原则

  1. 除非想删除或更新每一行,否则绝对不要使用不带where子句的语句
  2. 保证每个表有主键,尽可能像where子句使用
  3. 在update或delete语句使用where子句前,应该使用select先进行测试,保证过滤的为正确的记录
  4. 使用强制实施引用完整性的数据库,DBMS不允许删除其数据与其他表相关联的行
  5. 有的DBMS允许数据库管理员施加约束,防止执行不带where子句的update或delete语句
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-01 20:41:02  更:2022-02-01 20:42:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:50:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码