数据库基础

来源:互联网 发布:张艺兴黄子韬关系知乎 编辑:程序博客网 时间:2024/06/02 04:59

删除字段:alter table TableName drop column ColumnName 字段类型
添加字段:alter table TableName add ColumnName 字段类型
修改字段类型:alter table TableName alter column ColumnName 字段类型


添加约束:

添加约束的语法为:ALTER TABLE 表名ADD CONSTRAINT 约束名 约束类型  具体的约束说明
常见的约束类型有:
1 主键约束(primary key constraint)
2 唯一性约束(unique constraint)
3 默认约束(default constraint)
4 检查约束(check constraint)
5 外键约束(foreign key constraint)
例如:
alter table student
add constraint pk_stuid primary key (stuid)   //主键约束
alter table teacher
add constraint uq_teaid unique(teaid)          //唯一性约束
alter table student
add constraint df_stusex default ('男') for stusex  //默认约束
alter table student 
add constraint ck_stuage check (stuage between 0 and 100)   //检查约束
alter table course
add constraint fk_teaid foreign key(teaid) references Teacher(teaid)  //外键约束
注意,在同一张表中建立多个约束
alter table student
add constraint pk_stuid primary key(stuid),
    constraint df_stusex default('男') for stusex,
    constraint ck_stuage check(stuage between 0 and 100)
发现一个有趣的现象,sqlserver当用identity语句来对字段进行自增自动生成。如果不是因为insert语句本身的原因(例如:不满足约束条件)导致插入不成功,自增仍会进行。
比如说 stuid identity primary key,(identity默认是identity(1,1)基数为1,增量为1)那么在添加数据的时候,第一个stuid为1,第二个为2,这没错。如果某个增加记录出错,例如 insert into student('zhangsan','nan',12)  (student 表结构为(stuid identity primary key,stuname nvarchar(20),stusex default '男',stuage int)stusex有约束必须为'男'或者'女')那么这句插入语句违反了stusex的约束,插入是不成功的,但下一个插入的数据的stuid则从4开始,insert into student('zhangsan','nan',12)插入的时候自增操作还是进行了的,只不过违反check约束而无法插入。但如果是因为插入语句本身的原因例如insert value('zhangsan','男',12)导致插入不成功,则自增不会进行。
sqlserver操作:
1. 查询表中字段名称:SELECT Name FROM SysColumns WHERE id=Object_Id('TABLENAME') 
2.查询表字段名称及类型:select sc.name as '字段名', st.name as '字段类型',sc.length from syscolumns sc,systypes st where sc.xtype=st.xtype and sc.id in(select id from sysobjects where xtype='U' and name='TableName'

0 0
原创粉丝点击