首页

文章

SQL SERVER 建表时先判断表有没有存在

发布网友 发布时间:2022-04-19 21:13

我来回答

8个回答

懂视网 时间:2022-05-01 09:08

--判断表是否存在方式1 if object_id(N‘EF_User‘,N‘U‘) is null --判断表是否存在方式2 --if not exists (select * from dbo.SysObjects WHERE id = object_id(N‘[EF_User]‘) AND OBJECTPROPERTY(ID, ‘IsTable‘) = 1) begin --直接创建自增且指定主键约束的表 CREATE TABLE [dbo].[EF_User]( [ID] [int] identity(1,1) not null, [loginName] [nvarchar](100) NULL, [realName] [nvarchar](100) NULL, [phoneNo] [nvarchar](100) NULL, CONSTRAINT [PK_User] PRIMARY KEY(ID) ) --删除主键约束 alter table [dbo].[EF_User] drop constraint PK_User --添加主键约束 alter table [dbo].[EF_User] add constraint PK_User primary key(ID) end GO CREATE TABLE [dbo].[EF_Role]( [ID] [int] identity(1,1) not null, [Name] [nvarchar](100) NULL, [remark] [nvarchar](100) NULL, constraint [PK_Role] Primary Key(ID) ) GO CREATE TABLE [dbo].[EF_User_Role]( [UserID] [int] NOT NULL, [RoleID] [int] NOT NULL ) --添加外键约束 alter table EF_User_Role add constraint FK_User_Role_User foreign key (UserID) references EF_User(ID) alter table EF_User_Role add constraint FK_User_Role_Role foreign key (RoleID) references EF_Role(ID) GO

 

SqlServer主键外键添加及判断表是否存在

标签:

热心网友 时间:2022-05-01 06:16

1、打开数据库选中要创建表的数据库,在数据库中打开表,然后点新建,创建表,就会出现一个建表窗口。

2、在这里可以输入设置相关表的结构类型,在新窗口输入数据类型字段名称和大小。

3、每个表为了数据的唯一,提高查询性能都需要创建一个主键,这个字段没什么意义。只是起个标识。

4、主键一般可以设为数字或字符串,在这里设主键递增为数字型,字符串需要单独处理。

5、主键和字段类型创建好后,就可以保存了。直接点保存就可以了。

6、通过查询分析器,用语句建表。打表查询器输入语句。

热心网友 时间:2022-05-01 07:34

SQL SERVER 建表时先判断表存在情况如下:

在sqlserver中,创建表之前判断表是否存在,如果存在则删除已有表Sql代码    

----SQL-Server   

if exists (select 1   from  sysobjects  where  id = object_id('EMP')  and   type = 'U')  

drop table S_Evaluate  go  --CREATE Table: EMP   create table EMP(  Id   numeric         

identity, -- 评估ID  Conclusion     text     null --结论  

constraint PK_S_EMP primary key nonclustered(Id)  )  

go  ORACLE 数据库

但是在oracle中却没有。如果直接使用drop table那么如果表不存在会报错,导致后续语句无法运行。因此可以通过一个存储过来来进行判断。 

主要是查询all_tables表的TABLE_NAME和OWNER,如果表存在,则执行execute immediate 'drop table TABLE_NAME'; 

Sql代码  

--判断表是否存在,如果存在则删除   

declare   

num   number;   

begin  select count(1) into num from all_tables where TABLE_NAME = 'EMP' and 

OWNER='SCOTT';   

if   num=1   then   

execute immediate 'drop table EMP';   

end   if;   end;   /   --创建表   

CREATE TABLE EMP   

(EMPNO NUMBER(4) NOT NULL,   

ENAME VARCHAR2(10),   

JOB VARCHAR2(9),   

MGR NUMBER(4),   

HIREDATE DATE,   

SAL NUMBER(7, 2),   

COMM NUMBER(7, 2),   

DEPTNO NUMBER(2));   

删除表的如下:

Sql代码  

CREATE PROCEDURE ExistsTest(IN TableName varchar(50),OUT iReturn int)  

LANGUAGE SQL    

P1: BEGIN    

DECLARE stmt VARCHAR(200);  

IF EXISTS (select * from sysibm.systables where TID <> 0 and name = TableName ) THEN  

set stmt ='drop table '|| TableName;    

PREPARE s1 FROM stmt;  

EXECUTE s1;  

set iReturn =0;  

else  

set iReturn =-1;  

END IF;    

END P1@    

END P1后面的@根据所用编辑工具的不同,默认的结束也不一样。测试了一下QUEST CENTRAL FOR DB2,默认是分号,如果想用@自己修改工具的配置吧

由于DB2不像sqlserver那样把所有对象组织到一个sysobjects里,所以想要实现不同的功能就需要修改这个存储过程,

如:

syscat.proceres 存储过程

syscat.tables  表

sysibm.tables  表

syscat.views 视图

sysibm.views 视图

sysibm.tables的表里面的信息比syscat.tables的少,或者说IBM认为你想知道的信息在sysibm.tables里面已经都可以知道了,这个应该是给用户使用的。syscat.tables应该是给系统使用的。

扩展资料

创Sql代码创建数据库

创建之前判断该数据库是否存在

if exists (select * from sysdatabases where name='databaseName')

drop database databaseName

go

Create DATABASE databasename

on primary-- 默认就属于primary文件组,可省略

(/*--数据文件的具体描述--*/

name=‘databasename_data’,-- 主数据文件的逻辑名称

filename=‘'所存位置:\databasename_data.mdf’, -- 主数据文件的物理名称

size=数值mb, --主数据文件的初始大小

maxsize=数值mb, -- 主数据文件增长的最大值

filegrowth=数值%--主数据文件的增长率)

log on

(/*--日志文件的具体描述,各参数含义同上--*/

name='databasename_log', -- 日志文件的逻辑名称

filename='所存目录:\databasename_log.ldf', -- 日志文件的物理名称

size=数值mb, --日志文件的初始大小

filegrowth=数值%--日志文件的增长值)

参考资料来源:百度百科——Sql

热心网友 时间:2022-05-01 09:09

SQL SERVER 建表时先判断表存在情况如下:

在sqlserver中,创建表之前判断表是否存在,如果存在则删除已有表Sql代码    

----SQL-Server   

if exists (select 1   from  sysobjects  where  id = object_id('EMP')  and   type = 'U')  

drop table S_Evaluate  go  --CREATE Table: EMP   create table EMP(  Id   numeric         

identity, -- 评估ID  Conclusion     text     null --结论  

constraint PK_S_EMP primary key nonclustered(Id)  )  

go  ORACLE 数据库

但是在oracle中却没有。如果直接使用drop table那么如果表不存在会报错,导致后续语句无法运行。因此可以通过一个存储过来来进行判断。 

主要是查询all_tables表的TABLE_NAME和OWNER,如果表存在,则执行execute immediate 'drop table TABLE_NAME'; 

Sql代码  

--判断表是否存在,如果存在则删除   

declare   

num   number;   

begin  select count(1) into num from all_tables where TABLE_NAME = 'EMP' and 

OWNER='SCOTT';   

if   num=1   then   

execute immediate 'drop table EMP';   

end   if;   end;   /   --创建表   

CREATE TABLE EMP   

(EMPNO NUMBER(4) NOT NULL,   

ENAME VARCHAR2(10),   

JOB VARCHAR2(9),   

MGR NUMBER(4),   

HIREDATE DATE,   

SAL NUMBER(7, 2),   

COMM NUMBER(7, 2),   

DEPTNO NUMBER(2));   

现在使用DB2,网上找了很久也没个好方法,基本上用简单的sql语句来实现是不大可能的,能找到的方法都是自己写存储过程实现

删除表的如下:

Sql代码  

CREATE PROCEDURE ExistsTest(IN TableName varchar(50),OUT iReturn int)  

LANGUAGE SQL    

P1: BEGIN    

DECLARE stmt VARCHAR(200);  

IF EXISTS (select * from sysibm.systables where TID <> 0 and name = TableName ) THEN  

set stmt ='drop table '|| TableName;    

PREPARE s1 FROM stmt;  

EXECUTE s1;  

set iReturn =0;  

else  

set iReturn =-1;  

END IF;    

END P1@    

END P1后面的@根据所用编辑工具的不同,默认的结束也不一样。测试了一下QUEST CENTRAL FOR DB2,默认是分号,如果想用@自己修改工具的配置吧

由于DB2不像sqlserver那样把所有对象组织到一个sysobjects里,所以想要实现不同的功能就需要修改这个存储过程,

如:

syscat.proceres 存储过程

syscat.tables  表

sysibm.tables  表

syscat.views 视图

sysibm.views 视图

sysibm.tables的表里面的信息比syscat.tables的少,或者说IBM认为你想知道的信息在sysibm.tables里面已经都可以知道了,这个应该是给用户使用的。syscat.tables应该是给系统使用的。

扩展资料:

利用SQL SERVER 建表方法:

1、在没有创建数据库的时候界面的左上角是这样的:数据库文件夹里边包含系统数据库,数据库快照,ReportServer和REportServerTempDB。

2、然后创建一个数据库,数据库的名字可以随意命名,可以是数字,字符,下划线,标点符号,汉字等等。

3、在数据库中创建表,一般采用的是键盘输入的方法建表。点击新建查询。

热心网友 时间:2022-05-01 11:00

来点猛的!!!例子如下:

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[cpm_tv]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[cpm_tv]
GO

CREATE TABLE [dbo].[cpm_tv] (
[SN] [int] IDENTITY (1, 1) NOT NULL ,
[Tvname] [nvarchar] (50) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[Tvauthor] [nvarchar] (50) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[Tvremark] [nvarchar] (200) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[Tvispublish] [nvarchar] (4) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[Tvpath] [nvarchar] (200) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[Tvcreater] [nvarchar] (50) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[Tvcreatetime] [datetime] NULL ,
[Tvoldfname] [nvarchar] (50) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL
) ON [PRIMARY]
GO

有点纳闷吧。这是 sql server 生成的,呵呵。

热心网友 时间:2022-05-01 13:08

use 数据库名
if exists ( select *
from sysobjects
where name = '表名'
and type = 'U')
drop table user_mess
go

create table 表名()

热心网友 时间:2022-05-01 15:33

mysql 的
drop table if exists tablename;
create tablename(
field int
);

热心网友 时间:2022-05-01 18:14

SQL SERVER 建表时先判断表存在情况如下:

在sqlserver中,创建表之前判断表是否存在,如果存在则删除已有表Sql代码    

----SQL-Server   

if exists (select 1   from  sysobjects  where  id = object_id('EMP')  and   type = 'U')  

drop table S_Evaluate  go  --CREATE Table: EMP   create table EMP(  Id   numeric         

identity, -- 评估ID  Conclusion     text     null --结论  

constraint PK_S_EMP primary key nonclustered(Id)  )  

go  ORACLE 数据库

但是在oracle中却没有。如果直接使用drop table那么如果表不存在会报错,导致后续语句无法运行。因此可以通过一个存储过来来进行判断。 

主要是查询all_tables表的TABLE_NAME和OWNER,如果表存在,则执行execute immediate 'drop table TABLE_NAME'; 

Sql代码  

--判断表是否存在,如果存在则删除   

declare   

num   number;   

begin  select count(1) into num from all_tables where TABLE_NAME = 'EMP' and 

OWNER='SCOTT';   

if   num=1   then   

execute immediate 'drop table EMP';   

end   if;   end;   /   --创建表   

CREATE TABLE EMP   

(EMPNO NUMBER(4) NOT NULL,   

ENAME VARCHAR2(10),   

JOB VARCHAR2(9),   

MGR NUMBER(4),   

HIREDATE DATE,   

SAL NUMBER(7, 2),   

COMM NUMBER(7, 2),   

DEPTNO NUMBER(2));   

删除表的如下:

Sql代码  

CREATE PROCEDURE ExistsTest(IN TableName varchar(50),OUT iReturn int)  

LANGUAGE SQL    

P1: BEGIN    

DECLARE stmt VARCHAR(200);  

IF EXISTS (select * from sysibm.systables where TID <> 0 and name = TableName ) THEN  

set stmt ='drop table '|| TableName;    

PREPARE s1 FROM stmt;  

EXECUTE s1;  

set iReturn =0;  

else  

set iReturn =-1;  

END IF;    

END P1@    

END P1后面的@根据所用编辑工具的不同,默认的结束也不一样。测试了一下QUEST CENTRAL FOR DB2,默认是分号,如果想用@自己修改工具的配置吧

由于DB2不像sqlserver那样把所有对象组织到一个sysobjects里,所以想要实现不同的功能就需要修改这个存储过程,

如:

syscat.proceres 存储过程

syscat.tables  表

sysibm.tables  表

syscat.views 视图

sysibm.views 视图

sysibm.tables的表里面的信息比syscat.tables的少,或者说IBM认为你想知道的信息在sysibm.tables里面已经都可以知道了,这个应该是给用户使用的。syscat.tables应该是给系统使用的。

扩展资料

Oracle数据库建表前,先判断是否表存在,存在不建表,不存在则建表,代码如下:

DECLARE

TOTAL INT := 0;

BEGIN

SELECT COUNT(1)

INTO TOTAL

FROM USER_TABLES A

WHERE A.TABLE_NAME = 'TABNAME ';

IF TOTAL > 0 THEN

EXECUTE IMMEDIATE 'DROP TABLE TABNAME ';

END IF;

END;

/

CREATE TABLE TABNAME (

---具体建表语句

);

alter table TABNAMEadd constraint PK_TABNAME_ID primary key(id);

本示例是在user_tables系统表中查找是否存在要建的表,其实还可以在all_tables中查找,但是这样写必须在where中加owner=‘用户名’。

例如:下面SCOTT换成自己用户名,也就是表的拥有者(连接数据的user)

declare 

num   number; 

begin 

select count(1) into num from all_tables where TABLE_NAME = 'EMP' and OWNER='SCOTT'; 

if   num>0   then 

execute immediate 'drop table EMP'; 

end   if; 

end; 

参考资料来源:百度百科 - SQL语句大全

中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 进出口报关流程,越详细越好。谢谢大家指教。 网易新闻怎么发布? 如何做好酒鬼酒的销售 酒鬼酒行业分析 业绩增速持续放缓,年营收不足12亿,酒鬼酒如何全... 酒鬼酒业务员的工作怎么样啊?我应聘了湖南盛世酒... 酒鬼酒业的辞职事件 87版酒鬼酒发展潜力? 酒鬼酒产地是哪里 酒鬼酒如何? 湖南酒鬼酒股份有限公司的公司业务 如何在网易发布新闻,网易新闻怎么投稿,网易新闻发布 酒鬼酒股份有限公司怎么样? 酒鬼酒有哪几个产品 酒鬼酒河南有限责任公司怎么样? 酒鬼洞藏酒销售有限公司怎么样? 酒鬼酒公布2021年半年度业绩预告,今年的利润比上... 酒鬼酒河南北方基地销售有限公司怎么样? 酒鬼酒股份有限公司电话是多少? 酒鬼酒产地是哪里? 王哲20222年酒鬼酒销售目标多少 sqlserver数据库建表提示说数据库存在该对象 求救,sqlserver数据库删除不了表,但是重新建立提... 无法连接:SQL server 不可用或不存在什么意思啊 sql server提示SQL Server 不存在或拒绝访问。 sqlserver怎样判断查询出来的表里 某列是否存在 sql server指定的服务器并未已安装的服务存在 sqlserver查询某个字段在哪些表中存在 sqlserver中如何判断一个约束是否存在?就像判断一... 错误信息:无法连接: SQL Server 不可用或不存在。 怎样在VB中判断SQLSERVER数据库的一个数据表是否存在 如何验证sqlserver数据库中是否存在某用户 SqlServer中如何判断一个表是否已存在? sqlserver 试图是否存在 这句话一定是要SQLSERVER存在或者可以访问吗?否则... sqlserver:如果存在a表就删除a表,sqlserver语句... sql 查询 数据库中数据是否存在 sql 判断列是否存在 JDBC访问SQLServer有没有缓存?存在那里?用的服务... 如何判断SQL中某个数据库是否存在 孕妇梦见卖西瓜周公解梦
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com