alter table 表名
add constraint 约束名
foreign key(字段名) references 主表名(字段名)
on delete cascade
语法:
Foreign Key
(column[,...n])
references referenced_table_name[(ref_column[,...n])]
[on delete cascade]
[on update cascade]
注释:
column:列名
referenced_table_name:外键参考的主键表名称
ref_name:外键要参考的表的主键列
on delete:删除级联
on update:更新级联
表的外键约束
SELECT 外键表ID=b.fkeyid
,外键表名称=object_name(b.fkeyid)
,外键列ID=b.fkey
,外键列名=(SELECT name from syscolumns WHERE colid=b.fkey AND id=b.fkeyid)
,主键表ID=b.rkeyid
,主键表名=object_name(b.rkeyid)
,主键列ID=b.rkey
,主键列名=(SELECT name from syscolumns WHERE colid=b.rkey AND id=b.rkeyid)
from sysobjects a
join sysforeignkeys b on a.id=b.constid
join sysobjects c on a.parent_obj=c.id
where a.xtype='f' AND c.xtype='U'
查询一个表的所有外键:
SELECT 主键列ID=b.rkey
,主键列名=(S ......
首先要有jxl类库。
程序如下:
import java.io.*;
import jxl.*;
public class ExcelToSql {
public static void main(String args[])
{
try
{
Workbook book= Workbook.getWorkbook(new File("D:\\workspaceuse6\\foundation\\test\\com\\gresoft\\security\\service\\zdb.xls"));
//获得第一个工作表对象
Sheet sheet=book.getSheet(0);
StringBuffer sql = new StringBuffer();
for(int j = 1; j <= 929; j++)
{
// getCell(列,行)起始为0
Cell cell1=sheet.getCell(0,j);
Cell cell2=sheet.getCell(1,j);
Cell cell3=sheet.getCell(2,j);
Cell cell4=sheet.getCell(3,j);
Cell cell5=sheet.getCell(4,j);
String result1=cell1.getContents();
String result2=cell2.getContents( ......
首先要有jxl类库。
程序如下:
import java.io.*;
import jxl.*;
public class ExcelToSql {
public static void main(String args[])
{
try
{
Workbook book= Workbook.getWorkbook(new File("D:\\workspaceuse6\\foundation\\test\\com\\gresoft\\security\\service\\zdb.xls"));
//获得第一个工作表对象
Sheet sheet=book.getSheet(0);
StringBuffer sql = new StringBuffer();
for(int j = 1; j <= 929; j++)
{
// getCell(列,行)起始为0
Cell cell1=sheet.getCell(0,j);
Cell cell2=sheet.getCell(1,j);
Cell cell3=sheet.getCell(2,j);
Cell cell4=sheet.getCell(3,j);
Cell cell5=sheet.getCell(4,j);
String result1=cell1.getContents();
String result2=cell2.getContents( ......
select name from syscolumns where id in (select id from sysobjects where type = 'u' and name = '相应表名')
用以上sql语句输入相应表名就可以查到表的字段名,对应好数据库 查询是否存在该表语句
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tb_cost]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tb_cost]
GO
创表语句
CREATE TABLE [dbo].[tb_cost] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[inputtime] [datetime] NOT NULL ,
[pushcount] [int] NOT NULL ,
[revertcount] [int] NOT NULL ,
[revertrate] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[unitprice] [float] NOT NULL ,
[cost] [float] NOT NULL ,
[income] [float] NOT NULL ,
[rate] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[pushinfor] [varchar] (8000) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO
建索引脚本:
create clustered index 索引名 on 表名(表.字段)
在表增加一个字段,例如fa字段
alter table 表名 add fa int not null default 0
选择前面 m-n 条数据的 ......
影响数据库还原速度的因素和影响数据库备份速度的因素相同。除此之外,假如你使用SQL Server 2005的话,你还可以启动另外一个优化任务来还原当前不存在的数据库,运行环境为Windows XP,Windows 2003 Server 或更新版本。
Perform Volume Maintenance Tasks
当你还原一个新的完整数据库是,SQL Server读备份文件头,然后创建原始数据库中数据和日志文件需要的磁盘空间。假如SQL Server服务启动帐户没有“Perform Volume Maintenance Tasks”权限的话,数据和日志文件就需要被初始化为0,也就是说,SQL Server先创建这些文件,然后用0来填充它们。对于一个大数据库来说,这将花费很多时间。我记得使用SQL Server 2000从磁带上还原一个320GB的数据库时,总是奇怪为什么总是有30分钟的时间,还原进程一点称进展都没有。
然后,假如SQL Server服务启动帐户有“Perform Volume Maintenance Tasks”权限的话,它就会根据大小来创建数据文件,跳过“填充0”这个阶段。
下图使用secpol.msc来显示权限
你可以设想一下它会节省你多少还原大型数据库的时间。注意,事务日志文件仍然需要“填充0”,仅仅是数据文件可以跳过这一步。
注意 ......
SQL Server 2005为XML提供本地支持;现在可以在OPENXML节点中使用一个带有nodes()函数的XML字段类型把一个XML文件转化为一个行集。让我们来看一个使用OPENXML的简单例子,并显示如何把它转化为在SQL Server 2005中使用XML字段类型和nodes()函数。
为了使我们的例子简单化,我们将假设我们需要执行某种基于采购订单列表的过程,而这个采购订单将在一个XML文件中指定。该XML文件类似于这样:
< polist>
< po>< ponumber>100< /ponumber>< podate>2008-09-10< /podate>< /po>
< po>< ponumber>101< /ponumber>< podate>2008-09-11< /podate>< /po>
< /polist>
我们可以通过下面的OPENXML把 XML转化为一个行集:
DECLARE @DocHandle int
DECLARE @XmlDocument nvarchar(1000)
SET @XmlDocument = N''< polist>
< po>< ponumber>100< /ponumber>< podate>2008-09-10< /podate>< /po>
< po>< ponumber>101< /ponumber>< podate>2008-09-11< /podate>< ......
SQL Server 2005为XML提供本地支持;现在可以在OPENXML节点中使用一个带有nodes()函数的XML字段类型把一个XML文件转化为一个行集。让我们来看一个使用OPENXML的简单例子,并显示如何把它转化为在SQL Server 2005中使用XML字段类型和nodes()函数。
为了使我们的例子简单化,我们将假设我们需要执行某种基于采购订单列表的过程,而这个采购订单将在一个XML文件中指定。该XML文件类似于这样:
< polist>
< po>< ponumber>100< /ponumber>< podate>2008-09-10< /podate>< /po>
< po>< ponumber>101< /ponumber>< podate>2008-09-11< /podate>< /po>
< /polist>
我们可以通过下面的OPENXML把 XML转化为一个行集:
DECLARE @DocHandle int
DECLARE @XmlDocument nvarchar(1000)
SET @XmlDocument = N''< polist>
< po>< ponumber>100< /ponumber>< podate>2008-09-10< /podate>< /po>
< po>< ponumber>101< /ponumber>< podate>2008-09-11< /podate>< ......
--语 句 功 能 --数据操作 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 --定义当前事务数据访问特征 --程序化SQL DECLAR ......