首页技术insert语句一次添加多行(insert into 多行)

insert语句一次添加多行(insert into 多行)

编程之家2026-05-221149次浏览

大家好,今天给各位分享insert语句一次添加多行的一些知识,其中也会对insert into 多行进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!

insert语句一次添加多行(insert into 多行)

怎样在sql中用insert语句往表中插入多行

如果数据很多的话建议可以用别的方法特别是数据量比较多的时候

ORACLE有一个SQLLODER功能

1.生成百万级的sql,保存SQL文件为getobject.sql

select a.owner||',"'||a.object_name||'",'||a.object_id||','||to_char(a.created,'yyyy-mm-dd hh24:mi:ss')||','||a.status

from dba_objects a,(select rownum from dual connect by rownum<= 20);

2.sql数据转换成数据文件,保存脚本为call.sql

insert语句一次添加多行(insert into 多行)

set echo off

set term off

set trimout on

set trimspool on

set pagesize 0

set feedback off

insert语句一次添加多行(insert into 多行)

set heading off

spool c:\getobject.csv

@c:\getobject.sql

set spool off

set heading on

set feedback on

set trimspool off

set trimout off

set term on

set echo on

注释:

set colsep'';//-域输出分隔符

set echo off;//显示start启动的脚本中的每个sql命令,缺省为on

set echo on//设置运行命令是是否显示语句

set feedback on;//设置显示“已选择XX行”

set feedback off;//回显本次sql命令处理的记录条数,缺省为on

set heading off;//输出域标题,缺省为on

set pagesize 0;//输出每页行数,缺省为24,为了避免分页,可设定为0。

set linesize 80;//输出一行字符个数,缺省为80

set numwidth 12;//输出number类型域长度,缺省为10

set termout off;//显示脚本中的命令的执行结果,缺省为on

set trimout on;//去除标准输出每行的拖尾空格,缺省为off

set trimspool on;//去除重定向(spool)输出每行的拖尾空格,缺省为off

set serveroutput on;//设置允许显示输出类似dbms_output

set timing on;//设置显示“已用时间:XXXX”

set autotrace on-;//设置允许对执行的sql进行分析

set verify off//可以关闭和打开提示确认信息old 1和new 1的显示.

3.运行call.sql生成数据文件

sqlplus hxadmin/secret as sysdba;

@c:\call.sql

4.初始化环境,创建导入表OBjects

create table OBJECTS

(

OWNER VARCHAR2(50),

OBJECT_NAME VARCHAR2(50),

OBJECT_ID NUMBER,

STATUS VARCHAR2(10),

CREATED DATE

)

5.生成导入控制文件,保存控制文件为ldr_object.ctl

LOAD DATA

INFILE getobject.csv

TRUNCATE INTO TABLE OBJECTS

FIELDS TERMINATED BY"," OPTIONALLY ENCLOSED BY'"' TRAILING NULLCOLS

(OWNER,

OBJECT_NAME,

OBJECT_ID,

CREATED date'yyyy-mm-dd hh24:mi:ss',

STATUS)

6.执行sqlldr命令

C:> sqlldr hxadmin/secret control= ldr_object.ctl direct= true

7.查看ldr_object.log日志文件

这个例子是我自己做的一个100W行的数据插入也只要10几秒。希望你能用到。

insert和update的区别

UPDATE

UPDATE的功能是更新表中的数据。这的语法和INSERT的第二种用法相似。必须提供表名以及SET表达式,在后面可以加WHERE以限制更新的记录范围。

UPDATE table_anem SET column_name1= value1, column_name2= value2,…

WHERE…;

如下面的语句将users表中id等于123的记录的age改为24

UPDATE users SET age= 24 WHERE id= 123;

同样,可以使用UPDATE更新多个字段的值 UPDATE users SET age= 24, name=‘Mike’ WHERE id= 123;

上面的UPDATE语句通过WHERE指定一个条件,否则,UPDATE将更新表中的所有记录的值。

在使用UPDATE更新记录时,如果被更新的字段的类型和所赋的值不匹配时,MySQL将这个值转换为相应类型的值。如果这个字段是数值类型,而且所赋值超过了这个数据类型的最大范围,那么MySQL就将这个值转换为这个范围最大或最小值。如果字符串太长,MySQL就将多余的字符串截去。如果设置非空字段为空,那么将这个字段设置为它们的默认值,数字的默认值是0,字符串的默认值是空串(不是null,是”")。

有两种情况UPDATE不会对影响表中的数据。

1.当WHERE中的条件在表中没有记录和它匹配时。

2.当我们将同样的值赋给某个字段时,如将字段abc赋为’123′,而abc的原值就是’123′。

和INSERT、REPLACE一样,UPDATE也返回所更新的记录数。但这些记录数并不包括满足WHERE条件的,但却未被更新的记录。如下同的UPDATE语句就未更新任何记录。

UPDATE users SET age= 30 WHERE id= 12;

Query OK, 0 rows affected(0.00 sec)

需要注意的时,如果一个字段的类型是TIMESTAMP,那么这个字段在其它字段更新时自动更新。

在有些时候我们需要得到UPDATE所选择的行数,而不是被更新的行数。我们可以通过一些API来达到这个目的。如MySQL提供的C API提供了一个选项可以得到你想要的记录数。而MySQL的JDBC驱动得到的默认记录数也是匹配的记录数。

UPDATE和REPLACE基本类似,但是它们之间有两点不同。

1. UPDATE在没有匹配记录时什么都不做,而REPLACE在有重复记录时更新,在没有重复记录时插入。

2. UPDATE可以选择性地更新记录的一部分字段。而REPLACE在发现有重复记录时就将这条记录彻底删除,再插入新的记录。也就是说,将所有的字段都更新了。

INSERT和REPLACE

INSERT和REPLACE语句的功能都是向表中插入新的数据。这两条语句的语法类似。它们的主要区别是如何处理重复的数据。

1. INSERT的一般用法

MySQL中的INSERT语句和标准的INSERT不太一样,在标准的SQL语句中,一次插入一条记录的INSERT语句只有一种形式。

INSERT INTO tablename(列名…) VALUES(列值);

而在MySQL中还有另外一种形式。

INSERT INTO tablename SET column_name1= value1, column_name2= value2,…;

第一种方法将列名和列值分开了,在使用时,列名必须和列值的数一致。如下面的语句向users表中插入了一条记录:

INSERT INTO users(id, name, age) VALUES(123,‘姚明’, 25);

第二种方法允许列名和列值成对出现和使用,如下面的语句将产生中样的效果。

INSERT INTO users SET id= 123, name=‘姚明’, age= 25;

如果使用了SET方式,必须至少为一列赋值。如果某一个字段使用了省缺值(如默认或自增值),这两种方法都可以省略这些字段。如id字段上使用了自增值,上面两条语句可以写成如下形式:

INSERT INTO users(name, age) VALUES(‘姚明’,25);

INSERT INTO uses SET name=‘姚明’, age= 25;

MySQL在VALUES上也做了些变化。如果VALUES中什么都不写,那MySQL将使用表中每一列的默认值来插入新记录。

INSERT INTO users() VALUES();

如果表名后什么都不写,就表示向表中所有的字段赋值。使用这种方式,不仅在VALUES中的值要和列数一致,而且顺序不能颠倒。 INSERT INTO users VALUES(123,‘姚明’, 25);

如果将INSERT语句写成如下形式MySQL将会报错。

INSERT INTO users VALUES(‘姚明’,25);

2.使用INSERT插入多条记录

看到这个标题也许大家会问,这有什么好说的,调用多次INSERT语句不就可以插入多条记录了吗!但使用这种方法要增加服务器的负荷,因为,执行每一次 SQL服务器都要同样对SQL进行分析、优化等操作。幸好MySQL提供了另一种解决方案,就是使用一条INSERT语句来插入多条记录。这并不是标准的 SQL语法,因此只能在MySQL中使用。

INSERT INTO users(name, age)

VALUES(‘姚明’, 25),(‘比尔.盖茨’, 50),(‘火星人’, 600);

上面的INSERT语句向users表中连续插入了3条记录。值得注意的是,上面的INSERT语句中的VALUES后必须每一条记录的值放到一对(…)中,中间使用”,”分割。假设有一个表table1

CREATE TABLE table1(n INT);

如果要向table1中插入5条记录,下面写法是错误的:

INSERT INTO table1(i) VALUES(1,2,3,4,5);

MySQL将会抛出下面的错误

ERROR 1136: Column count doesn’t match value count at row 1

而正确的写法应该是这样:

INSERT INTO t able1(i) VALUES(1),(2),(3),(4),(5);

当然,这种写法也可以省略列名,这样每一对括号里的值的数目必须一致,而且这个数目必须和列数一致。如:

INSERT INTO t able1 VALUES(1),(2),(3),(4),(5);

3. REPLACE语句

我们在使用数据库时可能会经常遇到这种情况。如果一个表在一个字段上建立了唯一索引,当我们再向这个表中使用已经存在的键值插入一条记录,那将会抛出一个主键冲突的错误。当然,我们可能想用新记录的值来覆盖原来的记录值。如果使用传统的做法,必须先使用DELETE语句删除原先的记录,然后再使用 INSERT插入新的记录。而在MySQL中为我们提供了一种新的解决方案,这就是REPLACE语句。使用REPLACE插入一条记录时,如果不重复,REPLACE就和INSERT的功能一样,如果有重复记录,REPLACE就使用新记录的值来替换原来的记录值。

使用REPLACE的最大好处就是可以将DELETE和INSERT合二为一,形成一个原子操作。这样就可以不必考虑在同时使用DELETE和INSERT时添加事务等复杂操作了。

在使用REPLACE时,表中必须有唯一索引,而且这个索引所在的字段不能允许空值,否则REPLACE就和INSERT完全一样的。

在执行REPLACE后,系统返回了所影响的行数,如果返回1,说明在表中并没有重复的记录,如果返回2,说明有一条重复记录,系统自动先调用了 DELETE删除这条记录,然后再记录用INSERT来插入这条记录。如果返回的值大于2,那说明有多个唯一索引,有多条记录被删除和插入。

REPLACE的语法和INSERT非常的相似,如下面的REPLACE语句是插入或更新一条记录。

REPLACE INTO users(id,name,age) VALUES(123,‘赵本山’, 50);

插入多条记录:

REPLACE INTO users(id, name, age)

VALUES(123,‘赵本山’, 50),(134,’Mary’,15);

REPLACE也可以使用SET语句

REPLACE INTO users SET id= 123, name=‘赵本山’, age= 50;

上面曾提到REPLACE可能影响3条以上的记录,这是因为在表中有超过一个的唯一索引。在这种情况下,REPLACE将考虑每一个唯一索引,并对每一个索引对应的重复记录都删除,然后插入这条新记录。假设有一个table1表,有3个字段a, b, c。它们都有一个唯一索引。

CREATE TABLE table1(a INT NOT NULL UNIQUE,b INT NOT NULL UNIQUE,c INT NOT NULL UNIQUE);

假设table1中已经有了3条记录

a b c

1 1 1

2 2 2

3 3 3

下面我们使用REPLACE语句向table1中插入一条记录。

REPLACE INTO table1(a, b, c) VALUES(1,2,3);

返回的结果如下

Query OK, 4 rows affected(0.00 sec)

在table1中的记录如下

a b c

1 2 3

我们可以看到,REPLACE将原先的3条记录都删除了,然后将(1, 2, 3)插入。

sql 语句问题

修改数据库的时候应该可以添加的是附属主数据文件,文件的扩展名是 ndf文件,下面谁 SQL SERVER2000的帮助文档

Transact-SQL参考

ALTER DATABASE

在数据库中添加或删除文件和文件组。也可用于更改文件和文件组的属性,例如更改文件的名称和大小。ALTER DATABASE提供了更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称的能力。

ALTER DATABASE支持数据库选项的设置。在早期版本的 Microsoft® SQL Server™中,这些选项可以通过 sp_dboption存储过程来设置。在此次发布的版本中,SQL Server继续支持 sp_dboption存储过程,但在未来版本中可能不再支持。可使用 DATABASEPROPERTYEX函数检索数据库选项的当前设置。

语法

ALTER DATABASE database

{ ADD FILE< filespec> [,...n ] [ TO FILEGROUP filegroup_name ]

| ADD LOG FILE< filespec> [,...n ]

| REMOVE FILE logical_file_name

| ADD FILEGROUP filegroup_name

| REMOVE FILEGROUP filegroup_name

| MODIFY FILE< filespec>

| MODIFY NAME= new_dbname

| MODIFY FILEGROUP filegroup_name{filegroup_property| NAME= new_filegroup_name}

| SET< optionspec> [,...n ] [ WITH< termination> ]

| COLLATE< collation_name>

}

< filespec>::=

( NAME= logical_file_name

[, NEWNAME= new_logical_name ]

[, FILENAME='os_file_name' ]

[, SIZE= size ]

[, MAXSIZE={ max_size| UNLIMITED} ]

[, FILEGROWTH= growth_increment ])

< optionspec>::=

<state_option>

|< cursor_option>

|< auto_option>

|< sql_option>

|< recovery_option>

< state_option>::=

{ SINGLE_USER| RESTRICTED_USER| MULTI_USER}

|{ OFFLINE| ONLINE}

|{ READ_ONLY| READ_WRITE}

< termination>::=

ROLLBACK AFTER integer [ SECONDS ]

| ROLLBACK IMMEDIATE

| NO_WAIT

< cursor_option>::=

CURSOR_CLOSE_ON_COMMIT{ ON| OFF}

| CURSOR_DEFAULT{ LOCAL| GLOBAL}

< auto_option>::=

AUTO_CLOSE{ ON| OFF}

| AUTO_CREATE_STATISTICS{ ON| OFF}

| AUTO_SHRINK{ ON| OFF}

| AUTO_UPDATE_STATISTICS{ ON| OFF}

< sql_option>::=

ANSI_NULL_DEFAULT{ ON| OFF}

| ANSI_NULLS{ ON| OFF}

| ANSI_PADDING{ ON| OFF}

| ANSI_WARNINGS{ ON| OFF}

| ARITHABORT{ ON| OFF}

| CONCAT_NULL_YIELDS_NULL{ ON| OFF}

| NUMERIC_ROUNDABORT{ ON| OFF}

| QUOTED_IDENTIFIER{ ON| OFF}

| RECURSIVE_TRIGGERS{ ON| OFF}

< recovery_option>::=

RECOVERY{ FULL| BULK_LOGGED| SIMPLE}

| TORN_PAGE_DETECTION{ ON| OFF}

参数

database

是要更改的数据库的名称。

ADD FILE

指定要添加文件。

TO FILEGROUP

指定要将指定文件添加到的文件组。

filegroup_name

是要添加指定文件的文件组名称。

ADD LOG FILE

指定要将日志文件添加到指定的数据库。

REMOVE FILE

从数据库系统表中删除文件描述并删除物理文件。只有在文件为空时才能删除。

ADD FILEGROUP

指定要添加文件组。

filegroup_name

是要添加或除去的文件组名称。

REMOVE FILEGROUP

从数据库中删除文件组并删除该文件组中的所有文件。只有在文件组为空时才能删除。

MODIFY FILE

指定要更改给定的文件,更改选项包括 FILENAME、SIZE、FILEGROWTH和 MAXSIZE。一次只能更改这些属性中的一种。必须在<filespec>中指定 NAME,以标识要更改的文件。如果指定了 SIZE,那么新大小必须比文件当前大小要大。只能为 tempdb数据库中的文件指定 FILENAME,而且新名称只有在 Microsoft SQL Server重新启动后才能生效。

若要更改数据文件或日志文件的逻辑名称,应在 NAME选项中指定要改名的逻辑文件名称,并在 NEWNAME选项中指定文件的新逻辑名称。

示例如下:

MODIFY FILE(NAME= logical_file_name, NEWNAME= new_logical_name...)。

可同时运行几个 ALTER DATABASE database MODIFY FILE语句以实现多个修改文件操作时性能最优。

MODIFY NAME= new_dbname

重命名数据库。

MODIFY FILEGROUP filegroup_name{ filegroup_property| NAME= new_filegroup_name}

指定要修改的文件组和所需的改动。

如果指定 filegroup_name和 NAME= new_filegroup_name,则将此文件组的名称改为 new_filegroup_name。

如果指定 filegroup_name和 filegroup_property,则表示给定文件组属性将应用于此文件组。filegroup_property的值有:

READONLY

指定文件组为只读。不允许更新其中的对象。主文件组不能设置为只读。只有具有排它数据库访问权限的用户才能将文件组标记为只读。

READWRITE

逆转 READONLY属性。允许更新文件组中的对象。只有具有排它数据库访问权限的用户才能将文件组标记为读/写。

DEFAULT

将文件组指定为默认数据库文件组。只能有一个数据库文件组是默认的。CREATE DATABASE语句将主文件组设置为初始的默认文件组。如果在 CREATE TABLE、ALTER TABLE或者 CREATE INDEX语句中没有指定文件组,则新表及索引将在默认文件组—中创建。

WITH<termination>

指定当数据库从一种状态转换到另一种状态时,何时回滚未完成的事务。只能指定一条 termination子句,而且该子句应跟在 SET子句后面。

ROLLBACK AFTER integer [SECONDS]| ROLLBACK IMMEDIATE

设定是在指定秒数之后回滚还是立即回滚。如果省略了 termination子句,那么将允许事务自主提交或回滚。

NO_WAIT

指定如果请求的数据库语句或选项更改只有等待事务自主提交或回滚才能立即完成,该请求将失败。

COLLATE< collation_name>

指定数据库的排序规则。排序规则名称既可以是 Windows排序规则名称,也可以是 SQL排序规则名称。如果没有指定排序规则,则将 SQL Server实例的默认排序规则指派为数据库的排序规则。

有关 Windows和 SQL排序规则名称的更多信息,请参见 COLLATE。

<filespec>

控制文件属性。

NAME

指定文件的逻辑名称。

logical_file_name

是在 Microsoft SQL Server中引用文件时所用的名称。该名称在数据库中必须唯一,并应遵循标识符规则。该名称可以是字符或 Unicode常量、常规标识符或定界标识符。有关更多信息,请参见使用标识符。

FILENAME

指定操作系统中的文件名。当和 MODIFY FILE一起使用时,只能对 tempdb数据库中的文件指定 FILENAME。新 tempdb文件名只有在 SQL Server停止并重新启动后才能生效。

'os_file_name'

由操作系统使用的文件的路径和文件名。该文件必须驻留在安装 SQL Server的服务器上。数据文件和日志文件不应置于压缩的文件系统中。

如果文件位于原始分区上,那么 os_file_name必须仅指定该原始分区的驱动器字母。每个原始分区上只能存放一个文件。原始分区上的文件不会自动增长;因此,os_file_name指定原始分区时,不需要指定 MAXSIZE和 FILEGROWTH参数。

SIZE

指定文件大小。

size

是文件的大小。后缀 KB、MB、GB和 TB可用于指定千字节、兆字节、千兆字节或兆兆字节。默认值为 MB。指定一个整数,不要包含小数位。size的最小值是 512 KB,如果 size未指定,默认值是 1 MB。当随 ADD FILE一起指定时,size是文件的初始大小。当随 MODIFY FILE一起指定时,size是文件的新大小,而且必须大于文件的当前大小。

MAXSIZE

指定最大的文件大小。

max_size

是最大的文件大小。后缀 KB、MB、GB和 TB可用于指定千字节、兆字节、千兆字节或兆兆字节。默认值为 MB。指定一个整数,不要包含小数位。如果没有指定 max_size,那么文件大小将一直增长,直至磁盘填满为止。当磁盘即将填满时,Microsoft Windows NT®应用程序日志将向管理员发出警告。

UNLIMITED

指定文件大小可一直增加直至磁盘已满。

FILEGROWTH

指定文件增长的增量。

growth_increment

每次需要新的空间时为文件添加的空间大小。值为 0表示不增长。该值可按 MB、KB或%的形式指定。指定一个整数,不要包含小数位。如果指定了%,那么文件增量为文件发生增长时文件大小的指定百分比。如果未在数量后面指定 MB、KB或%,则默认值为 MB。如果 FILEGROWTH未指定,默认值为 10%,且最小值为 64 KB。指定的大小舍入为最接近的 64 KB的倍数。

<state_option>

控制用户对数据库的访问,数据库是否处于联机状态,以及是否允许写操作。

SINGLE_USER| RESTRICTED_USER| MULTI_USER

控制哪些用户可以访问数据库。如果指定为 SINGLE_USER,那么同一时间只能有一个用户访问数据库。如果指定为 RESTRICTED_USER,那么只有 db_owner、dbcreator或 sysadmin角色的成员可以使用数据库。MULTI_USER使数据库返回到正常操作状态。

OFFLINE| ONLINE

控制数据库是联机还是脱机。

READ_ONLY| READ_WRITE

指定数据库是否处于只读模式。在只读模式下,用户可以从数据库中读取数据,但不能修改数据。当指定 READ_ONLY时,数据库不能处于使用状态。master数据库是一个例外,当该数据库设置为 READ_ONLY时,只有系统管理员才能使用该数据库。READ_WRITE使数据库返回到读写操作状态。

<cursor_option>

控制游标选项。

CURSOR_CLOSE_ON_COMMIT ON| OFF

如果指定为 ON,在事务提交或回滚时所有打开的游标都将关闭。如果指定为 OFF,那么在事务提交时打开的游标仍保持打开;而回滚事务时关闭所有除定义为 INSENSITIVE或 STATIC之外的游标。

CURSOR_DEFAULTLOCAL| GLOBAL

控制游标作用域默认为 LOCAL还是 GLOBAL。

<auto_option>

控制自动选项。

AUTO_CLOSE ON| OFF

如果指定为 ON,那么最后一个用户退出后,数据库将干净地关闭,其占用的资源将释放。如果指定为 OFF,那么最后一个用户退出后数据库仍保持打开。

AUTO_CREATE_STATISTICS ON| OFF

如果指定为 ON,那么所有优化查询需要但缺少的统计信息都会在查询优化时自动生成。

AUTO_SHRINK ON| OFF

如果指定为 ON,数据库文件将定期自动收缩。

AUTO_UPDATE_STATISTICS ON| OFF

如果指定为 ON,所有查询优化所需的过时的统计信息在都将在优化时自动重建。如果指定为 OFF,统计信息必须手工更新。

<sql_option>

控制 ANSI遵从性选项。

ANSI_NULL_DEFAULT ON| OFF

如果指定为 ON,CREATE TABLE在确定列是否允许空值时遵从 SQL-92规则。

ANSI_NULLS ON| OFF

如果指定为 ON,所有与空值的比较运算结果为 UNKNOWN。如果指定为 OFF,非 UNICODE值与空值的比较运算在两者均为 NULL时结果为 TRUE。

ANSI_PADDING ON| OFF

如果指定为 ON,在比较或插入前,字符串将填充为同一长度。如果指定为 OFF,字符串将不填充。

ANSI_WARNINGS ON| OFF

如果指定为 ON,当出现诸如被零除的情况时将产生错误或警告。

ARITHABORT ON| OFF

如果指定为 ON,在执行查询时如果发生溢出或被零除,该查询将终止。

CONCAT_NULL_YIELDS_NULL ON| OFF

如果指定为 ON,当串联操作的两个操作数中任意一个为 NULL时,结果也为 NULL。如果指定为 OFF,空值将按空字符串对待。默认设置为 OFF。

QUOTED_IDENTIFIER ON| OFF

如果指定为 ON,双引号将可用于包含定界标识符。

NUMERIC_ROUNDABORT ON| OFF

如果指定为 ON,当表达式中出现精度损失时将产生错误。

RECURSIVE_TRIGGERS ON| OFF

如果指定为 ON,将允许递归激发触发器。RECURSIVE_TRIGGERS OFF(默认值)只禁止直接递归。若要也禁用间接递归,请使用 sp_configure将 nested triggers服务器选项设置为 0。

<recovery_options>

控制数据库恢复选项。

RECOVERY FULL| BULK_LOGGED| SIMPLE

如果指定为 FULL,系统将对介质错误提供完全保护。如果数据文件损坏,介质恢复可以还原所有已提交的事务。

如果指定为 BULK_LOGGED,将在介质错误保护程度与某些大规模或大容量操作的最优性能及日志存储空间最少占用量之间进行权衡。这些操作包括 SELECT INTO、大容量装载操作(bcp和 BULK INSERT)、CREATE INDEX以及文本和图象操作(WRITETEXT和 UPDATETEXT)。

在大容量日志记录恢复模型下,对整个类只做最少的日志记录,并且无法逐个操作地控制日志记录行为。

如果指定为 SIMPLE,系统将提供占用日志空间最小的备份策略。服务器故障恢复不再需要的日志空间可被自动重用。

重要简单恢复模型比其它两种模型更容易管理,但数据文件损坏时造成数据丢失的可能性更大。最近的数据库备份或差异数据库备份之后的更改都将丢失,必须手工重新输入。

默认恢复模型由 model数据库的恢复模型确定。若要更改新数据库的默认值,请用 ALTER DATABASE设置 model数据库的恢复选项。

TORN_PAGE_DETECTION ON| OFF

如果指定为 ON,将可以检测到未完成的页。默认设置为 ON。

注释

若要删除数据库,请使用 DROP DATABASE语句。若要更改数据库名称,请使用 sp_renamedb。有关减小数据库大小的更多信息,请参见 DBCC SHRINKDATABASE。

在对数据库应用不同的或新的排序规则时,应确保符合以下条件:

您是当前数据库的唯一用户。

没有依赖数据库排序规则的架构绑定对象。

如果数据库中存在以下依赖数据库排序规则的对象,则 ALTER DATABASE database COLLATE语句将失败。SQL Server将针对每一个阻塞 ALTER操作的对象返回一个错误信息:

通过 SCHEMABINDING创建的用户定义函数和视图。

计算列。

CHECK约束。

表值函数返回包含字符列的表,这些列继承了默认的数据库排序规则。

改变数据库的排序规则不会在任何数据对象的系统名称中产生重复名称。

如果改变排序规则后出现重复的名称,则下列命名空间可能导致改变数据库排序规则的操作失败:

对象名(如过程、表、触发器或视图)。

架构名(如组、角色或用户)。

标量类型名(如系统和用户定义类型)。

全文目录名称。

对象内的列名或参数名。

表范围内的索引名。

由新的排序规则产生的重复名称将导致改变操作失败,SQL Server将返回错误信息,指出重复名称所在的命名空间。

当 BACKUP语句正在执行时,不能添加或删除文件。

若要在 size参数中指定兆字节的分数,应通过乘以数字 1024将该值转换为千字节。例如,应指定 1536 KB而不是 1.5MB(1.5 x 1024= 1536)。

权限

ALTER DATABASE权限默认授予 sysadmin和 dbcreator固定服务器角色成员以及 db_owner固定数据库角色成员。这些权限是不可传递的。

示例

A.向数据库中添加文件

下例创建数据库,并更改该数据库以添加一个 5 MB大小的新数据文件。

USE master

GO

CREATE DATABASE Test1 ON

(

NAME= Test1dat1,

FILENAME='c:\Program Files\Microsoft SQL Server\MSSQL\Data\t1dat1.ndf',

SIZE= 5MB,

MAXSIZE= 100MB,

FILEGROWTH= 5MB

)

GO

ALTER DATABASE Test1

ADD FILE

(

NAME= Test1dat2,

FILENAME='c:\Program Files\Microsoft SQL Server\MSSQL\Data\t1dat2.ndf',

SIZE= 5MB,

MAXSIZE= 100MB,

FILEGROWTH= 5MB

)

GO

B.向数据库中添加由两个文件组成的文件组

下例在示例 A中所创建的 Test1数据库中创建一个文件组,并将两个 5 MB的文件添加到该文件组。然后下例将 Test1FG1设置为默认文件组。

USE master

GO

ALTER DATABASE Test1

ADD FILEGROUP Test1FG1

GO

ALTER DATABASE Test1

ADD FILE

( NAME= test1dat3,

FILENAME='c:\Program Files\Microsoft SQL Server\MSSQL\Data\t1dat3.ndf',

SIZE= 5MB,

MAXSIZE= 100MB,

FILEGROWTH= 5MB),

( NAME= test1dat4,

FILENAME='c:\Program Files\Microsoft SQL Server\MSSQL\Data\t1dat4.ndf',

SIZE= 5MB,

MAXSIZE= 100MB,

FILEGROWTH= 5MB)

TO FILEGROUP Test1FG1

ALTER DATABASE Test1

MODIFY FILEGROUP Test1FG1 DEFAULT

GO

C.向数据库中添加两个日志文件

下例向数据库中添加两个 5 MB大小的日志文件。

USE master

GO

ALTER DATABASE Test1

ADD LOG FILE

( NAME= test1log2,

FILENAME='c:\Program Files\Microsoft SQL Server\MSSQL\Data\test2log.ldf',

SIZE= 5MB,

MAXSIZE= 100MB,

FILEGROWTH= 5MB),

( NAME= test1log3,

FILENAME='c:\Program Files\Microsoft SQL Server\MSSQL\Data\test3log.ldf',

SIZE= 5MB,

MAXSIZE= 100MB,

FILEGROWTH= 5MB)

GO

D.从数据库中删除文件

下例将示例 B中添加到数据库 Test1中的一个文件删除。

USE master

GO

ALTER DATABASE Test1

REMOVE FILE test1dat4

GO

E.更改文件

下例将示例 B中添加到数据库 Test1中的一个文件增加大小。

USE master

GO

ALTER DATABASE Test1

MODIFY FILE

(NAME= test1dat3,

SIZE= 20MB)

GO

F.将主文件组设置为默认文件组

假定原来另一个文件组设置为默认文件组,下例将主文件组设置为默认文件组。

USE master

GO

ALTER DATABASE MyDatabase

MODIFY FILEGROUP [PRIMARY] DEFAULT

GO

请参见

CREATE DATABASE

DROP DATABASE

sp_helpdb

sp_helpfile

sp_helpfilegroup

sp_renamedb

sp_spaceused

使用恢复模型

©1988-2000 Microsoft Corporation。保留所有权利。

insert语句一次添加多行的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于insert into 多行、insert语句一次添加多行的信息别忘了在本站进行查找哦。

java好玩的代码,java烟花代码java程序软件 java语言编程软件