收集转载:

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语句增删改字段、表、修改默认值的更多相关文章

  1. 【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建

    数据库的创建和sql语句增删改查 1. 载入驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, nam ...

  2. sql语句增删改查(转)

    一.增:有4种方法 1.使用insert插入单行数据:                  语法:insert [into] <表名> [列名] values <列值>    例 ...

  3. SQL 语句(增删改查)

    一.增:有4种方法1.使用insert插入单行数据: --语法:insert [into] <表名> [列名] values <列值> 例:insert into Strden ...

  4. 详解数据库引擎与SQL语句增删改查(非常详细,带例)

    数据库系统(DBMS): 专门负责数据管理的工具.增加数据.创建索引.建立索引之间的关联关系.更新索引...... 连接器:PHP要访问MySQL,可以通过API访问,也可以通过PHP的驱动,而那个驱 ...

  5. sql语句增删改查与子查询

    修改表 修改表 语法: Alter table <旧表名> rename [ TO] <新表名>; 例子:Alter table `demo01` rename `demo02 ...

  6. sql语句增删改查(方便你我Ta)

    又自学,把SQL的一些常用语句复习了一遍. 整理如下: 1增 1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strde ...

  7. 安卓开发之sql语句增删改查2(利用谷歌封装好的API进行增删改查)

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  8. 安卓开发之sql语句增删改查

    package com.lidaochen.phonecall; import android.content.Context; import android.database.sqlite.SQLi ...

  9. oracle 基础SQL语句 增删改

    一.SQL操作 查询已创建的数据库:SELECT datname FROM pg_database; 创建数据库:CREATE DATABASE wzxdb; 删除数据库:DROP DATABASE ...

随机推荐

  1. 移动端自适应个人理解与收集——rem

    rem——更好的适配移动端.这个单位我一直想弄个究竟,今天终于看了个差不多.看了很多的博客.心中总算有自己的想法.(还有vh,vw这里我这个小白还没有弄明白就先不写了.) 1.rem可以在html,b ...

  2. 【Linux】-Ubuntu下配置JDK1.8

    前言 这次实在是不想写前言了,好吧,那咱就不写了. 内容 怀着复杂的心情来整理这个小小的操作,其实我的内心是拒绝的,因为太简单了,但是我却花费了很长的时间,有效时间花费了将近两个小时去整理这个小玩意儿 ...

  3. 10.Find All Anagrams in a String(在一个字符串中发现所有的目标串排列)

    Level:   Easy 题目描述: Given a string s and a non-empty string p, find all the start indices of p's ana ...

  4. Python利用百度地图api批量获取地址经纬度

    1.pip安装xlrd,xlwt,requests模块. 2.在工程目录处放置地点Excel文件. python2.7.13代码: #coding:utf-8 import xlrd import x ...

  5. docker上安装eslaticsearch

    一 elasticsearch安装 1 查找镜像: docker search elasticsearch 可以看到如下截图; 2 拉取镜像 docker pull elasticsearch 我并没 ...

  6. VS2010 简单ATL COM开发

    http://blog.csdn.net/wangwenjing90/article/details/8771934#reply http://blog.csdn.net/wangwenjing90/ ...

  7. git学习--远程分支删除

    查看远程分支 git branch -r  使用下面两条命令来删除远程分支 git branch -r -d origin/branch-name git push origin :branch-na ...

  8. 解决浏览器location.href重定向失效问题

    在[location.href]赋值语句后,添加页面刷新代码[location.reload(true)],参数为[true]这样就等价于F5刷新页面了. 需要注意的是:不能把[location.re ...

  9. 江西财经大学第一届程序设计竞赛 C

    链接:https://www.nowcoder.com/acm/contest/115/C来源:牛客网 题目描述 决赛圈还剩下两个人,“伏地魔”XDD和跑毒进圈的FZL,XDD拿着狙击枪AWM瞄准并准 ...

  10. java重载equals和hashCode

    class Employee { private int salary; private java.util.Date hireDay; private String name; public int ...