SQL语句总结

时间:2024.4.13

重置自增字段

truncate table tablename ----- 删除原表数据,并重置自增列

DBCC CHECKIDENT (tablename,reseed,0) --重置表的自增字段,保留数据

开关自增字段

SET IDENTITY_INSERT TableNameON

INSERT INTO语句

SET IDENTITY_INSERT TableName OFF

查询或删除相同前缀的表

SELECTnameFROMSysObjectsWhereXType='U'andnamelike'DB_D_MacroDB_Y_C%' SELECTnameFROMSysObjectsWhereXType='U'andnamelike'DB_D_IndustryDB_Y_C%'

SELECTnameFROMSysObjectsWhereXType='U'andnamelike'DB_D_MacroDB_M_C%' SELECTnameFROMSysObjectsWhereXType='U'andnamelike'DB_D_IndustryDB_M_C%'

DECLARE@TableNVARCHAR(30)

DECLAREtmpCurCURSORFOR

SELECTnameFROMsys.objectsWHERETYPE='U'ANDnamelike'DB_D_IndustryDB_M_C%'

OPENtmpCur

FETCHNEXTFROMtmpCurINTO@Table

WHILE@@FETCH_STATUS= 0

BEGIN

DECLARE@sqlVARCHAR(100)

SELECT@sql='drop table '+@Table

EXEC(@sql)

FETCHNEXTFROMtmpCurINTO@Table

END

CLOSEtmpCur

DEALLOCATEtmpCur

数据库单用户多用户设置

设置数据库为单用户:

? ALTER DATABASE [dbname] SET SINGLE_USER

? 右键点击数据库 ->属性 ->选项 ->状态 ->限制访问 ->选择Single->确定。 设置数据库为多用户:

? ALTER DATABASE [dbname] SET MULTI_USER

? 右键点击数据库 ->属性 ->选项 ->状态 ->限制访问 ->选择Multiple ->确定。 尝试在数据库*中提取逻辑页失败

SQL语句总结

1. DBCC CHECKDB

启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误。

Sql代码:

use master

declare @databasenamevarchar(255)

set @databasename='需要修复的数据库名称'

exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态 dbcccheckdb(@databasename,REPAIR_ALLOW_DATA_LOSS)

dbcccheckdb(@databasename,REPAIR_REBUILD)

exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态 然后执行 DBCC CHECKDB('需要修复的数据库名称') 检查数据库是否仍旧存在错误。 注意:修复后可能会造成部分数据的丢失。

2. DBCC CHECKTABLE

如果DBCC CHECKDB 检查仍旧存在错误,可以使用DBCC CHECKTABLE来修复。

Sql代码:

use 需要修复的数据库名称

declare @dbnamevarchar(255)

set @dbname='需要修复的数据库的名称'

execsp_dboption @dbname,'single user','true'

dbccchecktable('需要修复的数据表的名称',REPAIR_ALLOW_DATA_LOSS)

dbccchecktable('需要修复的数据表的名称',REPAIR_REBUILD)

需要修复的数据表的名称:执行DBCC CHECKDB时报错的数据表的名称

execsp_dboption @dbname,'single user','false'

3. 其他的一些常用的修复命令

DBCC DBREINDEX 重建指定数据库中表的一个或多个索引

Sql代码:

DBCC DBREINDEX (表名,’’) 修复此表所有的索引。

4.DBCC CHECKALLOC

检查指定数据库的磁盘空间分配结构的一致性

sqlserver中文件组Filegroup的使用

数据库的操作:

1. 对数据文件的操作(添加,删除,修改文件的初始大小,最大大小,步长)

2. 数据库文件的收缩

3. 数据库的只读/读写read_only只读read_write可读写read_only表示只读read_write表示可读可写

4. 数据库的限制访问(单用户,多用户,限制用户模式)

5.数据库脱机/联机 offline 脱机 alter database love set offline online 联机 alter database love set online

6. 数据库附加/分离。sp_attach_db附加SP_detach_db分离附加sp_attach_db分离sp_detach_db offline 脱机 online 联机

文件组:

文件组:对数据文件的管理单元,即文件的集合、

文件组的优势:

1. 对文件的管理,分类管理(将所有存放财务的数据放在一个文件组中,也可以所有关于人事的数据放在一个文件组).

2. 文件组增加数据读写的速度。

特点:

1. 一个数据库至少一个文件组,当数据库创建成功后,将自动创建文件组(primary文件组).

2. 文件组只能存放数据文件(mdf,ndf),ldf文件不能放入到文件组中.

3. 一旦文件加入到文件组,不能切换文件组了。

文件组的类型:

1. 主文件组

无法删除,primary 文件组,统创建的,放两种类型的文件,数据库mdf文件,存放没有单独指定文件组的文件,在添加ndf文件时,如果没有指定文件组,文件默认存放的文件组. 据库中文件必须放在文件组中。因为:数据库---文件组--文件。

2. 用户自定义文件组

用户创建的,当添加ndf文件时,明确指定文件组的文件,可以删除。

文件组是一个或多个文件的集合,是构成分配和数据管理的单个逻辑单元(是sqlserver中对多个物理数据文件的管理单位)。

Sql服务器包括主文件组(系统自动创建的)和其他用户自定义的文件组

主文件组包括系统表的主数据文件(primary),他包括所有数据库中的系统表,以及所有没有在用户自定义的文件组中所指定的对象和数据, 一个数据库只有一个主文件组

用户自定义文件组包括出于分配和管理目的而分组的数据文件(ndf)

事务日志文件不能存放在任意一个文件组中

文件组允许对文件进行分组,以便于管理和数据的分配/放置。例如,可以分别在三个硬盘驱动器上创建三个文件(Data1.ndf、Data2.ndf 和 Data3.ndf),并将这三个文件指派到文件组 fgroup1 中。然后,可以明确地在文件组 fgroup1 上创建一个表。对表中数据的查询将分散到三个磁盘上,因而性能得以提高。

如果文件组是由在不同物理磁盘中展开的多个文件组成,而且每个磁盘都有自己的磁盘控制器,则对表中数据的查询将在这些磁盘中展开,从而提高查询性能

问题:

1. 如何查看数据库中所有的文件组。

语法:sp_helpfilegroup

步骤:

use 数据库

sp_helpfilegroup

2. 如何找到文件组和文件的对应情况.

sp_helpdb love

创建文件组。

语法:

alter database 数据库名 add filegroup文件组名

步骤:

use 数据库名

alter database 数据库名 add filegroup文件组名

范例:

use love

alter database love add filegroup财务部

将文件放入到文件组中

语法:

alter database 数据库名 add file(name='xxx',filename='文件的物理路径',

size='初始大小',maxsize="最大大小',filegrowth=步长) --添加文件,并且将文件放入到默认文件组(primary文件组)

alter database love

add file

(name='love_n1',filename='c:love_n1.ndf')

alter database 数据库名 add file(name='xxx',filename='文件的物理路径',

size='初始大小',maxsize="最大大小',filegrowth=步长) to filegroup文件组名

alter database love

add file

(name='love_n2',filename='c:love_n2.ndf')

to filegroup财务部

数据-->primary-->love文件和love_n1

数据-->财务部-->love_n2

3.数据如何放入到文件组中

数据库中利用表保存和处理数据

数据--表-->文件组--数据文件

指定表和文件组的关系

语法:

create table 表名(xxxxxx) on 文件组

步骤:

use 数据库

create table语法 on 表名

范例:

create table renshi(id int not null,

namevarchar(50) not null, salary money not null)

on 财务部

1. 创建数据库(nnn),如果存在,先删除,再创建.

2. 向数据库nnn添加文件组(f1)

3. 向数据库nnn添加文件,并且放在f1中。

4. 查询文件组f1中的文件情况.

5. 创建表,并制定放置f1中。

6. 查询表和文件组的关系。

范例:

create database nnn

usennn

alter database nnn add filegroup f1

alter database nnn add file(name='kk',filename='d:kk.ndf') to filegroup f1

sp_helpfilegroup f1

create table renshi(id int not null,

namevarchar(50) not null, salary money not null) on f1

sp_helprenshi

4.删除文件组

语法:

alter database 数据库名 remove filegroup文件组名

注意:

1. 删除所有放置在文件组中的表

2. 删除文件组中文件

sp_helpdb数据库名

3. 删除文件组

范例:

drop table renshi

alter database love remove file love_n2

alter database love remove filegroup财务部

在这里我申明一下对于文件组来说: 对文件组的使用方法一定要步骤来实施,不然到时候删除回出错的,步骤如下:首先创建一个文件组然后创建一个辅助数据库文件

ndf到文件组当中然后创建一个表放到文件组的里面简写步骤就是: 文件组 ---->文件(ndf)------表>

然后在删除的时候与创建的时候恰好相反简写步骤是: 表--》文件---》文件组记住千万不要搞错了哈!!不然删除的时候就会出现很多麻烦的啦!!!

5.返回当前数据库中所有的表和文件组的对应关系。

创建表时,必须人工指定文件组,否则,默认放在primary文件组

假设,将所有创建的表都放置用户自定义文件组

问题:每次创建表时,必须人工指定,否则到primary文件组,如果创建时,忘记设置,则必须删除表,重新创建

数据库的默认文件组

默认文件组:在创建表时,不指定文件组,即表默认属于的文件组,默认情况下,primary文件组为数据库的默认文件组.

修改数据库的默认文件组:

语法:

alter database 数据库名 modify filegroup文件组名 default

步骤:

use 数据库名

alter database语法:

注意:设置为默认文件组的文件组中必须包含至少一个文件。

范例:

alter database love

add filegroup人事部

alter database love

add file

(name='love_n2',filename='c:love_n2.ndf')

to filegroup人事部

use love

alter database love modify filegroup人事部 default

create table renshi

(idint,namevarchar(50))

sp_helprenshi


第二篇:SQL语句大全 总结


--语 句 功 能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据--数据定义CREATE TABLE --创建一个数据库表DROP TABLE --从数据库中删除表ALTER TABLE --修改数据库表结构CREATE VIEW --创建一个视图DROP VIEW --从数据库中删除视图CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引CREATE PROCEDURE --创建一个存储过程DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器DROP TRIGGER --从数据库中删除触发器CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域ALTER DOMAIN --改变域定义DROP DOMAIN --从数据库中删除一个域--数据控制GRANT --授予用户访问权限DENY --拒绝用户访问REVOKE --解除用户访问权限--事务控制COMMIT --结束当前事务ROLLBACK --中止当前事务SET TRANSACTION --定义当前事务数据访问特征--程序化SQLDECLARE --为查询设定游标EXPLAN --为查询描述数据访问计划OPEN --检索查询结果打开一个游标FETCH --检索一行查询结果CLOSE --关闭游标PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句DESCRIBE --描述准备好的查询 ---局部变量declare @id char(10)--set @id = '10010001'select @id = '10010001' ---全局变量---必须以@@开头--IF ELSEdeclare @x int @y int @z intselect @x = 1 @y = 2 @z=3if @x > @yprint 'x > y' --打印字符串'x > y'else if @y > @zprint 'y > z'else print 'z > y'--CASEuse panguupdate employeeset e_wage =casewhen job_level = ’1’ then e_wage*1.08when job_level = ’2’ then e_wage*1.07when job_level = ’3’ then e_wage*1.06else e_wage*1.05end--WHILE CONTINUE BREAKdeclare @x int @y int @c intselect @x = 1 @y=1while @x < 3beginprint @x --打印变量x 的值while @y < 3beginselect @c = 100*@x + @yprint @c --打印变量c 的值select @y = @y + 1endselect @x = @x + 1select @y = 1end--WAITFOR--例 等待1 小时2 分零3 秒后才执行SELECT 语句waitfor delay ’01:02:03’select * from employee--例 等到晚上11 点零8 分后才执行SELECT 语句waitfor time ’23:08:00’select * from employee***SELECT***select *(列名) from table_name(表名) where column_name operator valueex:(宿主)select * from stock_information where stockid = str(nid)stockname = 'str_name' stockname like '% find this %' stockname like '[a-zA-Z]%' --------- ([]指定值的范围)stockname like '[^F-M]%' --------- (^排除指定范围)--------- 只能在使用like关键字的where子句中使用通配符)or stockpath = 'stock_path'or stocknumber < 1

000and stockindex = 24not stock*** = 'man'stocknumber between 20 and 100stocknumber in(10,20,30)order by stockid desc(asc) --------- 排序,desc-降序,asc-升序order by 1,2 --------- by列号stockname = (select stockname from stock_information where stockid = 4)--------- 子查询--------- 除非能确保内层select只返回一个行的值,--------- 否则应在外层where子句中用一个in限定符select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_nameselect stockname , "stocknumber" = count(*) from table_name group by stockname--------- group by 将表按行分组,指定列中有相同的值having count(*) = 2 --------- having选定指定的组select * from table1, table2 where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示table1.id =* table2.id -------- 右外部连接 select stockname from table1union [all] ----- union合并查询结果集,all-保留重复行select stockname from table2***insert***insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")value (select Stockname , Stocknumber from Stock_table2)---value为select语句***update***update table_name set Stockname = "xxx" [where Stockid = 3]Stockname = defaultStockname = nullStocknumber = Stockname + 4***delete***delete from table_name where Stockid = 3truncate table_name ----------- 删除表中所有行,仍保持表的完整性drop table table_name --------------- 完全删除表***alter table*** --- 修改数据库表结构alter table database.owner.table_name add column_name char(2) null .....sp_help table_name ---- 显示表已有特征create table table_name (name char(20), age smallint, lname varchar(30))insert into table_name select ......... ----- 实现删除列的方法(创建新表)alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束***function(/*常用函数*/)***----统计函数----AVG --求平均值COUNT --统计数目MAX --求最大值MIN --求最小值SUM --求和--AVGuse panguselect avg(e_wage) as dept_avgWagefrom employeegroup by dept_id--MAX--求工资最高的员工姓名use panguselect e_namefrom employeewhere e_wage =(select max(e_wage)from employee)--STDEV()--STDEV()函数返回表达式中所有数据的标准差--STDEVP()--STDEVP()函数返回总体标准差--VAR()--VAR()函数返回表达式中所有值的统计变异数--VARP()--VARP()函数返回总体变异数----算术函数----/***三角函数***/SIN(float_expression) --返回以弧度表示的角的正弦COS(float_expression) --返回以弧度表示的角的余弦TAN(float_expression) --返回以弧度表

示的角的正切COT(float_expression) --返回以弧度表示的角的余切/***反三角函数***/ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角ATAN2(float_expression1,float_expression2) --返回正切是float_expression1 /float_expres-sion2的以弧度表示的角DEGREES(numeric_expression)--把弧度转换为角度返回与表达式相同的数据类型可为--INTEGER/MONEY/REAL/FLOAT 类型RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为--INTEGER/MONEY/REAL/FLOAT 类型EXP(float_expression) --返回表达式的指数值LOG(float_expression) --返回表达式的自然对数值LOG10(float_expression)--返回表达式的以10 为底的对数值SQRT(float_expression) --返回表达式的平方根/***取近似值函数***/CEILING(numeric_expression) --返回>=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型FLOOR(numeric_expression) --返回<=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型ROUND(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型ABS(numeric_expression) --返回表达式的绝对值返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型SIGN(numeric_expression) --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型--与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型PI() --返回值为π 即3.1415926535897936RAND([integer_expression]) --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数----字符串函数----ASCII() --函数返回字符表达式最左端字符的ASCII 码值CHAR() --函数用于将ASCII 码转换为字符--如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值LOWER() --函数把字符串全部转换为小写UPPER() --函数把字符串全部转换为大写STR() --函数把数值型数据转换为字符型数据LTRIM() --函数把字符串头部的空格去掉RTRIM() --函数把字符串尾部的空格去掉LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置SOUNDEX() --函数返回一个四位字符码 --SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值 DIFFERENCE() --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异--0 两个SOUNDEX 函数返回值的第一个字符不同--1 两个SOUNDEX 函数返回值的第一个字符相同--2 两个SOUNDEX 函数返回值的第一二个字符相同--3 两个SOUNDEX 函数返

回值的第一二三个字符相同--4 两个SOUNDEX 函数返回值完全相同QUOTENAME() --函数返回被特定字符括起来的字符串/*select quotename('abc', '{') quotename('abc')运行结果如下----------------------------------{{abc} [abc]*/REPLICATE() --函数返回一个重复character_expression 指定次数的字符串/*select replicate('abc', 3) replicate( 'abc', -2)运行结果如下----------- -----------abcabcabc NULL*/REVERSE() --函数将指定的字符串的字符排列顺序颠倒REPLACE() --函数返回被替换了指定子串的字符串/*select replace('abc123g', '123', 'def')运行结果如下----------- -----------abcdefg*/SPACE() --函数返回一个有指定长度的空白字符串STUFF() --函数用另一子串替换字符串指定位置长度的子串----数据类型转换函数----CAST() 函数语法如下CAST() (<expression> AS <data_ type>[ length ])CONVERT() 函数语法如下CONVERT() (<data_ type>[ length ], <expression> [, style])select cast(100+99 as char) convert(varchar(12), getdate())运行结果如下------------------------------ ------------199 Jan 15 2000----日期函数----DAY() --函数返回date_expression 中的日期值MONTH() --函数返回date_expression 中的月份值YEAR() --函数返回date_expression 中的年份值DATEADD(<datepart> ,<number> ,<date>) --函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期DATEDIFF(<datepart> ,<number> ,<date>)--函数返回两个指定日期在datepart 方面的不同之处DATENAME(<datepart> , <date>) --函数以字符串的形式返回日期的指定部分DATEPART(<datepart> , <date>) --函数以整数值的形式返回日期的指定部分GETDATE() --函数以DATETIME 的缺省格式返回系统当前的日期和时间----系统函数----APP_NAME() --函数返回当前执行的应用程序的名称COALESCE() --函数返回众多表达式中第一个非NULL 表达式的值COL_LENGTH(<'table_name'>, <'column_name'>) --函数返回表中指定字段的长度值COL_NAME(<table_id>, <column_id>) --函数返回表中指定字段的名称即列名DATALENGTH() --函数返回数据表达式的数据的实际长度DB_ID(['database_name']) --函数返回数据库的编号DB_NAME(database_id) --函数返回数据库的名称HOST_ID() --函数返回服务器端计算机的名称HOST_NAME() --函数返回服务器端计算机的名称IDENTITY(<data_type>[, seed increment]) [AS column_name])--IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中/*select identity(int, 1, 1) as column_nameinto newtablefrom oldtable*/ISDATE() --函数判断所给定的表达式是否为合理日期ISNULL(<check_expression>, <replacement_value>) --函数将表达式中的NULL 值用指定值替换ISNUMERIC() --函数判断所给定的表达

式是否为合理的数值NEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值NULLIF(<expression1>, <expression2>)--NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值sql中的保留字action add aggregate all alter after and as asc avg avg_row_length auto_increment between bigint bit binary blob bool both by cascade case char character change check checksum column columns comment constraint create cross current_date current_time current_timestamp data database databases date datetime day day_hour day_minute day_second dayofmonth dayofweek dayofyear dec decimal default delayed delay_key_write delete desc describe distinct distinctrow double drop end else escape escaped enclosed enum explain exists fields file first float float4 float8 flush foreign from for full function global grant grants group having heap high_priority hour hour_minute hour_second hosts identified ignore in index infile inner insert insert_id int integer interval int1 int2 int3 int4 int8 into if is isam join key keys kill last_insert_id leading left length like lines limit load local lock logs long longblob longtext low_priority max max_rows match mediumblob mediumtext mediumint middleint min_rows minute minute_second modify month monthname myisam natural numeric no not null on optimize option optionally or order outer outfile pack_keys partial password precision primary procedure process processlist privileges read real references reload regexp rename replace restrict returns revoke rlike row rows second select set show shutdown smallint soname sql_big_tables sql_big_selects sql_low_priority_updates sql_log_off sql_log_update sql_select_limit sql_small_result sql_big_result sql_warnings straight_join starting status string table tables temporary terminated text then time timestamp tinyblob tinytext tinyint trailing to type use using unique unlock unsigned update usage values varchar variables varying varbinary with write when where year year_month zerofillSQL语句导入导出大全/******* 导出到excelEXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""' /*********** 导入ExcelSELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions/*动态文件名declare @fn varchar(20),@s varchar(1000)set @fn = 'c:test.xls'set @s ='''Microsoft.Jet.OLEDB.4.0'',''Data Source="'+@fn+'";User ID=Admin;Password=;Extended properties=Excel 5.0'''set @s = 'SELECT * FROM OpenDataSource ('+@s+')...sheet1$'exec(@s)*//*************导出到Access********************/insert into openrowset('Microsoft.Jet.OLEDB.4.0', 'x:A.mdb';'admin';'',A表) select * from 数据库名..B表/*************导入

Access********************/insert into B表 selet * from openrowset('Microsoft.Jet.OLEDB.4.0', 'x:A.mdb';'admin';'',A表)文件名为参数declare @fname varchar(20)set @fname = 'd:test.mdb'exec('SELECT a.* FROM opendatasource(''Microsoft.Jet.OLEDB.4.0'','''+@fname+''';''admin'';'''', topics) as a ')SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="f:northwind.mdb";Jet OLEDB database Password=123;User ID=Admin;Password=;')...产品********************* 导入 xml 文件DECLARE @idoc intDECLARE @doc varchar(1000)--sample XML documentSET @doc ='Customer was very satisfiedImportantHappy Customer.'-- Create an internal representation of the XML document.EXEC sp_xml_preparedocument @idoc OUTPUT, @doc-- Execute a SELECT statement using OPENXML rowset provider.SELECT *FROM OPENXML (@idoc, '/root/Customer/Order', 1)WITH (oid char(5), amount float, comment ntext 'text()')EXEC sp_xml_removedocument @idoc???????/**********************Excel导到Txt****************************************/想用select * into opendatasource(...) from opendatasource(...)实现将一个Excel文件内容导入到一个文本文件假设Excel中有两列,第一列为姓名,第二列为很行帐号(16位)且银行帐号导出到文本文件后分两部分,前8位和后8位分开。邹健:如果要用你上面的语句插入的话,文本文件必须存在,而且有一行:姓名,银行账号1,银行账号2然后就可以用下面的语句进行插入注意文件名和目录根据你的实际情况进行修改.insert intoopendatasource('MICROSOFT.JET.OLEDB.4.0','Text;HDR=Yes;DATABASE=C:')...[aa#txt]--,aa#txt)--*/select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8) from opendatasource('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:a.xls'--,Sheet1$))...[Sheet1$]如果你想直接插入并生成文本文件,就要用bcpdeclare @sql varchar(8000),@tbname varchar(50)--首先将excel表内容导入到一个全局临时表select @tbname='[##temp'+cast(newid() as varchar(40))+']',@sql='select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8) into '+@tbname+' from opendatasource(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:a.xls'')...[Sheet1$]'exec(@sql)--然后用bcp从全局临时表导出到文本文件set @sql='bcp "'+@tbname+'" out "c:aa.txt" /S"(local)" /P"" /c'exec master..xp_cmdshell @sql--删除临时表exec('drop table '+@tbname)/*************导出到Access********************/insert into openrowset('Microsoft.Jet.OLEDB.4.0', 'x:A.mdb';'admin';'',A表) select * from 数据库名..B表/*************导入Access********************/insert into B表 selet * from openrowset('Microsoft.Jet.OLEDB.4.0', 'x:A.mdb';'admin';'',A表)文件名为参数dec

lare @fname varchar(20)set @fname = 'd:test.mdb'exec('SELECT a.* FROM opendatasource(''Microsoft.Jet.OLEDB.4.0'','''+@fname+''';''admin'';'''', topics) as a ')SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="f:northwind.mdb";Jet OLEDB database Password=123;User ID=Admin;Password=;')...产品********************* 导入 xml 文件DECLARE @idoc intDECLARE @doc varchar(1000)--sample XML documentSET @doc ='Customer was very satisfiedImportantHappy Customer.'-- Create an internal representation of the XML document.EXEC sp_xml_preparedocument @idoc OUTPUT, @doc-- Execute a SELECT statement using OPENXML rowset provider.SELECT *FROM OPENXML (@idoc, '/root/Customer/Order', 1)WITH (oid char(5), amount float, comment ntext 'text()')EXEC sp_xml_removedocument @idoc???????/**********************Excel导到Txt****************************************/想用select * into opendatasource(...) from opendatasource(...)实现将一个Excel文件内容导入到一个文本文件假设Excel中有两列,第一列为姓名,第二列为很行帐号(16位)且银行帐号导出到文本文件后分两部分,前8位和后8位分开。邹健:如果要用你上面的语句插入的话,文本文件必须存在,而且有一行:姓名,银行账号1,银行账号2然后就可以用下面的语句进行插入注意文件名和目录根据你的实际情况进行修改.insert intoopendatasource('MICROSOFT.JET.OLEDB.4.0','Text;HDR=Yes;DATABASE=C:')...[aa#txt]--,aa#txt)--*/select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8) from opendatasource('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:a.xls'--,Sheet1$))...[Sheet1$]如果你想直接插入并生成文本文件,就要用bcpdeclare @sql varchar(8000),@tbname varchar(50)--首先将excel表内容导入到一个全局临时表select @tbname='[##temp'+cast(newid() as varchar(40))+']',@sql='select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8) into '+@tbname+' from opendatasource(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:a.xls'')...[Sheet1$]'exec(@sql)--然后用bcp从全局临时表导出到文本文件set @sql='bcp "'+@tbname+'" out "c:aa.txt" /S"(local)" /P"" /c'exec master..xp_cmdshell @sql--删除临时表exec('drop table '+@tbname)/********************导整个数据库*********************************************/用bcp实现的存储过程/*实现数据导入/导出的存储过程根据不同的参数,可以实现导入/导出整个数据库/单个表调用示例:--导出调用示例----导出单个表exec file2table 'zj','','','xzkh_sa..地区资料','c:zj.txt',1----导出整个数据库exec file2table 'zj','','','xzkh_sa','C:docman',1--导入调用示例----导入单个表

exec file2table 'zj','','','xzkh_sa..地区资料','c:zj.txt',0----导入整个数据库exec file2table 'zj','','','xzkh_sa','C:docman',0*/if exists(select 1 from sysobjects where name='File2Table' and objectproperty(id,'IsProcedure')=1)drop procedure File2Tablegocreate procedure File2Table@servername varchar(200) --服务器名,@username varchar(200) --用户名,如果用NT验证方式,则为空'',@password varchar(200) --密码,@tbname varchar(500) --数据库.dbo.表名,如果不指定:.dbo.表名,则导出数据库的所有用户表,@filename varchar(1000) --导入/导出路径/文件名,如果@tbname参数指明是导出整个数据库,则这个参数是文件存放路径,文件名自动用表名.txt,@isout bit --1为导出,0为导入asdeclare @sql varchar(8000)if @tbname like '%.%.%' --如果指定了表名,则直接导出单个表beginset @sql='bcp '+@tbname+case when @isout=1 then ' out ' else ' in ' end+' "'+@filename+'" /w'+' /S '+@servername+case when isnull(@username,'')='' then '' else ' /U '+@username end+' /P '+isnull(@password,'')exec master..xp_cmdshell @sqlendelsebegin --导出整个数据库,定义游标,取出所有的用户表declare @m_tbname varchar(250)if right(@filename,1)<>'' set @filename=@filename+''set @m_tbname='declare #tb cursor for select name from '+@tbname+'..sysobjects where xtype=''U'''exec(@m_tbname)open #tbfetch next from #tb into @m_tbnamewhile @@fetch_status=0beginset @sql='bcp '+@tbname+'..'+@m_tbname+case when @isout=1 then ' out ' else ' in ' end+' "'+@filename+@m_tbname+'.txt " /w'+' /S '+@servername+case when isnull(@username,'')='' then '' else ' /U '+@username end+' /P '+isnull(@password,'')exec master..xp_cmdshell @sqlfetch next from #tb into @m_tbnameendclose #tbdeallocate #tb endgo/************* Oracle **************/EXEC sp_addlinkedserver 'OracleSvr', 'Oracle 7.3', 'MSDAORA', 'ORCLDB'GOdelete from openquery(mailser,'select * from yulin')select * from openquery(mailser,'select * from yulin')update openquery(mailser,'select * from yulin where id=15')set disorder=555,catago=888insert into openquery(mailser,'select disorder,catago from yulin')values(333,777)补充:对于用bcp导出,是没有字段名的.用openrowset导出,需要事先建好表.用openrowset导入,除ACCESS及EXCEL外,均不支持非本机数据导入SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+' ' 转换后的别名FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions/********************** EXCEL导到远程SQLinsert OPENDATASOURCE('SQLOLEDB','Data Source=远程ip;User ID=sa;Password=密码').库名.dbo.表名 (列名1,列名2)SELECT 列名1,列名2FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:test.xls";User ID=Admin;Pass

word=;Extended properties=Excel 5.0')...xactions/** 导入文本文件EXEC master..xp_cmdshell 'bcp dbname..tablename in c:DT.txt -c -Sservername -Usa -Ppassword'/** 导出文本文件EXEC master..xp_cmdshell 'bcp dbname..tablename out c:DT.txt -c -Sservername -Usa -Ppassword'或EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:DT.txt -c -Sservername -Usa -Ppassword'导出到TXT文本,用逗号分开exec master..xp_cmdshell 'bcp "库名..表名" out "d:tt.txt" -c -t ,-U sa -P password'BULK INSERT 库名..表名FROM 'c:test.txt'WITH (FIELDTERMINATOR = ';',ROWTERMINATOR = 'n')--/* dBase IV文件select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase IV;HDR=NO;IMEX=2;DATABASE=C:','select * from [客户资料4.dbf]')--*/--/* dBase III文件select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase III;HDR=NO;IMEX=2;DATABASE=C:','select * from [客户资料3.dbf]')--*/--/* FoxPro 数据库select * from openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from [aa.DBF]')--*//**************导入DBF文件****************/select * from openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceDB=e:VFP98data;SourceType=DBF','select * from customer where country != "USA" order by country')go/***************** 导出到DBF ***************/如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句insert into openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from [aa.DBF]')select * from 表说明:SourceDB=c: 指定foxpro表所在的文件夹aa.DBF 指定foxpro表的文件名.

更多相关推荐:
安全总结语句

1、必须坚持“安全第一,预防为主,综合治理”的方针,不折不扣地贯彻落实安全生产责任制和各项安全规章制度,要做到居安思危,警钟长鸣。2、安全管理工作要以教育为主,以规章制度为辅来规范从业人员的行为,要用宣传引导员…

高中生物结论性总结语句111条

高中生物结论性语句111条绪论1、生物体具有共同的物质基础和结构基础。2、细胞是生物体的结构和功能的基本单位;细胞是一切动植物结构的基本单位。病毒没有细胞结构。3、新陈代谢是生物体进行一切生命活动的基础。4、生…

计算机总结语句

[转]有了这个大学计算机课不听也行来源:谢芸欣.?的日志一、选择题1、第一台计算机ENIAC淡生于19xx年,是电子管计算机;第二代是晶体管计算机;第三代是中小规模集成电路;第四代是大规模集成电路;2、计算机的…

工作总结、汇报类精辟语句

坚持把招商引资作为经济工作的一号工程来抓强化招商引资责任创新招商引资方式以纲要的实施和广佛肇一体化为契机努力建立全方位多层次宽领域的招商引资新格局以重大项目引进建设为抓手不断掀起招商引资热潮促一批项目建成投产一...

C语言常用语句总结

C语言常用语句总结一常用函数1putchar函数putchar函数字符输出函数向终端输出一个字符一般形式为putcharc输出字符变量c的值printfcc2getchar函数getchar函数字符输入函数从终...

写工作报告、总结材料常用语句

写工作报告、总结材料常用语句以~~为(主题、手段、保证、导向、主线、指针、标准、龙头、目标、中心、核心、依托、支持、支撑、重点、载体、先导、导向、牵引、依据、纽带、桥梁、契机、出发点、立足点、介入点、切入点、根…

写作总结计划材料常用语句(百分百通用,绝对爆嗨)

机关笔杆必备的实用老套套1、常用排比最常用的三字词:可概括为性、感、多、点,不、化、新、力。A、XX性:重要性、紧迫性、自觉性、主动性、坚定性、民族性、时代性、实践性、针对性、全局性、前瞻性、战略性、积极性、创…

mysql常用语句总结

一数据库操作1创建数据库MysqlgtCREATEDATABASEdatabaseNameMysql数据库的数据文件默认存放在usrlocalmysqlvar目录下每个数据库对应一个子目录用于存储数据表文件新建...

常用经典SQL语句大全完整版-权威人士总结出的-详解+实例

下列语句部分是Mssql语句不可以在access中使用SQL分类DDL数据定义语言CREATEALTERDROPDECLAREDML数据操纵语言SELECTDELETEUPDATEINSERTDCL数据控制语言...

经典SQL语句总结

SQL分类DDL数据定义语言CREATEALTERDROPDECLAREDML数据操纵语言SELECTDELETEUPDATEINSERTDCL数据控制语言GRANTREVOKECOMMITROLLBACK首先...

常用经典SQL语句大全完整版-权威人士总结出的-详解+实例

下列语句部分是Mssql语句不可以在access中使用SQL分类DDL数据定义语言CREATEALTERDROPDECLAREDML数据操纵语言SELECTDELETEUPDATEINSERTDCL数据控制语言...

SQL语句总结

Insert插入INSERTINTOtablename列1列2VALUES值1值2Create创建Createdatabasedbname建库Creattabletbname建表Idintnotnullnotn...

总结语句(40篇)