SQL语句增删改字段、表、修改默认值
收集转载:
1.修改字段,默认值
、修改字段默认值 alter table 表名 drop constraint 约束名字 ------说明:删除表的字段的原有约束 alter table 表名 add constraint 约束名字 DEFAULT 默认值 for 字段名称 -------说明:添加一个表的字段的约束并指定默认值 、修改字段名: alter table 表名 rename column A to B 、修改字段类型: alter table 表名 alter column UnitPrice decimal(, ) not null 、修改增加字段: USE DB
GO
--test表增加col1字段
--作者:
--日期:
IF NOT EXISTS
(SELECT * FROM syscolumns WHERE ID=object_id('test') AND Name='col1')
BEGIN
ALTER Table test ADD col1 bit
END alter table 表名 ADD 字段 类型 NOT NULL Default .删除字段 当动态添加 表的 列时,如果设置了该列的 默认值,那么再用alter table TableName drop column ColumnName语句时就会报错,因为存在了default约束。 .查找出表中该列的约束名称 declare @name varchar()
select @name =b.name from sysobjects b join syscolumns a on b.id = a.cdefault
where a.id = object_id('TableName')
and a.name ='ColumName' . 删除 约束 删除该列 即可 exec('alter table TableName drop constraint ' + @name)
exec('alter table TableNamedrop column ColumName')
.创建表
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[EVADELSECURITYPROJECT]') AND type in (N'U'))
BEGIN
CREATE TABLE TABLENAME
(
....
)
END .--判断表中列是否存在,不存在添加
IF NOT EXISTS (SELECT * FROM information_schema.columns WHERE table_schema='dbo' AND table_name='TABLENAME' AND column_name='IsPush')
BEGIN
...
END;
IF NOT EXISTS (SELECT * FROM syscolumns WHERE ID=object_id('dbo.TableName') AND Name='ColName')
BEGIN
....
END;
判断表,列是否存在
2.执行函数 存储过程 列前
/******在生成的函数CREATE脚本前面加这一段(如果函数存在,先删除) ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[FunTest]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[FunTest]
GO /******在生成的存储过程CREATE脚本前面加这一段(如果存存储过程在,先删除) ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SP_Test]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[SP_Test]
GO /******在为表增加列的脚本前面加这一段(如果表存在列不存在才执行) ******/
IF (EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Ttest]') AND type in (N'U')) AND COL_LENGTH('Ttest','WeChatORCodeUrl') IS NULL)
BEGIN
ALTER TABLE Ttest ADD WeChatORCodeUrl VARCHAR()
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'企业号二维码路径' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TMobileConfig', @level2type=N'COLUMN',@level2name=N'WechatORCodeUrl'
END
GO
3.判断表 临时表是否存在
、判断数据表是否存在 方法一: use yourdb;
go if object_id(N'tablename',N'U') is not null
print '存在'
else
print '不存在' 例如:
use fireweb;
go if object_id(N'TEMP_TBL',N'U') is not null
print '存在'
else
print '不存在' 方法二: USE [实例名]
GO IF EXISTS (SELECT * FROM dbo.SysObjects WHERE ID = object_id(N'[表名]') AND OBJECTPROPERTY(ID, 'IsTable') = )
PRINT '存在'
ELSE
PRINT'不存在' 例如:
use fireweb;
go IF EXISTS (SELECT * FROM dbo.SysObjects WHERE ID = object_id(N'TEMP_TBL') AND OBJECTPROPERTY(ID, 'IsTable') = )
PRINT '存在'
ELSE
PRINT'不存在' 、临时表是否存在: 方法一:
use fireweb;
go if exists(select * from tempdb..sysobjects where id=object_id('tempdb..##TEMP_TBL'))
PRINT '存在'
ELSE
PRINT'不存在' 方法二:
use fireweb;
go if exists (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..#TEMP_TBL') and type='U')
PRINT '存在'
ELSE
PRINT'不存在'
4.动态添加表,修改列
. 创建表:
CREATE TABLE 学生信息
(
学号 varchar() IDENTITY(,) PRIMARY KEY,
姓名 varchar() UNIQUE NOT NULL,
班级编号 varchar() REFERENCES '班级信息',
年级 int null,
性别 varchar() CHECK(性别in ('男’','女’)),
民族 varchar() DEFAULT '未知该生民族',
籍贯 varchar()
) . 修改表:
A. 重命名表:
EXEC sp_rename 'oldname','newname'
B. 修改列属性:
ALTER TABLE 学生信息
ALTER COLUMN 姓名 varchar() NOT NULL
C. 添加列:
ALTER TABLE 学生信息
ADD 家庭住址 nvarchar() NULL
D. 删除列:
ALTER TABLE 学生信息
DROP COLUMN 家庭住址 D. 修改列名:
exec sp_rename '表名.[字段原名]','字段新名','column' . 复制表:
A. 复制整张表:
select * into new_table from old_table B. 复制表结构:
select * into new_table from old_table where = B. 复制表内容:
insert into new_tab select * from old_table . 修改identity列 自增列不能直接修改,必须将原有ID列删除,然后重新添加一列具有identity属性的ID字段。比如你要修改的字段名为ID:
alter table 表名 drop column ID
alter table 表名 add ID int identity(,)
5.重命名列 说明
-- 重命名 表.列 ,新的 ,列
EXEC sp_rename '表.列', '新列', 'COLUMN' -- 修改列说明
USE EMDB
GO
IF EXISTS (SELECT FROM SYSCOLUMNS WHERE ID=OBJECT_ID('表名') AND NAME='列名')
BEGIN
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=N'说明' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名'
END
修改表结构包括:增加字段、删除字段、增加约束、删除约束、修改缺省值、修改字段数据类型、重命名字段、重命名表。所有这些操作都是用 alter table 命令执行的。
、增加字段,增加字段需要注意的是如果源表里面已经有相应的值,那么新增加的字段需要设置为可以为null,不然会造成增加异常。它的语法是这样的: alter table 表名 add 字段名 字段类型; 你也可以同时在该字段上定义约束,使用通常的语法,如: alter table 表名 add 字段名 字段类型 check (添加约束的字段名 <> ''); 实际上,所有在 create table 里描述的可以应用于字段之选项都可以在这里使用。不过,我们要注意的是缺省值必须满足给出的约束,否则 add 将会失败。 、 删除字段 要删除一个字段,使用下面这样的命令: alter table 表名 drop column 字段列名; 不管字段里有啥数据,都会消失。和这个字段相关的约束也会被删除。 不过,如果这个字段被另外一个表的外键所引用,postgresql 则不会隐含地删除该约束。你可以通过使用 cascade 来授权删除任何依赖该字段的东西,如: alter table 表名 drop column 字段名 cascade; 、增加约束 要增加一个约束,使用表约束语法。比如: alter table 表名 add check (字段名 <> ''); alter table 表名 add constraint 约束名称 unique (字段名); 、 删除约束 要删除一个约束,语法是这样的: alter table 表名 drop constraint 约束名;(如果你在处理一个生成的约束名,比如 $,别忘了你需要给它 添加双引号,让它成为一个有效的标识符。) 和删除字段一样,如果你想删除有着被依赖关系地约束,你需要用 cascade。 一个例子是某个外键约束依赖被引用字段上的唯一约束或者主键约束。 除了非空约束外,所有约束类型都这么用。要删除非空类型,用 alter table 表史 alter column 字段名 drop not null;(要记得非空约束没有名字。) 、改变一个字段的缺省值 要给一个字段设置缺省值,使用一个象下面这样的命令: alter table 表名 alter column 字段名 set default 默认值; 这里一定要注意这么做不会影响任何表中现有的数据行, 它只是为将来 insert 命令改变缺省值。 同时如果要删除缺省值,用 alter table 表名 alter column 字段名 drop default; 这样实际上相当于把缺省设置为空。 结果是,如果我们删除一个还没有定义的缺省值不算错误,因为缺省隐含就是空值。 、 修改一个字段的数据类型,这是我们用得很多的操作。语法是这样的: alter table 表名 alter column 字段名 type 新的类型; 只有在字段里现有的每个项都可以用一个隐含的类型转换转换城新的类型时才可能成功。也就是说新类型和源始类型必须存在兼容的关系,类似于程序语言中的自动转换时所要求的条件。如果需要更复杂的转换,你可以增加一个 using 子句,它声明如何从旧值里计算新值。 这个方法将试图把字段的缺省值(如果存在)转换成新的类型, 还有涉及该字段的任何约束。但是这些转换可能失败,或者可能生成奇怪的结果。 在修改某字段类型之前,你最好删除那些约束,然后再把自己手工修改过的添加上去。 、给字段改名字 alter table 表名 rename column 源字段名 to 新字段名; 、给表改名字 alter table 表名 rename to 新表名;
SQL语句增删改字段、表、修改默认值的更多相关文章
- 【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建
数据库的创建和sql语句增删改查 1. 载入驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, nam ...
- sql语句增删改查(转)
一.增:有4种方法 1.使用insert插入单行数据: 语法:insert [into] <表名> [列名] values <列值> 例 ...
- SQL 语句(增删改查)
一.增:有4种方法1.使用insert插入单行数据: --语法:insert [into] <表名> [列名] values <列值> 例:insert into Strden ...
- 详解数据库引擎与SQL语句增删改查(非常详细,带例)
数据库系统(DBMS): 专门负责数据管理的工具.增加数据.创建索引.建立索引之间的关联关系.更新索引...... 连接器:PHP要访问MySQL,可以通过API访问,也可以通过PHP的驱动,而那个驱 ...
- sql语句增删改查与子查询
修改表 修改表 语法: Alter table <旧表名> rename [ TO] <新表名>; 例子:Alter table `demo01` rename `demo02 ...
- sql语句增删改查(方便你我Ta)
又自学,把SQL的一些常用语句复习了一遍. 整理如下: 1增 1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strde ...
- 安卓开发之sql语句增删改查2(利用谷歌封装好的API进行增删改查)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- 安卓开发之sql语句增删改查
package com.lidaochen.phonecall; import android.content.Context; import android.database.sqlite.SQLi ...
- oracle 基础SQL语句 增删改
一.SQL操作 查询已创建的数据库:SELECT datname FROM pg_database; 创建数据库:CREATE DATABASE wzxdb; 删除数据库:DROP DATABASE ...
随机推荐
- metasploit 读书笔记-EXPLOITATION
一、渗透攻击基础 1.常用命令 show exploits 显示Meta框架中所有可用的渗透攻击模块。 show options 显示模块所需要的各种参数 back 返回Meta的上一个状态 sear ...
- kuangbin专题K(next数组)
题目链接: https://vjudge.net/contest/70325#problem/K 题意: 给出一个字符串 str, 求 str 的所有前缀总共出现的次数. 思路: 先求一次 next ...
- P3628 [APIO2010]特别行动队
\(\color{#0066ff}{ 题目描述 }\) 你有一支由 \(n\) 名预备役士兵组成的部队,士兵从 \(1\) 到 \(n\) 编号,要将他们拆分 成若干特别行动队调入战场.出于默契的考虑 ...
- Buy or Build UVA - 1151 Kruskal+枚举
题意: 大概意思是有 n 个点,现在有 q 个方案 ,第 i 个方案耗费为 ci ,使 Ni 个点联通 ,当然也可以直接使两点联通 ,现求最小生成树的代价. 两点直接联通的代价是欧几里得距离的平方: ...
- Python条件与循环
1.条件语句: 形式: if 判断语句 : 执行语句1elif 判断语句2: 执行语句2elif 判断语句3: 执行语句3#...else: 执行语句4 占位符 pass 2.循环语句 1.wh ...
- java web 简单的权限管理
spring ,springMvc ,mybatis 简单权限管理 其实只需要3张表..admin_group ,function,group 表
- 毕业设计 python opencv实现车牌识别 矩形矫正
主要代码参考https://blog.csdn.net/wzh191920/article/details/79589506 GitHub:https://github.com/yinghualuow ...
- 2015苏州大学ACM-ICPC集训队选拔赛(2)1002
草爷要的雷 Problem Description 扫雷一直是风靡实验室的重要娱乐游戏,在赛前赛后.刷题疲惫的时候,扫一局雷经常可以让队员们感受到身心的振奋,毕竟,劳逸结合刷题,防猝死才是硬道理.但是 ...
- 09-排序2 Insert or Merge (25 分)
According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...
- 表格排序插件datatables
之前用过表格排序插件tinytables,用到后面,随着需求的更改,发现这个插件真的low到爆了,不适合用于多表格,只有一个表格的页面可以凑合着用,有很多局限性. 之后发现了一款表格排序插件datat ...