精华内容
下载资源
问答
  • sql语句修改表结构

    千次阅读 2013-08-07 17:33:00
    也说明了表结构的细节设计如约束等,但是没有说明如果创建了一个表结构后修改这个结构,是重新创建还是可以直接修改,学员经常会提出这些问题,下面对使用sql语句修改表结构做一个说明。 修改表结构包括:增加字段...

    这次的教材里面介绍了如何用sql语句创建一个数据库和相应的表结构,也说明了表结构的细节设计如约束等,但是没有说明如果创建了一个表结构后修改这个结构,是重新创建还是可以直接修改,学员经常会提出这些问题,下面对使用sql语句修改表结构做一个说明。

    修改表结构包括:增加字段、删除字段、增加约束、删除约束、修改缺省值、修改字段数据类型、重命名字段、重命名表。所有这些操作都是用 alter table 命令执行的。

    1、增加字段,增加字段需要注意的是如果源表里面已经有相应的值,那么新增加的字段需要设置为可以为null,不然会造成增加异常。它的语法是这样的:

    alter table 表名 add 字段名 字段类型;

    你也可以同时在该字段上定义约束,使用通常的语法,如:

    alter table 表名 add  字段名 字段类型 check (添加约束的字段名 <> '');

    实际上,所有在 create table 里描述的可以应用于字段之选项都可以在这里使用。不过,我们要注意的是缺省值必须满足给出的约束,否则 add 将会失败。

    2、 删除字段

    要删除一个字段,使用下面这样的命令:

    alter table 表名 drop column 字段列名;

    不管字段里有啥数据,都会消失。和这个字段相关的约束也会被删除。 不过,如果这个字段被另外一个表的外键所引用,postgresql 则不会隐含地删除该约束。你可以通过使用 cascade 来授权删除任何依赖该字段的东西,如:

    alter table 表名 drop column 字段名 cascade;

     3、增加约束

    要增加一个约束,使用表约束语法。比如:

    alter table 表名 add check (字段名 <> '');

    alter table 表名 add constraint 约束名称 unique (字段名);

    4、 删除约束

    要删除一个约束,语法是这样的:

    alter table 表名 drop constraint 约束名;(如果你在处理一个生成的约束名,比如 $2,别忘了你需要给它 添加双引号,让它成为一个有效的标识符。)

    和删除字段一样,如果你想删除有着被依赖关系地约束,你需要用 cascade。 一个例子是某个外键约束依赖被引用字段上的唯一约束或者主键约束。

    除了非空约束外,所有约束类型都这么用。要删除非空类型,用

    alter table 表史 alter column 字段名 drop not null;(要记得非空约束没有名字。)

    5、改变一个字段的缺省值

    要给一个字段设置缺省值,使用一个象下面这样的命令:

    alter table 表名 alter column 字段名 set default 默认值;

    这里一定要注意这么做不会影响任何表中现有的数据行, 它只是为将来 insert 命令改变缺省值。

    同时如果要删除缺省值,用

    alter table 表名 alter column 字段名 drop default;

    这样实际上相当于把缺省设置为空。 结果是,如果我们删除一个还没有定义的缺省值不算错误,因为缺省隐含就是空值。

    6、 修改一个字段的数据类型,这是我们用得很多的操作。语法是这样的:

    alter table 表名 alter column 字段名 type 新的类型;

    只有在字段里现有的每个项都可以用一个隐含的类型转换转换城新的类型时才可能成功。也就是说新类型和源始类型必须存在兼容的关系,类似于程序语言中的自动转换时所要求的条件。如果需要更复杂的转换,你可以增加一个 using 子句,它声明如何从旧值里计算新值。

    这个方法将试图把字段的缺省值(如果存在)转换成新的类型, 还有涉及该字段的任何约束。但是这些转换可能失败,或者可能生成奇怪的结果。 在修改某字段类型之前,你最好删除那些约束,然后再把自己手工修改过的添加上去。

    7、给字段改名字

    alter table 表名 rename column 源字段名 to 新字段名;

    8、给表改名字

    alter table 表名 rename to 新表名;

    有了这些之后,用sql语句操作数据表及结构就更方便了!

    展开全文
  • sql语句修改表结构和添加约束 create table Tbclass ( clsId int primary key identity(1,1), clsName nvarchar(8) unique, clsTeacher nvarchar(4), clsNumber smallint check(clsNumber >= 20 and ...

    sql语句修改表结构和添加约束

    create table Tbclass
    (
    	clsId int primary key identity(1,1),
    	clsName nvarchar(8) unique,
    	clsTeacher nvarchar(4),
    	clsNumber smallint check(clsNumber >= 20 and clsNumber <= 80)
    )
    create table TbStudent
    (
    	stuId int identity(1,1) primary key,
    	stuName nvarchar(4) not null,
    	stuNumber char(9) unique,
    	stuGender bit default(1),
    	stuAddress nvarchar(32),
    	stuAge smallint,
    	stuPhone char(11),
    	stuClassId int foreign key references  Tbclass(clsId)
    
    )
    

    以下操作是在上面建的表的前提下完成的

    1.删除一列

    alter table TbStudent drop column stuPhone
    

    2.添加一列

    alter table TbStudent add  stuPhone char(11)
    

    3.修改字段的数据类型

    alter table TbStudent alter column stuGender nchar(1)
    

    4.添加主键约束

    alter table TbStudent add constraint Pk_TbStudent_StuId primary key(StuId)
    

    5.添加唯一性约束

    alter table TbStudent add constraint UK_TbStdent_StuName unique(stuName)
    

    6.添加check约束

    alter table TbStudent add constraint CK_TbStudent_StuAge
    check(stuAge>=20 and stuAge <=30)
    

    7.非空约束,实际上就是对列的数据类型修改

    alter table TbStudent alter column stuPhone char(11) not null
    

    8.添加外键约束

    alter table TbStudent add constraint FK_TbStudent_stuClassId 
    foreign key(stuClassId) references Tbclass(clsId)
    

    9.外键的级联 删除或更新

    --级联删除
    alter table TbStudent add constraint FK_TbStudent_stuClassId 
    foreign key(stuClassId) references Tbclass(clsId) on delete cascade 
    --级联更新
    alter table TbStudent add constraint FK_TbStudent_stuClassId 
    foreign key(stuClassId) references Tbclass(clsId) on update cascade 
    

    10.删除约束

    alter table TbStudent drop constraint FK_TbStudent_stuClassId
    
    展开全文
  • SQL语句修改表结构和添加约束

    千次阅读 2018-10-17 20:37:57
    --1.删除一列 alter table TbStudent drop column stuPhone --2.... alter table TbStudent add ...修改字段的数据类型(中Gender列不能有数据) alter table TbStudent alter column stuGender nchar(1) -...

    --1.删除一列

    alter table TbStudent drop column stuPhone

    --2.添加一列

    alter table TbStudent add  stuPhone char(11)

    --3.修改字段的数据类型(表中Gender列不能有数据)

    alter table TbStudent alter column stuGender nchar(1)

    --4.添加主键约束

    alter table TbStudent add constraint PK_TbStudent_stuId primary key(stuId)

    --5.添加唯一性约束

    alter table TbStudent add constraint UK_TbStudent_stuName unique(stuName)

    --6.添加check约束

    alter table TbStudent add constraint CK_TbStudent_stuAge
    
    check(stuAge>=18 and stuAge<=35)

    --7.添加非空约束,实际上就是对列的数据类型修改

    alter table TbStudent alter column stuPhone char(11) not null

    --8.添加外键约束

    alter table TbStudent add constraint FK_TbStudent_stuClassId
    
    foreign key(stuClassId) references TbClass(clsId)

    --9.外键的级联删除/更新

    --语法: on delete [no action cascade]

    --       on update [no action cascade]

    alter table TbStudent add constraint FK_TbStudent_stuClassId
    
    foreign key(stuClassId) references TbClass(clsId) on delete cascade

    --10.删除约束

    alter table TbStudent drop constraint Fk_TbStudent_stuClassId

    --11.一条语句删除多条约束

     alter table TbStudent drop constraint Fk_TbStudent_stuClassId,CK_TbStudent_stuAge

     --12.添加一条语句,添加多个约束

      alter table TbStudent add
    
      constraint FK_TbStudent_stuClassId foreign key(stuClassId) references TbClass(clsId)
    
      constraint PK_TbStudent_stuId primary key(stuId)
    
    

     

    展开全文
  • 知识点:使用SQL语句创建完整版数据库、使用SQL语句创建、数据库创建好以后新增加字段、修改字段、删除字段的方法。删除数据库和数据库的方法。 需要掌握的知识: SQL Server数据库第一课:常用数据库介绍、...

    知识点:使用SQL语句创建完整版数据库、使用SQL语句创建表、数据库表创建好以后新增加字段、修改字段、删除字段的方法。删除数据库表和数据库的方法。

    需要掌握的知识:

    SQL Server数据库第一课:常用数据库介绍、数据库基本概念了解、登录SQL Server数据库的方法

    SQL Server数据库第二课:创建数据库表、完善数据库表的设计、建立数据库表之间的关系

    SQL Server数据库第三课2:使用create语句新建数据库、数据库表

    部分英语单词代表的意思:

    database:数据库 table:表 column:列 create:创建 use:使用
    primary:主要的 unique:唯一的 check:检查 default:默认 identity:标识列
    not null:非空(不允许为空) alter:修改 add:增加 drop:删除 constraint:约束
    foreign:外键 references:参考(引用) key:键    

     

    1、使用SQL语句创建完整版数据库

     

    1.1 回顾:在图形界面创建数据库时,我们所进行的一些设置

    分析:数据库名称,我们自己起的。系统会根据数据库名称,默认有两个文件(主数据文件和日志文件),我们还可以设置这两个文件的初始大小、自动增长/最大大小、保存路径。

     

    1.2 使用SQL语句创建数据库(完整版)

    第一步:在SSMS的工具栏点击【新建查询】。

    第二步:编写SQL语句

    注意:

    • --(两个短横线)是SQL语句的单行注释(绿色文字部分)
    • 创建数据库时,分别设置主数据文件和日志文件的相关内容(文件名、文件物理路径、文件初始大小、最大值、增量)
    • 不同项之间用英文逗号隔开
    • 文件增量,可以直接指定数字+mb,也可以用百分比表示,如10%、20%等
    --创建数据库StudentDB
    create database StudentDB                       --创建数据库
    	--创建主数据文件的SQL语句
    	on primary(                                 --主数据文件默认属于primary文件组,因此可以省略primary
    		name='StudenDB',                      --主数据文件的逻辑名称(数据库名称)
    		filename='D:\wangdi\StudentDB.mdf',   --主数据文件的物理名称
    		size=8mb,                             --主数据文件的初始大小,是8mb
    		maxsize=100mb,                        --主数据文件增长的最大值,是100mb
    		filegrowth=10%                        --主数据文件自动增量,是10%
    		)
    	--创建日志文件的SQL语句
    	log on(
    		name='StudenDB_log',                    --日志文件的逻辑名称(数据库名称_log)
    		filename='D:\wangdi\StudentDB_log.ldf', --日志文件的物理名称
    		size=1mb,
    		maxsize=unlimited,
    		filegrowth=64mb
    		)                                       --以上语句都写完以后,再执行

    验证:在对象资源管理器中刷新,可以看到新创建的数据,在数据库StudentDB上单击右键查看属性,可以看到该数据的相关信息。 

     

    2、使用SQL 语句创建数据库表(包含主键、标识列、默认值、check约束的设置)

     

    2.1 回顾在图形界面创建数据库表

    分析:数据库表在设计时主要考虑到列名、数据类型、列属性(是否为空、是否有默认值、是否是标识列)、主键、check约束、是否有外键(两个表之间的关系)。

     

    2.2 使用SQL语句创建数据库表(完整版)

    注意:

    • 想在某个数据库里创建表,首先要use该数据库,否则可能将表创建在其他数据库里  。  
    • 创建数据库表的语法:create table 表名(); 将每一列的设置写在括号里,不同列之间用英文逗号隔开。
    • 每一列的设置:列名 数据类型 属性设置1 属性设置2 属性设置n …… 
    • 设置某一列为主键,直接写primary key即可
    • 设置某一列为标识列:首先数据类型必须是数字类型,直接写identity(标识种子,标识增量)
    • 设置某一列不允许为空:直接写not null即可
    • 设置某一列有check约束:直接写 check(约束条件) 即可
    • 设置某一列有默认值:直接写default(默认值)即可
    • 设置某一列是唯一键:直接写unique即可。unique约束的字段中不能包含重复值,如电话、身份证、学号等不允许出现重复。唯一键一般和not null配合使用,确保每一行数据在该列的取值都是唯一的,一般电话号码、身份证号可以设置唯一键。一个表里只能有一个主键,但是可以有多个唯一键。主键不允许为空,唯一键允许为空(但是一个表里如果唯一键允许为空,那也只能有一行数据该列取值为空,否则认为空也是重复的,不允许插入)
    --使用数据库StudentDB
    use StudentDB;    --想在某个数据库里创建表,首先要use该数据库,否则可能将表创建在其他数据库里        
    
    --创建数据库表StudentInfo
    create table StudentInfo(
    	StudentNo int primary key identity(1831301,1),              --学生编号列,整数类型,主键,是标识列,标识种子1831301,标识增量1
    	Names nvarchar(20) not null,                                --学生姓名列,字符类型,可变长度20字节,不允许为空
    	Gender char(2) check(Gender='男' or Gender='女' ) not null, --学生性别列,字符类型,固定长度2字节,只允许填写男或女,不允许为空
    	GradeId int not null,                     --学生年级列,整数类型,不允许为空                  
    	BornDate datetime,                        --出生日期列,日期类型,允许为空
    	Phone nvarchar(20) unique not null,       --学生电话列,字符类型,可变长度20字节,唯一键,不允许为空
    	Addres nvarchar(50) default('湖北武汉')   --学生地址列,字符类型,可变长度50字节,默认值“湖北武汉”,允许为空
    	);

     

    3、使用SQL 语句修改数据库表(新增加字段、删除字段、修改字段)

    常见问题:新创建了表,并且执行以后,发现需要修改表的内容,很多人直接在原来的表上修改(如果不执行不会有任何作用),如果点击执行,会报错。

    举例:将上面创建的表,出生日期列,设置为不允许为空,再次点击执行时,系统提示“消息 1801,级别 16,状态 3,第 2 行
    数据库 'StudentDB' 已存在。请选择其他数据库名称。”

    错误原因:在同一个数据库中,不允许出现同名的表。

    解决办法:

    • 给表换一个名称再执行(最简单最直接,但是会新创建一个表,后期管理比较麻烦)
    • 使用SQL语句,修改表的结构(推荐使用)。

     

    3.1  使用SQL 语句给数据库表中新增加一个字段(列)

    举例: 给StudentInfo表中新增加一列,用来存放学生的年龄信息
    语法:alter  table 表名 add 列名 数据类型 …… ;

    --给StudentInfo表中新增加一列,用来存放学生的年龄信息
    --语法:alet table 表名 add 列名 数据类型 …… ;
    alter table StudentInfo add  Age int check(Age>=18 and Age<=30);

    执行以后可以在左侧对象资源管理器中,验证结果。

     

    3.2 使用SQL 语句删除数据库表中的某个字段(列)

    语法:alter table 表名 drop column 列名;

    3.2.1  删除表中已有的列(普通列)

    --删除StudentInfo表中的GradeId列
    alter table StudentInfo drop column GradeId;

    3.2.2 使用SQL语句删除表中的已有的列(带有check约束的字段)

    上文中新添加的Age列,带有CHECK约束,这里尝试删除Age列时,提示错误:

    “消息 5074,级别 16,状态 1,第 42 行
    对象'CK__StudentInfo__Age__4F7CD00D' 依赖于 列'Age'。
    消息 4922,级别 16,状态 9,第 42 行
    由于一个或多个对象访问此 列,ALTER TABLE DROP COLUMN Age 失败。”

    分析:表中带有CHECK约束的列,要先删除CHECK约束,再删除列。

    1、删除check约束的前提是已经知道该check约束的名字。
    2、Age列的check约束是我们增加列的时候设置的,并没有给check约束起名字,是系统自动生成了一个约束名。
    3、所以我们要先查到这个约束名→再删除check约束→最后删除列


    第一步:查找约束名。语法:exec sp_helpconstraint @objname=表名;

    第二步:删除check约束。将查询结果里的约束名,单击鼠标右键选择【复制】。删除check约束的语法:Alter table 表名 drop constraint 约束名;

    第三步:删除列。语法:alter table 表名 drop column 列名;

    --删除StudentInfo表中的Age列(删除带有check约束的列)
    /*
    分析:
    1、删除check约束的前提,是已经知道该check约束的名字
    2、Age列的check约束是我们增加列的时候设置的,并没有给check约束起名字,是系统自动生成了一个约束名
    3、所以我们要查到这个约束名
    */
    
    --第一步:查找约束名
    exec sp_helpconstraint @objname=StudentInfo;
    --第二步:删除check约束
    Alter table StudentInfo drop constraint CK__StudentInfo__Age__4F7CD00D;
    --第三步:删除列
    alter table StudentInfo drop column Age;

    思考:

    • 删除StudentInfo表中的Addres列(使用SQL语句删除带有default默认值的列)怎么操作?
    • 删除StudentInfo表中的Phone列(使用SQL语句删除有唯一键的列)怎么操作?
    • 删除StudentInfo表中的StudentNo列(使用SQL语句删除表中的主键列)怎么操作?

    试着完成它。

     

    3.3 使用SQL 语句修改数据库表中的某个字段(列)

    准备事项:给表中新增加几个字段

     

    3.3.1  使用SQL语句修改表StudentInfo中的GradeId列,不允许为空

    需求:sql语句怎么把允许为空的属性修改为不允许为空??

    语法:alter table 表名 alter column 列名 数据类型 not null;

    执行完毕后,可以在对象资源管理器中刷新表,查看列的属性。也可以使用SQL语句sp_help 表名;来查询表的结构,以验证结果。

     

    3.3.2  使用SQL语句修改表StudentInfo中的Phone列,允许为空

    需求:sql语句怎么把不允许为空的属性修改为允许为空??

    语法:alter table 表名 alter column 列名 数据类型 null;

     

    3.3.3  使用SQL语句修改表StudentInfo中的Age列,增加默认值

    需求:sql语句怎么给表中的某一列增加默认值?

    语法:alter table 表名 add constraint 约束名字 default 默认值 for 字段名称 ;

    验证结果:SQL语句sp_help 表名;来查询表的结构,可以看到Age列的default值已经添加。

     

    3.3.4  使用SQL语句修改表StudentInfo中的Addres列,修改表中原有的默认值

    需求:sql语句怎么修改表中的某一列的默认值?

    方法:先删除该列的默认值约束,然后再添加新的默认值

    错误演示:直接增加default值,提示错误“消息 1781,级别 16,状态 1,第 78 行
    已在列上绑定了 DEFAULT。
    消息 1750,级别 16,状态 0,第 78 行
    无法创建约束或索引。请参阅前面的错误。”

    正确操作:先删除Addres列原有的默认值约束,再增加新的默认值

    --修改表StudentInfo中的Addres列,增加默认值为“湖北省武汉市”
    --先删除Addres列原有的默认值约束
    Alter table StudentInfo drop constraint DF__StudentIn__Addre__4BAC3F29;
    --再增加新的默认值
    alter table StudentInfo add constraint DF_StudentInfo_Addres default '湖北省武汉市' for Addres;
    

     

    3.3.4  使用SQL语句修改表StudentInfo中的Addres列,增加check约束

    需求:sql语句怎么修改表中的某一列,给列增加check约束?

    语法:alter table 表名 add constraint 约束名  check (约束字段);

    --修改表StudentInfo中的Email列,增加check约束“数据中必须包含@”
    alter table StudentInfo add constraint CK_StudentInfo_Email  check(Email like '%@%');

    思考:使用SQL语句更改列的check约束怎么操作?

     

    3.3.5  使用SQL语句修改表Grade中的GradeId列,设置为主键

    需求:sql语句怎么修改表中的某一列,将列设置为主键?

    语法:alter table 表名 add constraint 约束名  primary key (字段名);

    前期准备:新创建一个表

    使用SQL语句修改表Grade中的GradeId列,设置为主键

    注意:使用alter语句设置表中某一列为主键时,该列必须为非空。

    思考:怎样使用sql语句修改表的主键?(原表中已经有主键了,需要更换另外一列作为主键)

    提示:先删除主键,然后再重新设置主键。

    语法:

    alter table Grade drop PK_Grade;--删除原有的主键
    alter table Grade add constraint PK_Grade1  primary key (GradeName); --使用sql语句重新设置主键

     

    3.3.6  使用SQL语句设置两个表之间的关系,设置外键

    需求:sql语句怎么设置表中的某一列为外键,引用另一个表中的主键?

    语法:alter table 外键表名 add constraint 外键约束名 foreign key(外键列名) references 主键表名(主键列名)

    --修改表StudentInfo中的GradeId列是外键,引用Grade表中的主键GradeId
    alter table StudentInfo add constraint FK_StudentInfo_GradeId 
    foreign key(GradeId) 
    references Grade(GradeId);

    注意:如果自己起约束名,一般根据约束的类型来起名字加上表名、列名、数字编号等,

    比如:主键约束起名:PK_表名_列名、外键约束起名:FK_表名_列名、check约束起名:CK_表名_列名

    当一个表中有多种同类型约束时,可以再加以数字编号区分。

     

     

    4、使用SQL语句删除数据库表、数据库

    需求:sql语句怎么删除一个数据库表?

    语法:drop table 表名称;  

    举例:删除一个数据库表Grade

    点击执行时,报错“消息 3726,级别 16,状态 1,第 119 行
    无法删除对象 'Grade',因为该对象正由一个 FOREIGN KEY 约束引用。”

    注意:当两个表之间存在引用关系时,要先删除外键表,再删除主键表。

    --使用SQL语句删除数据库表Grade
    --由于Grade表被StudentInfo表引用,因此要先删除StudentInfo表
    drop table StudentInfo;
    drop table Grade;

     

    需求:sql语句怎么删除一个数据库?

    语法:drop database 数据库名称;  

    举例:删除一个数据库表StudentDB

    删除数据库时,报错“消息 3702,级别 16,状态 3,第 124 行
    无法删除数据库 "StudentDB",因为该数据库当前正在使用。”

    --删除数据库StudentDB
    --由于“我们不能删除当前正在使用的数据库。”
    --所以,先使用一下其他数据,比如系统数据库master,然后再删除
    use master;
    drop database StudentDB;

     

    5、总结关键SQL语句:

    1. 添加字段
         alter table 表名 add 字段 类型;
     
    2. 修改字段类型
        alter table 表名 alter column 字段名 类型;
     
    3. 删除字段
        alter table 表名  drop column 字段名;
     
    4. 删除外键/主键 约束
        alter table 表名 drop constraint 外键/主键约束名;
     
    5. 添加外键约束
        alter table 外键表名 add constraint 外键约束名 foreign key(外键列名) references 主键表(主键列名);
     
    6. 添加主键约束
        alter 表名 add constraint 主键约束名 primary key(列名);

     

    本案例完整SQL语句:

    --创建数据库StudentDB
    create database StudentDB       --创建数据库
    	--创建主数据文件的SQL语句
    	on primary(                 --主数据文件默认属于primary文件组,因此可以省略primary
    		name='StudenDB',                      --主数据文件的逻辑名称(数据库名称)
    		filename='D:\wangdi\StudentDB.mdf',   --主数据文件的物理名称
    		size=8mb,               --主数据文件的初始大小,是8mb
    		maxsize=100mb,          --主数据文件增长的最大值,是100mb
    		filegrowth=10%          --主数据文件自动增量,是10%
    		)
    	--创建日志文件的SQL语句
    	log on(
    		name='StudenDB_log',                    --日志文件的逻辑名称(数据库名称_log)
    		filename='D:\wangdi\StudentDB_log.ldf', --日志文件的物理名称
    		size=1mb,
    		maxsize=unlimited,
    		filegrowth=64mb
    		)                                       --以上语句都写完以后,再执行
    
    --使用数据库StudentDB
    use StudentDB;    --想在某个数据库里创建表,首先要use该数据库,否则可能将表创建在其他数据库里        
    
    --创建数据库表StudentInfo
    create table StudentInfo(
    	StudentNo int primary key identity(1831301,1),              --学生编号列,整数类型,主键,是标识列,标识种子1831301,标识增量1
    	Names nvarchar(20) not null,                                --学生姓名列,字符类型,可变长度20字节,不允许为空
    	Gender char(2) check(Gender='男' or Gender='女' ) not null, --学生性别列,字符类型,固定长度2字节,只允许填写男或女,不允许为空
    	GradeId int not null,                     --学生年级列,整数类型,不允许为空                  
    	BornDate datetime,                        --出生日期列,日期类型,允许为空
    	Phone nvarchar(20) unique not null,       --学生电话列,字符类型,可变长度20字节,唯一键,不允许为空
    	Addres nvarchar(50) default('湖北武汉')   --学生地址列,字符类型,可变长度50字节,默认值“湖北武汉”,允许为空
    	);
    
    --给StudentInfo表中新增加一列,用来存放学生的年龄信息
    --语法:alet table 表名 add 列名 数据类型 …… ;
    alter table StudentInfo add  Age int check(Age>=18 and Age<=30);
    
    --删除StudentInfo表中的GradeId列
    alter table StudentInfo drop column GradeId;
    
    
    --删除StudentInfo表中的Age列(删除带有check约束的列)
    /*
    分析:
    1、删除check约束的前提,是已经知道该check约束的名字
    2、Age列的check约束是我们增加列的时候设置的,并没有给check约束起名字,是系统自动生成了一个约束名
    3、所以我们要查到这个约束名
    */
    
    --第一步:查找约束名
    exec sp_helpconstraint @objname=StudentInfo;
    --第二步:删除check约束
    Alter table StudentInfo drop constraint CK__StudentInfo__Age__4F7CD00D;
    --第三步:删除列
    alter table StudentInfo drop column Age;
    
    --为了演示效果,给表StudentInfo新增加两列
    alter table StudentInfo add  Age int check(Age>=18 and Age<=30);
    alter table StudentInfo add  GradeId int;
    alter table StudentInfo add  Email varchar(20) not null;
    
    
    --修改表StudentInfo中的GradeId列,不允许为空
    alter table StudentInfo alter column GradeId int not null;
    
    --查询表结构,验证对列的修改是否起作用(忽视报错,直接执行即可)
    sp_help StudentInfo;
    
    --修改表StudentInfo中的Phone列,允许为空
    alter table StudentInfo alter column Phone nvarchar(20) null;
    
    --修改表StudentInfo中的Age列,增加默认值为18
    alter table StudentInfo add constraint DF_StudentInfo_Age default 18 for Age;
    
    --修改表StudentInfo中的Addres列,增加默认值为“湖北省武汉市”
    --先删除Addres列原有的默认值约束
    Alter table StudentInfo drop constraint DF__StudentIn__Addre__4BAC3F29;
    --再增加新的默认值
    alter table StudentInfo add constraint DF_StudentInfo_Addres default '湖北省武汉市' for Addres;
    
    --修改表StudentInfo中的Email列,增加check约束“数据中必须包含@”
    alter table StudentInfo add constraint CK_StudentInfo_Email  check(Email like '%@%');
    
    
    
    
    --创建数据库表Grade
    create table Grade(
    	GradeId int not null ,           --年级编号列,整数类型,不允许为空
    	GradeName nvarchar(5) not null   --年级名称列,字符类型,可变长度5字节,不允许为空
    	);
    	
    --使用SQL语句修改表Grade中的GradeId列,设置为主键
    alter table Grade add constraint PK_Grade primary key (GradeId);
    
    /*
    思考:怎样使用sql语句修改表的主键?
    (原表中已经有主键了,需要更换另外一列作为主键)
    如将主键列设置为GradeName。两步操作:先删除原有主键,再新增加主键
    alter table Grade drop PK_Grade1;
    alter table Grade add constraint PK_Grade1  primary key (GradeName);
    */
    
    
    
    --修改表StudentInfo中的GradeId列是外键,引用Grade表中的主键GradeId
    alter table StudentInfo add constraint FK_StudentInfo_GradeId 
    foreign key(GradeId) 
    references Grade(GradeId);
    
    
    --使用SQL语句删除数据库表Grade
    --由于Grade表被StudentInfo表引用,因此要先删除StudentInfo表
    drop table StudentInfo;
    drop table Grade;
    
    --删除数据库StudentDB
    --由于“我们不能删除当前正在使用的数据库。”
    --所以,先使用一下其他数据,比如系统数据库master,然后再删除
    use master;
    drop database StudentDB;

     

     

    =======================这里是结束分割线=======================

    展开全文
  • MySql 数据库 sql 语句 修改 表结构

    千次阅读 2012-07-27 14:23:52
    -- 重命名    alter table table_old_name rename table_new_name; -- 重命名字段    alter table tableName change old_field_name new_field_name new_field_type ;  如:alter table ...
  • [img=http://hi.csdn.net/attachment/201201/5/10243688_1325734058kvrD.jpg][/img] 这个,主键,由工程名改成了工程ID,有3个字段的字符串长度由50变成了max,怎么改啊?
  • 1.修改表的列名 oracle: ALTER TABLE 表名 RENAME COLUMN 列名 TO 新列名sqlserver:exec sp_rename '[表名].[列名]','[表名].[新列名]'mysql:ALTER TABLE 表名CHANGE 列名 新列名 列类型 转载于:...
  • 在使用一些表管理工具,或对数据库的物理表结构进行改动时,可以通过数据库的语法脚本实现。 1.创建表 CREATE TABLE dbo.表名 ( 列名1 [列名数据类型](数据长度) 是否为Null, 列名2 [列名数据类型](数据长度)...
  • SQL语句修改SQL表结构转自:http://blog.csdn.net/yangna01314/archive/2010/03/12/5375026.aspx当用户在在SQL Server 2008企业管理器中更改表结构时,必须要先删除原来的表,然后重新创建新表,才能完成表的更改...
  • SQL语句查看表结构修改字段长度

    千次阅读 2019-08-21 16:06:42
    查看表结构: select * from information_schema.columns where table_name='表名' 修改字段长度: ALTER TABLE 表名 ALTER COLUMN 字段名 字段类型(字段长度) Oracle 数据库: 查看表结构: select * from ...
  • SQL语句修改数据库表结构

    千次阅读 2013-03-13 19:54:37
    一、查看表结构  1、查看表的基本结构语句:  DESCRIBE `DEPT`;  2、查看表详细结构语句:  SHOW CREATE TABLE `DEPT`; 二、对表的操作 增加表 CREATE TABLE `dept` (  `id` int(10) unsigned NOT NULL AUTO_...
  • 中增加一个 varchar 列: ALTER TABLE distributors ADD COLUMN address varchar(30); 从中删除一个字段: ALTER TABLE ... 在一个操作中修改两个现有字段的类型: ALTER TABLE distributors ALTER...
  • 使用phpmyadmin管理mysql时,由于很多原因在创建表后无法修改表结构(点击表的结构页面会卡在当前页面没有反应) 在这种情况下,可以使用SQl语句来操作: (1)设置外键: alter table table1 add foreign key ...
  • 2、修改表字段SQL语句 使用rename关键字来实现字段名的修改: alter table 表名 rename column旧的字段名 to 新的字段名名; 使用modify关键字来实现对数据类型的修改: alter table 表名 modify 字段名 数据类型; ...
  • 使用sql语句对表结构进行修改 表结构: 案例:表结构 CREATE TABLE `login_user` ( `id` int(32) NOT NULL AUTO_INCREMENT, `name` varchar(225) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT...
  • SQL语言ALTER语句修改表结构

    千次阅读 2018-06-04 21:15:58
    1、l STUDENT中SNO设为非空和唯一,非空:alter table student modify sno char(8) not null;唯一:alter table student add unique(sno);l STUDENT中增加一个字段SBIRTH,Alter table student add sbirth ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,999
精华内容 1,199
关键字:

sql语句修改表结构