二、修改表、字段属性设置、索引设置、约束设置



字段属性设置

not null 不为空

auto_increment 设定int类型字段的值可以“自增长”,即其值无需“写入”,而会自动获得并增加

注:此属性必须随同 primary key  或 unique key 一起使用。

[primary] key: 设定为主键。是唯一键“加强”:也不能重复并且不能使用null,并且可以作为确定任意一行数据的“关键值”

unique  [key] : 设定为唯一键:表示该字段的所有行的值不可以重复(唯一性)。

default  ‘默认值’: 设定一个字段在没有插入数据的时候自动使用的值。

comment  ‘字段注释’

索引设置

什么是索引:

索引是一个“内置表”,该表的数据是对某个真实表的某个(些)字段的数据做了“排序”之后的存储形式。

其作用是:极大提高表查找数据的速度!——其效率(速度)可以匹敌二分查找。

注意:索引在提供查找速度的同时,降低增删改的速度。

对创建(设计)表来说,建立索引是非常简单的事,形式如下:

索引类型 (字段名1,字段名2, .... )  //可以使用多个字段建立索引,但通常是一个

有以下几种索引:

普通索引:key(字段名1,字段名2, .... ):它只具有索引的基本功能——提速

唯一索引:unique  key (字段名1,字段名2, .... )

主键索引:primary  key (字段名1,字段名2, .... )

全文索引:fulltext (字段名1,字段名2, .... )

约束设置

什么叫约束:约束就是一种限定数据以符合某种要求的形式(机制)

约束主要有:

主键约束:primary  key (字段名1,字段名2, .... )

其实就是主键索引,也是主键属性。即primary  key有3个角度的理解(说法):字段属性设置为主键,或建立的主键索引,或设定一个主键约束,但他们的本质是一样

唯一约束:unique  key  (字段名1,字段名2, .... ),其实也是“3体合一”(类似primary key)

外键约束:

什么叫外键:就是设定一个表中的某个字段的值,必须“来源于”另一个表的某个主键字段的值。

语法形式:

foreign key (字段名1,字段名2, .... ) references 表名2(字段名1,字段名2, .... )

说明:

对某个(些)字段设定外键,则其相对应的其他表的对应字段需要设置为主键。

非空约束:就是要求该字段的值不能为空,其只能在字段上当作字段属性来设定。

默认约束:就是要求该字段的值在“空”的时候会自动填充该设定的默认值,也只能字段上设定。

检查约束:就是使用一个表达式(逻辑判断)来决定数据是否有效,比如年龄字段,可以使用

tinyint,则可能会超过127就不合适了。

tinynit  unsigned,则0-255是可以的。

但:如果考虑现实情况,假设某保险公司只作150岁以下的人的保险。则我们就可以继续对该字段可能存储的数据进行“约束”。比如类似:if(age > 150){return false}

可惜的是:mysql不支持检查约束的语法和功能。

修改表

修改表是指修改表的结构或特性。理论上创建一个表能做到的事情,修改表也能做到。修改表有二三十项修改项,包括增删改字段,增删索引,增删约束,修改表选项等等。

举例如下:

添加字段:alter table 表名 add [column] 新字段名 字段类型 [字段属性列表];

修改字段(并可改名):alter table 表名 change [column] 旧字段名 新字段名 新字段类型 [新字段属性列表];

修改字段(只改属性):alter table 表名 modify [column]       字段名 新字段类型 [新字段属性列表];

修改字段名:灰常灰常抱歉,没有单纯修改字段名这个功能!

删除字段:alter table 表名 drop [column] 字段名;

添加普通索引:alter table 表名 add index [索引名] (字段名1[,字段名2,...]);

添加主键索引(约束):alter table 表名 add primary key (字段名1[,字段名2,...]);

添加外键索引(约束):alter table 表名1 add foreign key (字段1,[,字段名2,...]) references 表名2(字段1,[,字段名2,...]);

添加唯一索引(约束):alter table 表名 add unique (字段名1[,字段名2,...]);

添加字段默认值(约束):alter table 表名 alter [column] 字段名 set default 默认值;

删除字段默认值(约束):alter table 表名 alter [column] 字段名 drop default;

删除主键:alter table 表名 drop primay key;#每一个表最多只能有一个主键

删除外键:alter table 表名 drop foreign key 外键名;

删除索引:alter table 表名 drop index 索引名;

修改表名:alter table 表名 rename [to] 新表名;

修改表选项:alter table 表名 选项名1=选项值1,选项名2=选项值2,...;

显示所有表: show tables;

显示某表的结构: desc 表名; 或:describe 表名;

显示某表的创建语句:show create table 表名;

重命名表:rename table 旧表名 to 新表名;

从已有表复制表结构:create table [if not exists] 新表名 like 原表名;

从已有表复制表结构:create table [if not exists] 新表名 select * from 原表名 where 1<>1;

创建索引:create [unique | fulltext] index 索引名 on 表名(字段名1[,字段名2,...])。这里省略unique或fulltext,那就是普通索引。实际上此创建索引语句,会在系统内部映射为一条“alter table”的添加索引语句。

删除索引:drop index 索引名 on 表名。实际上,此语句同样被映射为一条“alter table”的删除索引语句。

什么是视图:

视图可以看作是一个“临时存储的数据所构成的表”(非真实表),其实本质上只是一个select语句。只是将该select语句(通常比较复杂)进行一个“包装”,并设定了一个名字,其后就可以通过该名字并把该名字当作一个表来使用。

如果一个select语句比较复杂,又在多个页面需要使用它,则可以将它做成一个视图,方便使用。

又如果,某个数据表中的某些字段不想给别人看(不同公司之间的数据业务交换的时候),但另一个又需要给人看,此时也可以使用视图。

视图创建形式:

create  view   视图名 [(列名1,列名2,...)]   as  一条复杂select语句;

可以将select语句所取得的列重新命名,但也可以不重新命名,则使用select语句中的给定列名。

视图的使用:

其实就是当作一个查询表来用(通常只用于select)

select  *  from  视图名  where 条件  order by .....。

修改视图:

alter view 视图名 [(列名1,列名2,...)] as select语句;

删除视图:

drop  view  [if exists] 视图名;

时间: 2024-10-27 13:31:14

二、修改表、字段属性设置、索引设置、约束设置的相关文章

mysql表属性、索引、约束

1.表属性 创建表的基本语法: create table [if not exists] 表名 (字段列表 [,索引或约束列表])[表选项列表] 其中,字段列表格式如下: 字段名 类型 [属性列表], 字段名 类型 [属性列表]... 属性列表中各个属性之间用空格隔开. 常用的字段属性: auto_increment 设置字段值自动增长,用于整数类型 primary key 设置字段为主键,此时该字段的值可以“唯一确定”一行数据 unique key 设置字段为唯一的,在整个数据表中不会重复 n

mysql如何用sql语句修改表字段?

1.今日任务根据下表用sql语句创建表结构 2.在创建上图表结构的时候,不小心把最后一个字段写成了全大写的STATUS,看着实在不协调,于是准备修改这个字段 3.修改的方法有很多种 1.我用的是mysql数据库,可以直接选择表,右键设计表,直接修改保存就ok 2.或者直接DROP TABLE 表把表删除,重新CREATE TABLE表来新建表 2.但是我需要的是用sql语句来修改,输入下图sql语句运行一下就修改成功了 注意:有的人看到这受影响的行数为0,就要问一句到底有没有修改成功,答案是有的

MSSQL修改表字段

修改表(将某列长度增加),此时原有的列不会被真正替换,而是是将新列加到该表最后,我们可以使用DBCC PAGE查看原油的数据仍然在那里. 示例: use tempdb go create table a(col1 smallint, col2 char(2000), col3 char(1000) ) 此时在表a上修改列col2为char(3000) alter table a alter column col2 char(3000) 在我们理解中,该表目前单行数据长度4002再加内部使用的一点

SQL修改表字段,加附属属性

GO ALTER TABLE [dbo].[t_Enroll] ADD IsNeedForm INT NULL DEFAULT 0 Go EXEC sys.[sp_addextendedproperty] @name = 'MS_Description',@value = '是否填写表单',@level0type = 'SCHEMA',@level0name = 'dbo',@level1type = 'TABLE',@level1name = 't_Enroll',@level2type =

EF4.1 Code First 生成数据库前,字段属性如何在实体里面设置默认值?

midifan.com/moduleuser-index-419370.htmmidifan.com/moduleuser-index-419463.htmmidifan.com/moduleuser-index-419492.htmmidifan.com/moduleuser-index-419504.htmmidifan.com/moduleuser-index-419484.htmmidifan.com/moduleuser-index-419553.htmmidifan.com/modu

010.里式转换、命名空间、字段属性、索引器

1.is asis:判断对象和类型的兼容 兼容---true 不兼容---false 子类兼容父类 子类对象 is 父类类型 --true对象 is 类型 (对象为此类型的对象 对象为此类型的子类的对象 --true)public class Person{}public class Student:Person{} Person per=new Person();Student stu=new Student();Person person=new Student();返回true:per i

DB2修改表字段

1:删除字段非空属性 alter table XXX alter column XXX drop not null 此特性需要DB2 9.0以上的版本 2:添加字段非空属性alter table XXX alter column XXX set not null 3:添加一个新字段alter table XXX add column XXXX varchar(100) 4:删除一个字段alter table XXX drop column XXX 5:增加字段的长度alter table XXX

oracle修改表字段

--添加字段 alter table PRE_MENINF add ( name1 VARCHAR2(10)); -- 修改字段的长度- alter table PRE_MENINF modify (name1 VARCHAR(50));

(二)表的连接与外键约束

外键约束和表连接 [建立表的关系] 1.额外建立一张表描述两个表之间的关系,存储两张需要连接的表的主键对应关系. 2.利用外键约束 外键:一张表的某个字段引用着另一张表的主键,在数据多的表中多一个字段,存储对应的另一张表的主键. 外键的创建: CONSTRAINT <外键名前缀> FOREIGN KEY <表中的键名> REFERENCES <引用的表名> (<引用的字段>); 级联: 删除了一部分,有对应关系的另一个部分会被删除. [表连接] 假如有t_s