您的位置:新葡亰496net > 网络数据库 > 新葡亰496net:数据库之mysql篇,mysql字段约束

新葡亰496net:数据库之mysql篇,mysql字段约束

发布时间:2019-07-14 13:23编辑:网络数据库浏览(130)

    一、 约束的意义和归类
    1.1束缚的意义:是一种限制,用于限制表中的数据,保障数据的完整性和一致性。
    1.2束缚的归类:
    ①not null:非空,保险字段不可能为空。违反约束不会报错,然则会有警示,适用于说一些连串。
    ②default:暗许约束,当数码插入的时候,钦点的字段若无数量插入,即插入暗中同意值。
    ③primary key:主键,保险字段具有唯一性,並且非空,等价于独一 非空的咬合。
    ④unique:独一,用于保障字段的唯一性,可以为空。
    ⑤check:检查约束,mysql不扶助。
    ⑥foreign key:外键约束,用于约束八个表的关联,用于保障该字段的值必须来自于主表的关联列的值。在从表的增加的外键约束,用于引用主表中某列的值。
    1.3增加约束
    列级约束:语法上六大封锁都帮衬,然则外键约束尚未效果与利益。【mysql不帮助检查约束】
    表级约束:除了非空和暗中认可,其余都协理。
    累加时机:创立表时、修改表时。
    二、 独一约束和主键约束比较、外键分析
    1.主键独一键的比较
    新葡亰496net 1
    2.外键深入分析
    ①在从表设置外键关系
    ②从表的外键列的门类和主表的关连串类型供给一律或然协作
    ③主表的关联列必须是叁个key,主键只怕是独一键
    ④插入数据的时候,先插入主表,然后插入从表
    ⑤删减数据的时候,先删除从表,再删除主表
    三、 创设表时加上约束
    语法概述:
    Create table 表名(
    字段名 字段类型 列级约束,
    字段名 字段类型,
    表级约束
    )
    1.加多列级约束
    ①在字段类型之后直接助长,可以有八个一直加空格隔断
    ②支持:默认、主键、唯一、非空
    新葡亰496net 2
    新葡亰496net 3
    列级约束不能够将外键约束增加成功。
    2.加多表级约束
    【constraint 约束名】 增加约束名字,是可选的。
    新葡亰496net 4
    新葡亰496net 5
    新葡亰496net 6
    ①主键的命名失效,主键名字只可以是primary
    ②外键增多成功,外号也幸不辱命加多
    ③check 检查约束,mysql不支持
    3.束缚的通用写法
    新葡亰496net 7
    新葡亰496net 8
    四、修改表时拉长约束
    1.加多列级约束
    alter table 表名 modify column 字段名 字段类型 新约束
    2.增加表级约束a
    alter table 表名 add [constraint 约束名] 约束类型(字段名) [外键的援用]
    新葡亰496net 9
    新葡亰496net 10
    新葡亰496net 11
    [1]丰硕非空约束
    alter table userchen modify column userchen varchar(20) not null;
    新葡亰496net 12
    [2]增多暗中认可约束
    新葡亰496net 13
    [3]累加主键
    新葡亰496net 14
    [4]增进独一约束
    新葡亰496net 15
    [5]加上国外国语学院键【表级约束】
    新葡亰496net 16
    五、删除约束
    [1]删除非空约束
    新葡亰496net 17
    [2]去除暗中同意约束
    新葡亰496net 18
    [3]除去主键
    新葡亰496net 19
    [4]删除独一键
    新葡亰496net 20
    [5]剔除此之外键
    新葡亰496net 21
    六、级联删除
    新葡亰496net 22
    新葡亰496net 23
    状态一、当删除父类数据时,对应从表的数额也将被去除
    新葡亰496net 24
    新葡亰496net 25
    场馆二、级联删除置null
    新葡亰496net 26
    新葡亰496net 27

    NOT NULL:非空,该字段的值必填

    mysql字段约束

    1、创制数量库表:

    成立数据表:create table 数据表名

     

    UNIQUE:独一,该字段的值不得重复

    字段约束用来保管数量的完整性(可信赖性和精确性)。

    1主键约束
    1>主键简要介绍:
    主键是表的标识列,在mysql中援助将三个或多少个字段作为叁个主键来利用。关周全据库依赖于主键,主键在物理层面只有多个用途:
    独一的表爱他美行记录作为一个足以被外键引用的得力对象。 2>设置主键:
    始建主键分为单字主键和复合主键
    新葡亰496net:数据库之mysql篇,mysql字段约束。单字主键创设只需在字段前边增添primary key
    新葡亰496net 28
    如上航海用教室所示,在mysqltest数据库创设student表,把学生的sid列设置为单字主键。
    复合主键的始建:
    新葡亰496net 29
    借使有一张表,创设的时候未有增加主键,今后要给它增多主键:
    alter table table_name add primary key(字段名称);
    新葡亰496net 30
    如上海体育场所,给已有些good表设置gid为主键。
    3>修改主键:
    修改主键有二种或者,一种是表中有主键,须要将主键修改在其它字段上(如上面给good表增多主键),另一种是表中尚无主键,须求修改字段类型,使其改为主键。类型的修改要选拔modify关键字。
    对此曾经设置了主键的表,主键的修改没办法直接试行。必须先删除原有主键,再复位主键。主键的去除只是删除了点名字段或字段组的主键约束,并不可见删除字段或字段组,三个表中只好有三个主键。
    前方建的book表有主键字段组(bnum、typeid),现将表中的原始主键删除,将字段bnum修改为主键。
    删除主键:alter table table_name drZ喎?" target="_blank" class="keylink">vcCBwcmltYXJ5IGtleTs8YnIgLz4NCjxpbWcgYWx0PQ=="修改主键" src="" title="" />

    2外键约束

    1>外键简介
    外键记录了表与表之间字段的维系。外键将不相同表的字段关联起来,使那么些数量在修改、删除时有着关联,在数额操作时保安这么些数据完整性。
    外键有两个效益:

    让多少本人通过外键来保障数据的完整性和一致性能够增增加少库表关系的可读性
    外键的概念还要依据以下的动静:全数的表必须是InnoDB型,它们不可能是不时表,mysql中独有InnoDB类型的表才支持外键全体要创立外键的字段必须构造建设约束对于非InnoDB表,foreign key 子句会被忽略

    2>外键的利用
    语法:
    alter table table_name add [constraint 外键名] foreign key [id] (index_cil_name, …) references table_name (index_col_name, …)
    [on delete {cascade " set null | no action | restrict}]
    [on update {cascade | set null | no action | restrict}]
    能够看来mysql对创立外键必要严俊,准确到字段的类型和长度。
    对其它键最佳使用 on delete restrict 和on update cascade的方法。
    cascade:外键表中外键字段值会跟随父表被跟新,或各省的列会被删除。
    no action:不实行别的涉及操作
    restrict:restrict也就是no action,即不开始展览另外操作。拒绝父表修改外键关联列,删除记录。
    set null:在父表的外键关联字段被涂改和删除时,外建表的外键列被安装为空(null)。

    对此数据的增进,子表的外键列输入的值,只可以是父表外键关联列已有的值,不然出错。
    幸存刚刚创立的表student和book。把book中typeid字段对应student表中的sid字段:
    新葡亰496net 31
    通过show create table table_name 能够成立表的代码以及存款和储蓄引擎,同时能够见见外键的设置。
    删去外键:
    alter table table_name drop foreign key 外键名;
    一张表的外键大概无休止多个,删除八个外键能够重复使用上述话语。
    新葡亰496net 32
    注:定义外键时,使用“constraint 外键名 foreign key …”语句,能够很有益于的经过外键名来删除了那一个之外键。

    1. 非空约束
      被装置了非空约束的字段,在增加数码的时候必须要有数量。非空约束限制字段中的内容不可能为空,但足以是白手或0。
      在创制表的时候平昔在字段类型前边增加 not null 或null,就可以安装为字段非空恐怕空。
      把已有的表某些字段设置为非空:
      alter table table_name modify 字段名 字段类型 not null;
    2. 默认值
      私下认可值是为字段钦赐默许的数据值。默许值的应用减轻了多少拉长的担负,暗中认可值除了能够定义为钦命值,还是能设置为当下岁月。被设置暗中同意值的字段最佳不为空,不然系统将不能分明该字段在增添时加多null照旧私下认可值。
      增添暗中认可值:
      在创设表的时候一向字段类型前边增添 “default 暗许数据”,对于已有的表使用set关键字:
      alter table table_name alter 字段名 set default 暗许值数据;
      去除已有的暗中认可值:
      alter table table_name alter 字段名 drop default;
      修改暗许值:可施夷光行删除语句在实行增添暗中认可值语句。
      新葡亰496net 33
      上述sql语句先给typeid增多暗中同意值2,再修改为5.
    3. 独一性约束
      独一性约束(unique constraint)必要增添该约束的列字段的值独一,允许为空,但不得不出现一个空值。独一约束能够保障一列或多列不出现重复值。
      创制独一约束字段:
      在建表时,能够一直开立独一约束,能够一贯在字段的数据类型前面直接增添unique关键字,也足以在具备字段定义之后选用[constraint <约束名>] unique(<字段名>)
      对于已经存在的表和字段,增添独一约束要利用add关键字:
      alter table table_name add unique(字段列表);
      去除独一约束:
      alter table table_name modify column 字段名 字段类型 [字段约束];
    4. 自增约束
      自增约束是一种由系统活动扩大并填入字段数值的羁绊。
      auto_increment是多少列的一种本性,只适用于整数类型数据列,
      auto_increment数据列必须有独一约束,以幸免序号重复,
      mysql一张表中只可以有三个auto_increment字段,
      当使用truncate table table_name 删除全部数目时,auto_increment会从1双重发轫编号,
      自增字段的值只可以壹遍加1,而无法像SQL Server数据库中的自增约束一样,每一次加2、每趟加3,
      新葡亰496net:数据库之mysql篇,mysql字段约束。在InnoDB数据表中,不可通过 create table or alter table 的auto_increment=n 语句来改动自增初值。
    5. 剔除钦定名称的封锁
      mysql中,三个字段的具有约束都能够同名约束名删除,使用drop index语句:
      alter table table_name drop index 约束名;
      新葡亰496net 34

    字段约束用来担保数据的完整性(可信赖性和精确性)。 1主键约束 1主键简要介绍: 主键是表的标记列,在mysql中帮助将四个或三个...

           create table table_name(fields_name1 datatype,fields_name2 datatype.....);
    

    1.创制表标准

    create table 表名(

      列名   数据类型    是不是为空   自动排序/默许值  主键/外键/唯一键,

      列名   数据类型    是不是为空   私下认可值   外键/独一键

    ) ENGINE=InnoDB  default  charset=utf8;

     

    强制创制数据库:create database if not exists 数据库名;

    DEFAULT:暗中认可,该字段的值不用手动插入有暗许值

    2、查看表:  

    数据类型不用再说了

    POdysseyIMA昂科雷Y KEY:主键,该字段的值不得重复况且非空 unique not null

          show tables;
    

    是否为空 not null/null

    • not null:表示不可能为空
    • null:表示可感觉空

     

    FOREIGN KEY:外键,该字段的值引用了别的的表的字段

     

    默认值 default

    default  XX:表示此列的数据默以为XX  

     

    1、区别:

     3、创制带有主健约束的表(包罗有单字健和多字健类型)

    自动排序  auto_increment:表示根据列插入数据的先后顺序自动排序

     

    ①、一个表至多有三个主键,但足以有四个独一

         1、单字键约束

    专注:自动排序和暗中同意值不可能同不经常常间设定在二个列上,并且自动排序必须是主键/独一键个中多少个

     

    ②、主键不允许为空,独一可感觉空

             字段名 数据类型,primary key[默认值]

    主键:primary key

    一张表只能有二个主键,主键是独一不重复,并且不能为null,所以一般直接把机动排系列设置为主键

     

    2、相同点

          2、定义完全部列之后钦定主健

    唯一键:unique key

    独一键,看名就能够猜到其意义,独一不重复,但可以为null,但一张表能够有四个独一键

     

    都存有独一性

           constraint <约束名>primary key[默认值]

    外键:foreign key

    假设一张表中有二个非主键的字段指向了别一张表中的主键,就将该字段叫做外键。

    一张表中能够有多个外键,用于将日前表以设定的该列联系别的数据表

     

    新葡亰496net 35

     

     

    1)创设外键

    第一供给两张表,先成立二个part部门表,此时的部门表一时半刻确定为主表

    新葡亰496net 36

     

    插入一些数量得:

    新葡亰496net 37

     

    再次创下制三个user员工表,此时的职员和工人表设定为从表,在创立职员和工人表时,把part_id作为foreign key,以此作为机构表的维系。

    小心:外键设置都安装在从表上,**子表(从表)的外键必须和父表(主表)的涉嫌主键类型一致,否则报错**

     

     新葡亰496net 38

     

    陈设数据,借使插入的数目不在外键约束好的数目内,则会报错

    新葡亰496net 39

     

    那就是外键的效劳。具体在哪些时候使用啊?正是在表与表之间有关系且无法相差极大时,能够利用外键

      

    2)删除外键:先删除却键名,再删外键字段

    3)删除带有外键的数据表:先删除从表,再删除主表

    4)外键约束操作:

     

    新葡亰496net 40

     

     

    cascade创建:当父表的id某字段删除时,子表也随即删除**

    mysql> create table users1(
        -> id smallint unsigned primary key auto_increment,
        -> username varchar(20) not null,
        -> pid smallint unsigned,
        -> foreign key (pid) references provinces(id) on delete cascade  #依据provinces表的外键约束方式cascade
    

     

    5)约束:

    主键,独一键,外键,暗中同意值的功力都是束缚的效劳

     

    新葡亰496net 41

     

     

     

    都支持组合键,但不推荐

     4、多字段联合主键

    ENGINE

    固然数据库引擎,mysql默许辅助的数量引擎:INNODB,BE途胜KLEY,ISAM,MYISAM,HEAP

    最常用的就InnoDB和Myisam

    • Myisam:支持全文索引,查询数据时老快了
    • Innodb:帮忙事物,原子性操作

    原子性操作:设置和修改数据独有三种结果,要嘛成功要嘛不成功,设置中途假如出错,全体有关数据会回滚到从前未操作的情形

     

    1、用于限制几个表的关联,从表的字段值引用了主表的某字段值

        主健同八个字段联合组成

    default  charset = utf8:创造表时设定此表的字符编码为utf8

    2、外键列和主表的被援用列须要类型一致,意义一样,名称无需求

    。语法:

    查阅当期数据表的编码等新闻:show create table  表名;/**show full columns from 表名;**

     

     

    3、主表的被引用列供给是叁个key

       Primary key[字段1,字段2,……]

    2.范例

    1)一般创制法

    新葡亰496net 42

     

     2)也得以安装好后在背后插入,而且主键能够设置复合键,处的id和name复合在一起同属二个主键

    新葡亰496net 43

     

    留意:在创立表时最后一行不加逗号,不然报错

     

    安排数据:

    新葡亰496net 44

     

    专注:当设置有机关排序时,插入数据无需再给定列名和多少,它会自动生成

      

    4、插入数据,先插入主表

      5、使用外键约束

    3.刨除数据表:drop  table 数据表名

    新葡亰496net 45

     

    5、删除数据,先删除从表

         外键用来在多少个表的数据里面确立链接,它能够是一列可能多列。二个表能够有一个或多少个外键。外键对应的是参照他事他说加以考察完整性,三个表的外键可认为空值,若不为空值,则每一个外键值必须等于另二个表中主键的某部值。

    4.查看数据

    能够透过以下二种格局来删除主表的笔录

         外键:首先它是表中的三个字段,它能够不是本表的主键,但对应其它二个表的主键。外键首要作用是保障数据援引的完整性,定义外健后,不容许删除在另三个表中具备关联关系的行。外键的功用是保持数据的一致性,完整性。

    1)数据表音信:show  columns  from  数据表名;

    新葡亰496net 46

     

    2)查看表数据:select  × from  表名;

    新葡亰496net 47

     

    即使数据非常多,加上‘G’表示以网格的样子表现索引:

     新葡亰496net 48

     

     

    #办法一:级联删除

        主表(父表):对于三个具备关联关系的表来讲,相关联字段中主键所在的充足表正是主表。

    5.修改表:alter table 数据表名

    ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY REFERENCES major ON DELETE CASCADE;

        从表(子表):对于八个颇具关联关系的表来讲,相关联字段中外键所在的极度表就是从表。

     

    #主意二:级联置空

        语法:

    1).添加

    1)增添列: alter table 表名  add  列名  数据类型;

    2)增加主键:alter  table 表名  add  primary key(列名);

    3)增多外键:alter table  表名  add constraint  外键名称(随便,注意从名称想到所包括的意义) foreign key 从表(外键字段) references 主表(主键字段)

    4)修改数据库编码:alter database 库名 character set=utf8;

    5)修改数据表编码:alter table 表名  charset= utf8;

     

    ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY REFERENCES major ON DELETE SET NULL;

        Constraint <>foreign key 字段1,【字段2】,references【主表名】主健列1,主键列2……

    2).重设

    1)重设暗许值:alter  table 表名  alter  字段  set  default  值;

    2)重设列:

    • ``alter table 表名 modify column 列名 类型;  -- 类型
    • ``alter table 表名 change 原列名 新列名 类型; -- 列名,类型

     

    专注:当把数据类型由大类型改为小类型,有十分的大可能率数量会屏弃

     

     

    create table 表名(

        外键名字为定义的外键约束的称呼,多个表中不能够有一致名称的外键;字段名代表子表必要增多外键约束的字段列;主表名即被子表外键所凭借的表的名目;主键列表示主表中定义的主键列,大概列组合。

    3).删除

    1)删除列:alter  table  表名  drop 列名

    2)删除多列:aler  table 表名  drop  列名,列名,列名

    3)删除却键:alter  table 表名 modify 列名 

    4)删除默许值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

    5)删除的同期新扩展一列:留心用逗号隔开分离就行

    新葡亰496net 49

    6)删除主键:

    注意:三个表只可以有个三个主键,所以删除主键时得以不要给列名。

    修改列名时,就算列名是主键约束並且自动排列,直接修改会报错:

    新葡亰496net 50

    案由在于mysql无法独立定义七个主键

     

    是的步骤:

    a.先删除自拉长(此时能够改名)

    新葡亰496net 51

     

    b.再删除主键:

    新葡亰496net 52

     

    c.再重复安装列定义:

    新葡亰496net 53

     

     此时的unsigned表示无符号的情趣,也正是非负数,只用于整型

     

    字段名 字段类型 not null,#非空

        关联指的是在关系型数据库中,相关表之间的维系。它是因而相容或雷同的性质或属性组来表示的。子表的外键必须关联父表的主键,且事关字段的数据类型必须同盟。要是类型不相同等,则开创子表时,就能够现出错误。

    6.更新数据:updata table 表名  set 列名 = 值

     

    字段名 字段类型 primary key,#主键

       6、使用非空约束

    表数据操作 

     

    字段名 字段类型 unique,#唯一

         非空约束便是字段值不能为空。

    1.清空表数据:

    • delete from 数据表名,逐个删除(速度一点也不快)
    • truncate  table 数据表名,全体删除(速度很快)
    • DELETE FROM 数据表名 WHERE……,删除某一列满意条件的多少

     

    字段名 字段类型 default 值,#默认

          字段名   数据类型 Not null

    2.对表数据增加和删除改查:

    1)增:

    insert into 表 (列名,列名...) ``values (值,值,值...)【插入单条数据】

    `insert` `into` `表 (列名,列名...)values`(值,值,值...),(值,值,值...)【插入多条数据】

    insert into 表 (列名,列名...) ``select (列名,列名...) ``from 表【把查询到的其他表数据插入】

    新葡亰496net 54

     

     

    2)删:

    delete from 表【删除/清空数据】

    delete from 表 ``where id=1 ``and name``=``'字段' 【删除某一段符合条件的数据】

     

    3)改:

    update 表 ``set 列名与字段关系(如name ='test') where 列名与`字段关系(如id >4)```

     

    4)查:

    select * ``from 表【查询表的所有数据】

    select * ``from 表 ``where ...【查询满足条件的字段数据】

    select 列名`as`.. ``from 表 ... 【查询满足条件的表中所有数据】

     

    5)其他:

     

    a、条件  where

    ``select * ``from 表 ``where id > 1 ``and name != ``'alex' and num = 12;

     

    ``select * ``from 表 ``where id ``between 5 ``and 16;

     

    ``select * ``from 表 ``where id ``in (11,22,33)

    ``select * ``from 表 ``where id ``not in (11,22,33)

    ``select * ``from 表 ``where id ``in (``select nid ``from 表)

     

    b、通配符*

     

    ``select * ``from 表 ``where name like 'ale%'  - ale开头的所有(多个字符串)

    ``select * ``from 表 ``where name like 'ale_'  - ale开头的所有(一个字符)

     

    c、限制  limit

     

    limit参数是从0起先计数

    ``select * ``from 表 limit 5;            - 前5行

    ``select * ``from 表 limit 4,5;          - 从第4行开始的5行

    ``select * ``from 表 limit 5 offset 4    - 从第4行开始的5行

     

    d、排序  order by

    asc  小到大

    desc  大到小

     

    ``select * ``from 表 ``order by 列 ``asc              - 根据 “列” 从小到大排列

    ``select * ``from 表 ``order by 列 ``desc             - 根据 “列” 从大到小排列

    ``select * ``from 表 ``order by 列1 ``desc``,列2 ``asc    - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序

     

    e、分组**group  by /having**

     

    利用having,必须保险分组条件为聚合函数大概那么些字段必须出现在脚下select语句中

     

    聚合函数:max,min,average,sum,count等永久独有三个重回结果的函数

     

    ``select num ``from 表 ``group by num

    ``select num,nid ``from 表 ``group by num,nid

    ``select num,nid ``from 表  ``where nid > 10 ``group by num,nid ``order nid ``desc

    ``select num,nid,``count``(*),``sum``(score),``max``(score),``min``(score) ``from 表 ``group by num,nid

     

    ``select num ``from 表 ``group by num ``having max``(id) > 10

     

    ``特别的:``group by 必须在``where``之后,``order by``之前

     

    f、连表

    新葡亰496net 55

     

     

    新葡亰496net 56

    新葡亰496net 57

     

     

    内连接:

     

    新葡亰496net 58

     

    新葡亰496net 59

     

     

    左外连接:

     

    新葡亰496net 60

     

    新葡亰496net 61

     

    右外连接:

     

    新葡亰496net 62

     

     

    新葡亰496net 63

     

     全连接,左右老是合集:

    新葡亰496net 64

     

     外连接:

     

    新葡亰496net 65

     

    新葡亰496net 66

     

     

    自连接:同三个数据表对本身连接,但必须有八个昵称区分

    新葡亰496net 67

     

    多表删除:

    新葡亰496net 68

     

     

     

    ``无对应关系则不显示

    ``select A.num, A.``name``, B.``name

    ``from A,B

    ``Where A.nid = B.nid

     

    ``无对应关系则不显示

    ``select A.num, A.``name``, B.``name

    ``from A ``inner join B

    ``on A.nid = B.nid

     

    ``A表所有显示,如果B中无对应关系,则值为``null

    ``select A.num, A.``name``, B.``name

    ``from A ``left join B

    ``on A.nid = B.nid

     

    ``B表所有显示,如果B中无对应关系,则值为``null

    ``select A.num, A.``name``, B.``name

    ``from A ``right join B

    ``on A.nid = B.nid

     

    g、组合

    ``组合,自动处理重合

    ``select nickname

    ``from A

    ``union

    ``select name

    ``from B

     

    ``组合,不处理重合

    ``select nickname

    ``from A

    ``union all

    ``select name

    ``from B

     

    6.应用any,some,all,in,not in,exists,not  exists关键词操作

    新葡亰496net 69

     

     

    使用any参数:

     新葡亰496net 70

     

    7.mysql也支撑相比运算符

     

    新葡亰496net 71

     

     

     

    参考自:

     

     

    constraint 约束名 foreign key references 主表

        7、使用独一性约束

    );

        使用独一性约束 unique constraint供给该列独一。允许为空,但只可以出现三个空值。独一约束能够保险一列要么几列不出新重复值。

    注意:

    (1)       在概念完列之后一贯钦赐独一约束。

    列级约束: 除了外键别的类型都扶助,不得以起约束名;

         字段名 数据类型 unique

    表级约束:除了非空和私下认可其余品类都帮忙,能够起约束名,但对主键无效。

        (2)在概念完全数列之后内定独一约束。

    列级约束能够在二个字段上加码两个,中间用空格隔开分离,未有各种供给

         Constraint <约束名>unique <字段名>

    充分非空

        Unique和primary key 的分歧:二个表中能够有五个字段注脚为unique,但不得不有三个primary key 表明;申明为primary key 的列不容许有空值。不过表明为unique的字段允许空值Null的留存。

    alter table 表名 modify column 字段名 字段类型 not null;

        8、使用默许约束

    删除非空

         暗中认可约束(default constraint)钦命某列的默许值。如男人同学比较多,性别就能够默以为男。如若插入一条新的笔录时从没为这些字段赋值,那么系统会自动为这么些字段赋值为男。

    alter table 表名 modify column 字段名 字段类型 ;

        字段名  数据类型 default 暗中同意值

    增加暗中同意

        9、设置表的属性值自动增添

    alter table 表名 modify column 字段名 字段类型 default 值;

           在数据库应用中,平常希望在每一次插入新记录时,系统自动生成字段的主键值。可以由此为表主键加多auto_increment关键字来兑现。暗中认可的,在Mysql中auto_incrtement约束。且该字段必须为主键的一片段。Auto_increment.约束的字段能够是别的整数类型(tinyint,smallint,int,bigint)。

    删去私下认可

        语准绳则:

    alter table 表名 modify column 字段名 字段类型 ;

          字段名 数据类型 auto_increment

    加上主键

        4.2 查看数据表结构

    alter table 表名 add【 constraint 约束名】 primary key;

        1.查看表基本构造语句describe  table_name 或者desc 表名;

    去除主键

        2.查看表详细结构语句 show create table

    alter table 表名 drop primary key;

         Show create table <表名>G;

    丰硕独一

       4.3改变数据表

    alter table 表名 add【 constraint 约束名】 unique;

         1、alter table <旧表名> rename to <新表名>;

    删去独一

       4.4修改字段的数据类型

    新葡亰496net,alter table 表名 drop index 索引名;

           Alter table <表名> modify <字段名><数据类型>

    丰裕外键

       4.5 修改字段名

    alter table 表名 add【 constraint 约束名】 foreign key references 主表;

            Alter table 表名 change 旧字段名 新字段名 新数据类型;

    去除了那个之外键

        4.6加多字段

    alter table 表名 drop foreign key 约束名;

         Alter table 表名 add 新字段名 数据类型 约束条件 first after 已存在字段名

    特点:

         4.7刨除字段

    新葡亰496net 72

          删除字段是将数据表中的某些字段从表中移除

    1、不用手动插入值,能够自行提供系列值,暗中认可从1从头,步长为1

          Alter table 表名 drop 字段名;

    auto_increment_increment

        4.8修心字段的排列地方

    一旦要转移开头值:手动插入值

           Alter table 表名 modify 字段1 数据类型 first|after字段2

    假使要改变步长:退换系统变量

        4.9改换表的储存引擎

    set auto_increment_increment=值;

          Alter table 表名 engine=改换后的积攒引擎名;

    2、三个表至多有二个自增进列

        4.10 删除表的外键约束

    3、自拉长列只可以援助数值型

        Alter table 表名 drop foreign key 外键约束名。

    4、自拉长列必须为贰个key

        4.11剔除数据表

    create table 表(

        Drop table if exist 表1,表2,表3……表n;

    字段名 字段类型 约束 auto_increment

        4.12剔除被别的表关联的主表

    )

          数据表之间存在外键关联的境况下,倘诺直白删除父表,结果会呈现退步。原因是间接删除,将破坏表的参照完整性。要是非得要刨除,能够先删除与它事关的子表,再删除父表,只是这样同期删除了五个表中的数码。但一些情形下恐怕要保留子表,那时如要单独删除父表,只需将关联的表的外键约束原则撤除,然后就能够去除父表。

    alter table 表 modify column 字段名 字段类型 约束 auto_increment

    alter table 表 modify column 字段名 字段类型 约束

    始建数据库

    CREATE DATABASE students;

    USE students;

    创建科目表,增添主键约束

    CREATE TABLE major(id INT PRIMARY KEY,majorName VARCHAR;

    创立学生音信表,增多列级约束

    CREATE TABLE stuinfo(

    id INT PRIMARY KEY,#主键

    stuName VARCHAR NOT NULL UNIQUE,#非空

    seat INT UNIQUE,#唯一

    age INT DEFAULT 18,#暗许约束

    majorId INT REFERENCES major#外键

    );

    查看stuinfo中的有着索引,饱含主键、外键、独一

    SHOW INDEX FROM stuinfo;

    加多表级约束

    新葡亰496net 73

    通用的写法

    新葡亰496net 74

    修改表时累加约束,先重新创造三个表

    新葡亰496net 75

    增加非空约束

    ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR NOT NULL;

    加多默许约束

    ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;

    累加主键

    ①列级约束

    ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;

    ②表级约束

    ALTER TABLE stuinfo ADD PRIMARY KEY;

    加上独一

    ①列级约束

    ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;

    ②表级约束

    ALTER TABLE stuinfo ADD UNIQUE;

    充格外键

    ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY REFERENCES major;

    除去非空约束

    ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR NULL;

    删去私下认可约束

    ALTER TABLE stuinfo MODIFY COLUMN age INT ;

    剔除主键

    ALTER TABLE stuinfo DROP PRIMARY KEY;

    去除独一

    ALTER TABLE stuinfo DROP INDEX seat;

    除去外键

    ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major;

    本文由新葡亰496net发布于网络数据库,转载请注明出处:新葡亰496net:数据库之mysql篇,mysql字段约束

    关键词:

上一篇:没有了

下一篇:没有了