常用SQL语句

一、 修改数据库定序 语法:ALTER DATABASE "&Database Name&"SET SINGLE_USER WITH ROLLBACK IMMEDIATE ALTER DATABASE "&Database Name&" COLLATE "&定序名称&" ALTER DATABASE "&Database Name&"SET MULTI_USER WITH ROLLBACK IMMEDIATE 如:ALTER DATABASE SODDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE ALTER DATABASE SODDB COLLATE Chinese_Taiwan_Stroke_CI_AI ALTER DATABASE SODDB SET MULTI_USER WITH ROLLBACK IMMEDIATE二、修改数据表字段定序语法:Alter Table "&TableName &"Alter Column "&ColumnName&" "&ColumnType&"如:Alter Table SODM87 Alter Column COMP_ID char(10) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL三、变动数据表中的字段:1、添加字段语法:ALTER TABLE "&TableName&" ADD "&ColumnName&" DataType如:ALTER TABLE SODM87 ADD CLASSNO_SDATE CHAR(9) NOT NULL DEFAULT(' ')2、修改字段类型语法:ALTER TABLE "&TableName&" ALTER COLUMN "&ColumnName&" NewDataType如:ALTER TABLE SODM87 ALTER COLUMN APPLY_NAME Varchar(10) NULL 3、修改域名语法:EXEC SP_RENAME 'TableName.ColumnName','NewColumnName','COLUMN'如:将表SODM87的域名APPLY_NAME修改为APPLY_ID,语句为:EXEC SP_RENAME SODM87.APPLY_NAME','APPLY_ID','COLUMN'4、修改栏为名称和类型如果同时修改栏为名称和类型,则需要分两步进行,同时使用如上3、4两步即可。5、删除字段语法:ALTER TABLE "&TableName&" DROP COLUMN "&ColumnName&" 如:ALTER TABLE SODM87 DROP COLUMN CLASSNO_SDATE四、添加索引 语法:CREATE INDEX [索引名称] ON "&TableName&" (索引键) ON [PRIMARY]如:CREATE INDEX [IDX_MAIN_CNO_CODE] ON [dbo].[ SODM87]([MAIN_CNO_CODE]) ON [PRIMARY]五、添加主键语法:ALTER Table "&TableName&" ADD CONSTRAINT"&PK Name&" PRIMARY KEY CLUSTERED (构成主键字段组合 ) ON [PRIMARY] 如:ALTER TABLE [PM048TB] ADD CONSTRAINT [PK_PM048TB] PRIMARY KEY CLUSTERED ( [USER_CODE] ASC, [LOG_DATE] ASC, [PROJ_CODE] ASC, [TASK_KIND] ASC, [TASK_CODE] ASC ) ON [PRIMARY]六、删除主键 语法:ALTER TABLE "&Table Name&"DROP CONSTRAINT "&PK Name&" 如:IF EXISTS (SELECT * FROM dbo.sysindexes WHERE id = OBJECT_ID(N'[dbo].[PM048TB]') AND name = N'PK_PM048TB') ALTER TABLE [dbo].[PM048TB] DROP CONSTRAINT [PK_PM048TB]七、修改表的主键修改主键是:先删除已有的主键,再添加新的主键,如:IF EXISTS (SELECT * FROM dbo.sysindexes WHERE id = OBJECT_ID(N'[dbo].[PM048TB]') AND name = N'PK_PM048TB') ALTER TABLE [dbo].[PM048TB] DROP CONSTRAINT [PK_PM048TB] ALTER TABLE [PM048TB] ADD CONSTRAINT [PK_PM048TB] PRIMARY KEY CLUSTERED ( [USER_CODE] ASC, [LOG_DATE] ASC, [PROJ_CODE] ASC, [TASK_KIND] ASC, [TASK_CODE] ASC ) ON [PRIMARY] 八、数据库还原(不同版本数据库备份还原,须用命令)语法:USE MASTER RESTORE DATABASE 数据库名称 FROM DISK=档案位置with replace;范例:USE MASTER RESTORE DATABASE APWCDB FROM DISK='C:\APWCDB.BAK'with replace;九、数据库重命名说明:重命名 SQL SERVER 的数据库,必须在 数据库 是 单用户 (Single User)的模式下,才可以更改语法:EXEC sp_dboption 'DatabaseName', 'Single User', 'TRUE' EXEC sp_renamedb 'DatabaseName', 'NewDatabaseName' EXEC sp_dboption 'NewDatabaseName', 'Single User', 'FALSE'范例:将MCTA改名为MCTADB EXEC sp_dboption 'MCTA', 'Single User', 'TRUE' EXEC sp_renamedb 'MCTA', 'MCTADB' EXEC sp_dboption 'MCTADB', 'Single User', 'FALSE'十、多table删除比较好的做法是(SQL Server语法):DELETE FROM TableA FROM TableA TA INNER JOIN TableB TB ON TA.KEY_1=TB.KEY_1 AND TA.KEY_2=TB.KEY_2 AND TA.KEY_3=TB.KEY_3WHERE ……(其它条件)Oracle和DB2语法(也支持以上语法,但以下语法效率更好)DELETE FROM TableA WHERE (KEY_1, KEY_2, KEY_3) IN(SELECT KEY_1, KEY_2, KEY_3 FROM TableB) AND ……(其它条件)十一、用TableB中的数据更新TableAUPDATE TableA SET TEMP_A=B.TEMP_B, NOTE_A=B.NOTE_BFROM TableB TB WHERE TableA.KEY_1=TB.KEY_1 AND TableA.KEY_2=TB.KEY_2 AND TableA.KEY_3=TB.KEY_3AND ……(其它条件)用子查询方法也可以实现这样的更新效果,但是如果更新字段两个以上时,下来没有以上语法好;注:在Oracle 9i及以下版本中以上语法无法实现,需用以下的子查询方式,Oracle10i版本没有试过,待有机会操作后再更新UPDATE TableA SET TEMP_A=(SELECT B.TEMP_B FROM TableB TB WHERE TableA.KEY_1=TB.KEY_1 AND TableA.KEY_2=TB.KEY_2 AND TableA.KEY_3=TB.KEY_3)WHERE ……(其它条件)十二、连接两台数据库语法:EXEC master.dbo.addlinkedserver @server=N'DB别名',@provider=N'SQLNCLI',@provstr=N'DRIVER={SQL Server};SERVER=远程db机器名称或者IP;UID=访问ID;PWD=访问密码;'范例1:EXEC master.dbo.addlinkedserver @server=N'DB_20',@provider=N'SQLNCLI',@provstr=N'DRIVER={SQL Server};SERVER=192.168.1.30;UID=sa;PWD=sa;'范例2:EXEC master.dbo.addlinkedserver 'DB_20', 'SQLNCLI', 'DRIVER={SQL Server};SERVER=192.168.1.30;UID=sa;PWD=sa;'使用方法: SELECT * FROM DB_20.MCTADB.dbo.Table1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值