`

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(不安全的)引发引用对象随着表一同被删除。

 

分享到:
评论

相关推荐

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

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

    第22讲 SQL语言高级00--创建插入删除和更新数据.PPT

    第22讲 SQL语言高级00--创建插入删除和更新数据.PPT第22讲 SQL语言高级00--创建插入删除和更新数据.PPT第22讲 SQL语言高级00--创建插入删除和更新数据.PPT

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

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

    数据库SQL知识点总结、代码及练习题代码

    1.数据库的创建修改批量插入等基本操作及sql文件 2.数据表的约束、查询及sql文件 3.SQL server函数及sql文件 常量变量函数 4.关于cascade使用的sql文件 删除重复行只留一行的sql文件 5.数据表操作的习题课1和2的sql...

    Web应用安全:SQL概要.pptx

    8.SQL 可在数据库中插入新的记录、删除记录。 1.SQL简介 SQL概要 SQL-86 1986年10月 1989年 1992年 1999年 2008年 2010年 SQL:2011 SQL:2008 SQL:2003 SQL:1999(SQL3) SQL-92(SQL2) SQL-89(FIPS 127-1) 1974年 2.SQL...

    sql server2008创建模式、表、索引与视图

    各类更新操作(插入数据(n) 、修改数据(1) 、删除数据(1) ) 各类查询操作(单表查询(1) 、连接查询(2) 、嵌套查询(2) 、集合查询(1) ) 视图操作 视图的创建(1)、删除 (1) 、查询(1) 、更新(1) 注意 (x) :x个SQL...

    简单的SQL,入门级别

    SQL 是用于访问和处理数据库的标准的计算机语言。 什么是 SQL?...• SQL 可在数据库中创建新表 • SQL 可在数据库中创建存储过程 • SQL 可在数据库中创建视图 • SQL 可以设置表、存储过程和视图的权限

    SQL Server2005基础教程

    本书重点阐述了SQL Server 2005的基础知识,前半部分以建立一个金融数据库系统为主线,从最基础的收集信息入手,一步步地引导读者学会如何保证数据库的安全,创建表、主键、索引等项目,在表之间建立恰当的关系,并...

    一个包括创建表、插入数据、更新数据、查询数据以及删除数据的SQL脚本

    假设我们有一个名为employees的表,包含员工信息,以及一个名为departments的表,包含部门信息。我们想要执行一系列操作,包括创建表、插入数据、更新数据、查询数据以及删除数据。这就是一个SQL脚本的示例。

    sql语句大全(详细).pdf

    CREATE TABLE:创建表 ALTER TABLE:修改表结构 DROP TABLE:删除表 CREATE INDEX:创建索引 DROP INDEX:删除索引 数据操纵语言 (DML) INSERT INTO:插入数据 UPDATE:更新数据 DELETE FROM:删除数据 SELECT:...

    SQL 基础教程

    第4章 数据表的创建与更新 第5章 基本查询操作 第6章 使用WHERE子句查询表 第7章 表中数据的排序 第8章 连接查询与集合查询 第9章 子查询 第10章 常用函数 第11章 视图的创建与维护 第12章 插入数据记录 第13章 修改...

    数据库信息

    第三章 关系数据库的基本理论 1.关系模式的定义 2.关系的性质 3.关系的三种完整性 4.关系代数运算 传统的集合运算、专门的关系运算 重点 第四章 SQL 重点 ...5.数据更新 插入、删除、更新表和视图操作

    SQL(结构化查询语言)用于管理关系型数据库的标准语言,主要用于在数据库中查询、插入、更新和修改数据

    SQL(结构化查询语言)是用于管理关系型数据库的标准语言,主要用于在数据库中查询、插入、更新和修改数据。 一些基本SQL知识点包括: - 数据类型:每个数据库表的列都需要一个数据类型。一些常见的SQL数据类型包括...

    SQL操作全集(非常适合初学者)

    SQL操作全集(非常适合初学者) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device ...

    Microsoft SQL Server 2005技术内幕:T-SQL查询

    第1章 T-SQL查询和编程基础  1.1 理论背景  1.2 SQL SERVER体系结构  1.3 创建表和定义数据完整性  1.4 总结 第2章 单表查询  2.1 SELECT语句的元素  2.2 谓词和运算符  2.3 CASE表达式  2.4 NULL...

    数据库图书信息管理数据库SQL语句.pdf

    6、 掌握使用 SQL 语句插入、修改和删除数据表中的数据; 7、 掌握使用 SQL 语句创建、删除、查询和更新视图。 二、 实验内容 (一)创建数据库和模式 1、通过 SQL 语句创建图书信息管理数据库,命名为"db_Library...

    实验4答案-触发器.sql

    4、创建一个DELETE触发器,当贷款表(LoanT)中的记录被删除时,将删除的贷款记录和删除日期插入到另外一张表L_D(Eno, Bno, Ldata, Lamount, Lterm, Deldata) 三、实验报告 将实验结果反映在实验报告中,并对实验...

    VC环境应用sql语言操作SQL SEVER数据库(包括添加、删除指定行,修改单元格值)

    主要VC环境应用sql语言操作SQL数据库(包括添加、删除指定行,修改单元格值)

    SQL应用开发范例宝典:SQL应用开发范例宝典.iso (源码光盘)

    内容包括SQL语言基础、常规数据查询、高级数据过滤、字符串查询、日期函数、日期函数、数据排序、聚集函数与分组统计、使用子查询、多表查询、高级查询、插入数据、更新和删除数据、创建、操纵数据库和表、使用视图...

    精通SQL--结构化查询语言详解

    第1章 数据库与sql基础 1 1.1 数据库的基本概念 1 1.1.1 数据库的由来 1 1.1.2 数据库系统的概念 3 1.2 数据库系统的结构、组成及工作流程 3 1.2.1 数据库的体系结构 3 1.2.2 数据库系统的组成 4 1.2.3 ...

Global site tag (gtag.js) - Google Analytics