Sql表数据操作

数据

表数据操作包括数据的插入、修改和删除。
一、插入数据

在向表中添加数据时应该注意两点:第一是用户权限,只有sysadmin角包成员、数据库和数据库对

象所有者及其授权用户才有权限向表中添加数据;第二是数据格式,对于不同的数据类型,插入数据的

格式也不一样,应严格遵守它们各自的格式要求。

Transact-SQL语言中用INSERT语句向表或视图中插入新的数据行。INSERT语句的语法格式为:

INSERT [INTO] table_source

{[column_list]

VALUES ({DEFAULT | constant_expression} [,…n])

|DEFAULT VALUES

|select_statement

|execute_statement

}

}

其中,column_list参数为新插入数据行中一列或多列列名列表,它说明INSERT 语句只为指定列插

入数据。在给表或视中部分列插入数据时,必须使用列名列表方式指出这部分列名。其余未指定列的列

值要根据它们的默认值和空值属性情况而定,它们有以下几种可能取值:

(1)对于timestamp列或具有IDENTITY属性列,它们的列值由SQL Server计算后自动赋值。

(2)如果这些列有默认值或关联有默认数据库对象,插入新列时,它们的值为默认值。

(3)当这些列没有默认值设置时,但它们允许空值时,该列值为空。

(4)当这些列既没有默认值设置,也不允许空值时,SQL Server在执行INSERT 语句时将产生错误,

导致插入操作失败。

当未指定column_list 参数时,为各列所提供的数据顺序应严格按照表中各列的定义顺序,而使用

column_list参数则可以调整向表中所插入数据的列顺序,只要VALUES子句所提供的数据顺序与column_

list参数中指定的列顺序相同即可。

VALUES子句为新插入行中column_list 参数所指定列提供数据,这些数据可以以常量表达式形式提

供,或使用DEFAULT关键字说明向列中插入其默认值。

DEFAULT VALUES说明向表中所有列插入其默认值。对于具有INDENTITY 属性或timestamp 数据类型

列,系统将自动插入下一个适当值。对于没有设置默认值的列,如果它们允许空值,SQL Server将插入

null,否则返回一错误消息。

select_statement是标准的数据库查询语句,它是SQL Server为INSERT语句所提供的又一种数据插

入方式。INSERT语句将select_statement子句所返回的结果集合数据插入到指定表中。查询语句结果集

合每行中的数据数量、 数据类型和排列顺序也必须与表中所定义列或 column_list 参数中指定列的数

量、数据类型和排列顺序完全相同。

SQL Server为INSERT语句提供的第四种数据插入方式是通过执行系统存储过程,其数据来自于过程

执行后所产生的结果集合。所执行的过程可以为存储过程、系统存储过程或扩展存储过程,它们既可以

为本地存储过程,又可以是远程服务器上的存储过程,只要用户具有它们的执行权限即可。有关存储过

程请参阅对应的内容。

table_source说明INSERT语句插入数据时所操作的表或视图,其语法格式可简单书写为:

{table_name [[AS] table_alias]

| view_name [[AS] table_alias]

}

table_name和view_name说明被插入数据的表或视图名称,table_alias参数为表或视图设置别名。

使用别名有两方面原因:第一、当表或视图名称较长时,使用别名可以简化书写工作;第二,在自连接

或子查询中,使用别名可以区别同一个表或视图。

在向表中插入数据时, 如果所插入的数据与约束或规则的要求冲突, 或是它们的数据类型不兼容

时,将导致INSERT 语句执行失败。当使用SELECT或EXECUTE子句向表中一次插入多行数据时,如果其中

有任一行数据有误,它将导致整个插入操作失败,使SQL Server停止所有数据行的插入操作。

例一、使用数值列表方式( 假定 usertable 表中只定义了name、age和sex字段,且name、sex均为

char类型,age为int类型)。

INSERT usertable

VALUES ('张三','女',18)

例二、使用列名列表方式

INSERT usertable (age,name)

VALUES (18,'张三')

例三、在数值列表中,还可以将变量的值插入到表中。在使用变量为列提供数据时,应保证变量的

数据类型与列数据类型相同,或是可以自动将它们转换为相同的数据类型。例如:

DECLARE @name char(16)

SET @name='张三'

INSERT usertable

VALUES (@name,DEFAULT,20)

本例中Asp中是这样的:

dim name

name="张三"

sqlstr="INSERT usertable VALUES ('"&name&"','女',20)"

……

例四、将SELECT子句的所返回的结果集合插入到表中。例如:

INSERT usertable (name,sex,age)

SELECT 's'+name,sex,age

FROM usertable

WHERE name like '张%%'

二、修改数据

Transact-SQL中的UPDATE语句用于修改表中数据,该语句的语法格式为:

UPDATE ()

SET (

column_name={expression | DEFAULT }

| @variable = expression

} [,…n]

[FROM

{

| (select_statement) [AS] table_alias [,…m]) ]

}

[,…n]

]

[WHERE

| CURRENT OF ({[GLOBAL] cursor_name } | cursor_variable_name} }

]

别看写了一大堆,最常用的只是下列格式:

UPDATE table_name

SET column_name1=variable1,column_name2=variable2

WHERE search_conditions

其中table_or_view参数指出待修改的表或视图名称,其格式与INSERT语句中该参数的格式相同。

SET子句指出表中被修改的列或变量,以及它们的新值。column_name为被修改的列名,@variable

为一个已经声明的局部变量名称,它们修改后的值由expression表达式提供,或使用DEFAULT关键字将

默认值赋给指定列。

FROM子句引出另一个表,它为UPDATE语句的数据修改操作提供条件。

WHERE子句中的search_conditions 参数说明UPDATE语句的修改条件,它指出表或视图中的哪些行

需要修改。省略WHERE子句时,说明对指定的表或视图中的所有行进行修改!!!!

WHERE子句中的CURRENT OF说明在游标的当前位置处执行修改操作,游标由curror_name 或游标变

量cursor_variable_name指定。

UPDATE不能修改具有IDENTITY属性列的列值。

例一、将usertable表中所有人员的性别改为'男'

UPDATE usertable

SET sex='男'

例二、将性别为null的所有人员的性别改成'男'

UPDATE usertable

SET sex='男'

WHERE sex IS NULL

例三、将所有姓名为null的人员的姓名改为'张三'、性别改为'女',年龄改为18

UPDATE usertable

时间: 2024-11-01 15:35:30

Sql表数据操作的相关文章

MySQL复制表数据操作sql语句

MySQL复制表数据操作相信大家都不会太陌生,下面就为您详细介绍MySQL复制表数据到新表的步骤,希望对您会有所启迪.  1.MySQL复制表结构及数据到新表   代码如下 复制代码    CREATE TABLE 新表  SELECT * FROM 旧表      2.只复制表结构到新表   代码如下 复制代码    CREATE TABLE 新表  SELECT * FROM 旧表 WHERE 1=2  即:让WHERE条件不成立.  方法二:(低版本的mysql不支持,mysql4.0.2

hibernate+spring两表数据操作

问题描述 hibernate+spring两表数据操作 新手求教,这两个对象属性要怎么显示到前台界面 ,访问查询方法的时候只显示了student的属性,大侠们能不能帮帮我 解决方案 spring 整合Spring和Hibernate操作商品库存表 解决方案二: 要是在控制台显示的话,重写student类的toString()方法. 然后再把System.out.println(list);改成 for(Student student:list) System.out.println(studen

SQL SERVER数据操作类代码_MsSql

复制代码 代码如下: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; usi

SQL SERVER数据操作类代码

复制代码 代码如下: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; usi

掌握SQL四条最基本的数据操作语句

数据|语句 掌握sql四条最基本的数据操作语句:insert,select,update和delete. 练掌握sql是数据库用户的宝贵财富.在本文中,我们将引导你掌握四条最基本的数据操作语句-sql的核心功能-来依次介绍比较操作符.选择断言以及三值逻辑.当你完成这些学习后,显然你已经开始算是精通sql了. 在我们开始之前,先使用create table语句来创建一个表(如图1所示).ddl语句对数据库对象如表.列和视进行定义.它们并不对表中的行进行处理,这是因为ddl语句并不处理数据库中实际的

SQL数据操作基础(中级)10

数据 操作日期和时间 日期和时间函数对建立一个站点是非常有用的.站点的主人往往对一个表中的数据何时被更新感兴趣.通过日期和时间函数,你可以在毫秒级跟踪一个表的改变. 返回当前日期和时间 通过函数GETDATE(),你可以获得当前的日期和时间.例如,语句SELECT GETDATE()返回如下的结果: -----------.. NOV 30 1997 3:29AM (1 row(s) affected) 显然,如果你将来使用这个函数,你得到的日期将比这个时间晚,或者梗早. 函数GETDATE()

SQL数据操作基础(初级)5

数据 使用SQL事务管理器创建新表 你可以使用前面几节所讲的方法创建新表.但是,使用事务管理器创建新表会更容易.这一节介绍如何使用这个程序创建新表. 从任务栏的SQL Sever程序组中选择SQL Enterprise Manager,启动该程序,你会看到如图10.4所示的窗口.浏览服务管理器窗口中的树形结构,选择名为Database的文件夹.打开文件夹Database后,选择你在第三章中所建立的数据库. 注意: 如果你还没有创建自己的数据库,回到第三章创建它.你决不要向master,tempd

SQL数据操作基础(初级)3

数据 操作字段 通常,当你从一个表中取出字段值时,该值与创建该表时所定义的字段名联系在一起.如果你从表authors中选择所有的作者名字,所有的值将会与字段名au_lname相联系.但是在某些情况下,你需要对字段名进行操作.在SELECT语句中,你可以在缺省字段名后面仅跟一个新名字来取代它.例如,可以用一个更直观易读的名字Author Last Name来代替字段名au_lname: SELECT au_lname "Author Last Name" FROM authors 当这个

SQL数据操作基础(初级)1

数据 为了建立交互站点,你需要使用数据库来存储来自访问者的信息.例如,你要建立一个职业介绍服务的站点,你就需要存储诸如个人简历,所感兴趣的工作等等这样的信息.创建动态网叶也需要使用数据库,如果你想显示符合来访者要求的最好的工作,你就需要从数据库中取出这份工作的信息.你将会发现,在许多情况下需要使用数据库. 在这一章里,你将学会怎样使用"结构化查询语言"(SQL]来操作数据库.SQL语言是数据库的标准语言.在Active SeverPages 中,无论何时你要访问一个数据库,你就要使用S