`

SQL基础总结(九):插入更新删除行及创建更新删除表

 
阅读更多

本系列blog源自前年写的SQL学习笔记,汇总一下发上来。(1月份发了前三篇笔记,原以为后面的笔记误操作删了,今天在硬盘里又找到了,一起发上来)

--------------------------------

插入更新删除行

 

使用INSERT插入行

INSERT INTO table VALUES(value1,value2,value3…);

INSERT INTO table(column1,column2,column3) VALUES(value1,value2,value3);

 

INSERT INTO table(column1,column2,column3) subquery;

Subquery中列的数量必须等于INSERT的列的数量。

SubquerySELECT 返回的结果为空是合法的,而且并不插入行。

 

可以通过视图插入行。

 

使用UPDATE更新行

UPDATE table SET column = expr [WHERE search_condition];

search_condition可以是子查询或者WHERE条件。

 

通过CASE更新,例:

UPDATE titles SET prise = prise*

 CASE type

   WHEN ‘history’ THEN 1.10

   WHEN ‘psychology’ THEN 1.12

   ELSE 1

END;

 

更新中使用子查询:

UPDATE titles SET pub_id=(SELECT pub_id FROM publishers WHERE pub_name=’aaa’)

WHERE pub_id=(SELECT pub_id FROM publishers WHERE pub_name=’bbb’);

DBMS使用引用列更新之前的值计算SETWHERE子句中的表达式。

可以通过视图更新行。

 

SQL2003引入了MERGE语句作为在一条语句中结合运用多个UPDATEINSERT操作的简便方法。ORACLEDB2支持MERGE

 

使用DELETE删除行

DELETE FROM table [WHERE search_condition];

search_condition可以是WHERE条件或子查询条件。

 

如果想删除表中的所有行,TRUNCATE语句比DELETE要快且使用的系统资源少。TRUNCATE不是标准SQL的一部分,但部分DBMS支持它。TRUNCATE清空整张表。使用TRUNCATE,代价是有错误就无法恢复到变化前(回滚)。

TRUNCATE TABLE table;

 

创建、更新和修改表

 

约束:

NOT NULL阻止向列中插入空值

PRIMARY KEY设置表的主键列

FOREIGN KEY设置表的外键列

UNIQUE阻止向列中插入重复的值

CHECK使用逻辑(布尔)表达式限制插入列中的值

 

列约束:是列定义的一部分,它设置作用于列的条件。

表约束:有别于列定义并加强于表中多个列条件,可以在一个表约束中包含多个列。

如果不显示命名约束,DBMS将自动产生并分配约束的名称。应该用CONSTRAINT子句分配自定义的约束名。约束名在一个表中必须是唯一的。

CONSTRAINT constraint_name;

 

使用NOT NULL禁止空值

 

使用DEFAULT确定默认值

CREATE TABLE列定义中使用关键字DEFAULT定义默认值。

 

使用PRIMARY KEY指定主键

主键不允许为空值。

每个表只能有一个主键。

CREATE TABLE的定义中使用关键字PRIMARY KEY定义主键约束。

一个表不能有一个以上的主键约束。

主键约束总是显示命名,使用CONSTRAINT子句来实现。

所有主键列都是NOT NULL的。

 

使用FOREIGN KEY指定外键

外键与引用表的主键或候选主键建立直接关系,于是外键的值被限于已经存在的父键值。这个约束被称为引用完整性。

外键不像主键,允许空值。

表可以有零个或多个外键。

外键值在表中通常不是唯一的。

CREATE TABLE的定义中使用关键字FOREIGN KEYREFERENCES来定义外键约束。

 

当试图更新或删除外键值所引用的键值(在父表中)时,SQL允许定义DBMS要采取的行为。要触发一个引用行为,在FOREIGN KEY约束中使用ON UPDATEON DELETE子句。

 

ON UPDATE action:当试图UPDATE一个行中被其它表的外键引用的键值(在父表中)时,action为下列4个值中的一个:

CASCADE:更新依赖的外键值为新的父表值。

SET NULL:将依赖的外键值改为空值。

SET DEFAULT:将依赖的外键值改为默认值。

NO ACTION:当违反外键约束时产生一个错误提示,这是默认行为。

 

ON DELETE action:当试图DELETE一个行中被其它表的外键引用的键值(在父表中)时,

action为下列4个值中的一个:

CASCADE:删除所包含的外键值与要删除的主键值匹配的行。

SET NULL:将依赖的外键值改为空值。

SET DEFAULT:将依赖的外键值改为默认值。

NO ACTION:当违反外键约束时产生一个错误提示,这是默认行为。

 

使用UNIQUE确保值唯一

唯一约束和主键约束区别:唯一列可以包含空值、表可以包含多个唯一列。

唯一约束可以禁用空值。

使用CHECK检查约束

通常检查最大值、最小值、具体值、一定范围的值。

 

CREATE TABLE table(

Column1 data_type NOT NULL,

Column2 data_type NOT NULL,

Column3 data_type DEFAULT ‘’,

Column4 data_type ,

Column5 data_type NOT NULL UNIQUE,

CONSTRAINT constraint_name_pk PRIMARY KEY(Column1,Column2),

CONSTRAINT constraint_name_fk FOREIGN KEY(Column4) REFERENCES ref_table(id) ON UPDATE cascade,

CONSTRAINT constraint_name_check CHECK(Column5 IN (‘A’,’B’,’C’,’D’))

);

 

使用CREATE TEMPORARY TABLE创建临时表

基础表:持久保存数据直到显示删除表为止。SQL也允许创建临时表来存储中间结果。

临时表是在会话或事务结束时DBMS能自动清空的表(数据和表都被删除)。

临时表最初没有行,可以像在基本表那样插入、更新和删除行。

如果创建了巨大的临时表,可以自己删除而不是等DBMS来释放内存。

CREATE {LOCAL|GLOBAL} TEMPORARY TABLE table(

//与基本表相同。

);

LOCAL表明是局部临时表,仅用户自己可用,当DBMS进程结束时就会消失。

GLOBAL表明是全局临时表,可以被其它用户访问,当DBMS会话和其它引用它的任务结束时,就会消失。

 

对于所有DBMS,查阅文档了解DBMS如何处理与基本表名字相同的临时表。

在某些情况下,临时表会在被删除之前,隐藏或封闭同名的基本表。

 

使用CREATE TABLE AS利用已存在表创建新表

CREATE TABLE new_table AS subquery;

Subquery是一个返回插入到new_table表行的SELECT语句。使用subquery的结果决定new_table的结构和列的顺序。

不管SELECT引用的数据表有多少,CREATE TABLE AS只向一个表中插入数据。新表不能和已存在的表同名。

 

为了可移植性,不要使用CREATE TABLE ASSELECT INTO。应该使用CREATE TABLE创建新的空表,然后使用INSERT SELECT添加值。

 

使用ALTER TABLE修改表

ALTER TABLE table alter_table_action;

alter_table_action为:

ADD COLUMN column type [constraint];

ALTER COLUMN column SET DEFAULT expr;

DROP COLUMN column [RESTRICT|CASCADE];

ADD table_ constraint;

DROP CONSTRAINT constraint_name;

 

使用DROP TABLE删除表

可以删除基本表和临时表。

删除表就意味着删除了表的结构、数据、索引、约束、授权等。

删除表并未删除引用这个表的视图。

DROP TABLE table;

 

标准SQL允许指明RESTRICT(限制)或CASCADE(级联)删除行为,RESTRICT(安全的)防止删除视图或别的约束引用的表。CASCADE(不安全的)引发引用对象随着表一同被删除。

 

分享到:
评论

相关推荐

    SQL Server中关于临时表概念及创建和插入数据等问题

    SQL Server 中的临时表概念、创建和插入数据等问题 SQL Server 中的临时表概念是指名称以井号 (#) 开头的表,如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表有两种类型:本地临时表和...

    实验二《用SQLQuery工具和SQL语句 创建数据库与相应的表》

    实验二《用SQLQuery工具和SQL语句创建数据库与相应的表》主要目的是让学生熟悉数据库的创建、表的构建以及数据的插入操作。在实验中,学生们将通过使用SQLQuery工具和SQL语句来实践这些基本的数据库管理任务,具体...

    ISO IEC 9075-2-2023 (源文件,可复制文字)信息技术-数据库语言SQL 第2部分:基础.rar

    随着关系型数据库模型的发展,SQL逐渐成为主流,被广泛应用于数据查询、数据更新、数据插入和数据删除等操作。它是一种声明式的编程语言,允许用户以自然语言的方式描述想要执行的操作,而不是具体的操作步骤。 二...

    实验4 基本表的创建、插入、更新和删除.doc

    本次实验旨在让学生深入了解并熟练掌握数据库中基本表的创建、数据的插入、更新及删除等核心操作。通过实践,学生将能够独立进行表结构的设计与数据管理,包括: - **创建基本表**:学习如何使用`CREATE TABLE`语句...

    sql课内上机实验数据更新

    在本篇实验报告中,我们将深入探讨SQL语言中关于数据更新的操作,包括插入、更新和删除数据。实验的目的是为了让学生熟悉如何运用SQL语句来维护数据库中的信息。 首先,让我们详细了解一下SQL语句的各个部分: 1. ...

    sql练习总结sql经验总结

    1. 数据库与表:SQL主要用于创建、查询、更新和管理数据库中的数据。数据库是一个组织有序的数据集合,而表则是存储数据的基本单元,由列(字段)和行(记录)组成。 2. DDL(Data Definition Language):包括...

    labview 数据库的表格创建,数据更新,数据删除,数据查询,数据插入,数据显示。

    在LabVIEW中与数据库交互是常见的需求,本教程将详细介绍如何使用LabVIEW进行数据库的表格创建、数据更新、数据删除、数据查询以及数据插入,并展示如何显示这些数据。 首先,我们需要理解LabVIEW中的数据库接口。...

    面试SQL经典总结

    - DML(Data Manipulation Language):插入、更新和删除数据,如INSERT INTO、UPDATE、DELETE语句。 - DQL(Data Query Language):查询数据,这是SQL中最常用的部分,包括SELECT语句。 2. 基本查询: - ...

    数据库原理实验3-数据更新及视图(实验报告含总结体会)

    实验报告“数据库原理实验3-数据更新及视图”涵盖了数据库操作的核心方面,特别是SQL语言在数据管理和视图创建中的应用。以下是对实验内容的详细解释: 1. **数据更新语句**: - **UPDATE**:用于修改现有数据表中...

    SQL.zip_sql 表级约束_sql创建表_sql数据表_删除数据库

    总结,SQL提供了强大的功能来处理数据库,包括表级约束以确保数据质量,创建和操作数据表以满足业务需求,以及数据库级别的管理,如备份和恢复,这些都是数据管理和分析的基础。学习并熟练掌握SQL是每个IT专业人员的...

    SQL基础:常用SQL语句详解

    SQL的基础主要包括数据定义语言(DDL)和数据操作语言(DML),它提供了对数据库进行创建、修改、查询、删除等一系列操作的能力。 1. **数据定义语言(DDL)** DDL主要用于定义数据库的结构,包括创建、修改和删除数据...

    数据库基础 附录3-SQL例题.doc

    数据库基础 附录3-SQL例题.doc 数据库基础知识点: 1. SQL 基础知识: * SQL(Structured Query Language):结构化查询语言 * SQL 的特点:非过程化、一体化、联机和嵌入两种使用方法,语法结构统一语言简洁,...

    sql server 中sql语句大总结

    在SQL Server中,SQL语句是用于管理和操作数据库的核心工具,涵盖了数据定义、数据操纵和数据控制等各个方面。以下是对这些语句的详细说明: 1. **DDL (数据定义语言)**: - `CREATE`:用于创建数据库对象,如...

    SQLserver 中使用SQL语句创建视图:

    在SQL Server中,视图是一种虚拟表,它是由SQL SELECT语句创建的,可以用来封装复杂的查询逻辑,简化数据访问,并提供一定程度的数据安全性。视图并不实际存储数据,而是当查询视图时,根据其定义的SELECT语句动态...

    SQL基础教程-Mick-示例程序&习题答案

    总结,"SQL基础教程-Mick-示例程序&习题答案"是一份全面且实用的学习资料,涵盖了SQL的基础和进阶知识,并辅以示例和习题,是初学者入门SQL的理想选择。通过系统学习和实践,你可以掌握数据库管理的核心技能,为今后...

    sql基础教程对应源码

    通过学习这个“SQL基础教程”,你将能够熟练地掌握SQL的基本操作,包括查询、插入、更新和删除数据,创建和管理数据库结构,以及使用视图和存储过程。在实践中不断练习,你将能够更有效地管理和利用数据库资源。

    自己编写的SQL Server2008插入删除操作范例

    // 编写SQL插入语句 string sql = "INSERT INTO TableName (ColumnName1, ColumnName2) VALUES (@Value1, @Value2)"; // 创建SqlCommand对象并设置SQL语句 SqlCommand command = new SqlCommand(sql, ...

    sqlserver总结

    在这个总结中,我们将探讨关于SQL Server的一些核心知识点,包括数据库的创建、删除、备份,以及表的操作,如创建、删除、修改列,添加和删除主键,创建索引和视图,以及SQL语句的基本用法。 1. **创建数据库**: ...

    (第二卷)Microsoft SQL Server 2008技术内幕:T-SQL语言基础

    主要包括SQL的基础理论、逻辑查询处理、SELECT查询、连接和子查询、表表达式、过滤和分组、透视转换、修改数据、事务和一致性的处理、可编程对象等内容。  书中并非系统地罗列T-SQL的各种语法元素,而是结合实践中...

    使用SQL语句创建数据库与创建表

    在SQL(Structured Query Language)中,创建数据库和创建表是数据库管理系统中最基本的操作。SQL是一种标准的语言,用于管理和处理关系数据库。以下将详细介绍如何使用SQL语句进行这些操作。 首先,创建数据库通常...

Global site tag (gtag.js) - Google Analytics