精华内容
下载资源
问答
  • MySQL常见约束条件

    万次阅读 多人点赞 2018-12-02 15:36:23
    约束条件:限制表的数据,保证添加到数据表的数据准确和可靠性!凡是不符合约束的数据,插入时就会失败! 约束条件在创建表时可以使用, 也可以修改表的时候添加约束条件 1、约束条件分类: 1)not null :非空...

    约束条件:限制表中的数据,保证添加到数据表中的数据准确和可靠性!凡是不符合约束的数据,插入时就会失败!
    约束条件在创建表时可以使用, 也可以修改表的时候添加约束条件

    1、约束条件分类:
    1)not null :非空约束,保证字段的值不能为空
         s_name VARCHAR(10) NOT NULL, #非空

    2)default:默认约束,保证字段总会有值,即使没有插入值,都会有默认值!
         age INT DEFAULT 18, #默认约束

    3)unique:唯一,保证唯一性但是可以为空,比如座位号
         s_seat INT UNIQUE,#唯一约束

    4)check:检查性约束【MySQL不支持,语法不报错,但无效】
         s_sex CHAR(1) CHECK(s_sex='男' OR s_sex='女'),#检查约束(Mysql无效)

    5)primary key :主建约束,同时保证唯一性和非空
         id INT PRIMARY KEY,#主建约束(唯一性,非空)

    6)foreign key:外键约束,用于限制两个表的关系,保证从表该字段的值来自于主表相关联的字段的值!
         teacher_id INT REFERENCES teacher(id)   #这是外键,写在列级,Mysql无效

    注意
    1. 列级约束
        上面6种约束都可以写,语法都支持,不报错,但外键约束写了mysql无效不起作用
    2. 表级约束
        非空、默认不支持,其他都可以!

        语法:

          其他: 【constraint 约束名】 约束类型(字段名称) ,

          外键:  【constraint 约束名】 约束类型(字段名称) foreign key(字段名称) references 关联表名(其字段名),

    DROP TABLE IF EXISTS students;
    CREATE TABLE students(
    id INT ,
    s_name VARCHAR(10) not null,# 非空约束
    s_sex CHAR(1) default '男',  # 默认约束
    s_seat INT,
    age INT ,
    teacher_id INT , 
    
    #上面是列级约束,下面有表级约束
    
    CONSTRAINT pk PRIMARY KEY(id), #主建约束,pk是起的名,后面一样
    CONSTRAINT uq UNIQUE(s_seat),  #唯一约束
    CONSTRAINT ck CHECK(s_sex='男' OR s_sex='女'), #检查约束
    CONSTRAINT fk_students_teacher FOREIGN KEY(teacher_id) REFERENCES teacher(id)  #外键约束
    );

     

    2、MySQL修改表时添加或删除约束

         即修改表字段的数据类型或约束

        外键删除约束: ALTER TABLE 表名 DROP CONSTRAINT 约束名称

    1) 非空约束
    alter table students modify column s_name varchar(20) not null; # 添加 
    alter table students modify column s_name varchar(20) ;             # 删除 不写约束条件

    2)默认约束
    alter table students modify column age int default 18; #添加
    alter table students modify column age;                      #删除

    3)唯一键约束
    alter table students modify column seat int unique; #添加
    alter table students drop index seat;                       #删除
    show index from students;                                  #查看唯一约束

    4)主键约束
    alter table students modify column id int primary key; #添加
    alter table students drop primary key;                         #删除 约束名称

    5)外键约束
    alter table students add foreign key(major_id) references majors(id); #添加
    alter table students drop foreign key fk_students_teacher;                #删除 约束名称

     

    3、自增长列 auto_increment

    id int primary key auto_increment,

    一个表中有且只能有一个自增长列,自增长列一般和主键搭配

    修改表的时候添加自增长列:
    alter table t_indentity modify column id int primary key auto_increment;

    删除自增长列:
    alter table t_indentity modify column id int;

    修改自增id的初始值:

    ALTER TABLE 表名  AUTO_INCREMENT=6;

     

     

    展开全文
  • MySQL 查看数据库表结构 修改表结构 修改字段 修改约束条件 修改表名 删除数据库表 查看数据库表结构 可以使用 describe 语句来查看数据表结构,代码如下: describe users; 在控制台输入上述语句后的执行...

    MySQL 查看数据库表结构 修改表结构 修改字段 修改约束条件 修改表名 删除数据库表

    查看数据库表结构

    • 可以使用 describe 语句来查看数据表结构,代码如下:

      describe users;
      
    • 在控制台中输入上述语句后的执行结果如下所示:

      在这里插入图片描述

    修改表结构

    • 在实际应用中,当发现某个表的结构不满足要求时,可以使用 alter table 语句来修改表的结构,包括修改表的名称、添加新的字段、删除原有的字段、修改字段类型、索引及约束,还可以修改存储引擎及字符集等。修改表的语法格式如下:

      alter table 表名 action[,action]...;
      
    • 其中,每个动作(action)是对表所做的修改,MySQL 支持一条 alter table 语句带多个动作,中间用逗号隔开。下面详细介绍一下几种常用的修改

    • 1、修改字段

      • (1)添加新字段

        • 向表里添加新字段可以通过在 action 语句中使用 add 关键字来实现,语法格式如下:

          alter table 表名 add 新字段名 数据类型 [约束条件][first|after 字段名];
          
        • 向表中添加新字段时通常需要指定新字段在表中的位置,如果没有指定 first 或者 after 关键字,则在表的末尾添加新字段,否则在指定位置添加新字段

        • 例如,为用户表 users 添加一个 address 字段,数据类型为 varchar(50),非空约束,可以使用如下的 SQL 语句:

          alter table users add address varchar(50) not null;
          
        • 若要在 users 表中的 sex 字段后增加一个 phone 字段,数据类型为 varchar(20),非空约束,则对应的 SQL 语句如下:

          alter table users add phone varchar(20) not null after sex;
          
        • 添加字段后的 users 表的结构如下图所示

          在这里插入图片描述

      • (2)修改字段

        • 如果只需要修改字段的数据类型,则使用 change 或者 modify 子句,其语法如下:

          alter table 表名 change 原字段名 新字段名 数据类型;
          alter table 表名 modify 字段名 数据类型;
          
        • 例如,要修改 users 表中的 phone 字段,将数据类型由 varchar(20) 改为 int,并设置默认值为 0,下面两种方法是等价的:

          alter table users change phone phone int unsigned default 0;
          alter tablr users modify phone int unsigned default 0;
          
        • 如果需要修改字段的字段名(以及数据类型)这时就只能使用 change 子句了。例如,将 users 表中的 phone 字段修改为 telephone 字段,且数据类型修改为 varchar(20),则可以使用如下 SQL 语句:

          alter table users change phone telephone varchar(20);
          
      • (3)删除字段

        • 删除表字段的语法格式如下:

          alter table 表名 drop 字段名;
          
        • 例如,将 users 表中的 address 字段删除,则可以使用如下 SQL 语句:

          alter table users drop address;
          
    • 2、修改约束条件

      • (1)添加约束条件

        • 向表的某个字段添加约束条件的语法格式如下:

          alter table 表名 add constraint 约束名 约束类型(字段名);
          
        • 例如,向用户表 users 的 telephone 添加唯一性约束,且约束名为 phone_unique,可以使用如下 SQL 语句:

          alter table users add constraint phone_unique unique(telephone);
          
        • 添加了上述约束条件后,users 表的结构如下所示:

          在这里插入图片描述

        • 如果要向订单表 orders 的 uid 字段添加外键约束,且约束名为 fk_orders_users,可以使用如下 SQL 语句:

          alter table users add constraint fk_orders_users foreign key(uid) references users(uid);
          
      • (2)删除约束条件

        • 若要删除表的主键约束,其语法格式如下:

          alter table 表名 drop primary key;
          
        • 例如,要删除订单表 orders 的主键约束,可以使用如下 SQL 语句:

          alter table orders drop primary key;
          
        • 若要删除表的外键约束,其语法格式如下:

          alter table 表名 drop foreign key 外键约束名;
          
        • 例如,要删除订单表 orders 的外键约束,可以使用如下 SQL 语句:

          alter table drop foreign key fk_orders_users;
          
        • 若要删除字段的唯一性约束,则只需要删除该字段的唯一性索引即可,其语法格式如下:

          alter table 表名 drop index 唯一索引名;
          
        • 例如,要删除用户表 users 的 telephone 字段的唯一性索引,可以使用如下 SQL 语句:

          alter table users drop index phone_unique;
          
    • 3、修改表名

      • 修改表名的语法格式如下:

        alter table 原表名 rename to 新表名;
        
      • 还可以使用 rename table 语句,其语法格式如下:

        rename table 原表名 to 新表名;
        
      • 例如,将 users 表的表名修改为 tbl_users,可以使用以下代码:

        alter table users rename to tbl_users;
        rename table users to tbl_users;
        
    • 4、修改表的其他设置

      • 修改表的其他设置,常用的操作如修改存储引擎、默认字符集等。例如,修改 users 表的存储引擎和默认字符集:

        alter table users engine=MyISAM;
        alter table users default charset=utf8;
        

    删除数据库表

    • 要删除数据库表,可以使用 drop table 语句实现,例如删除 users 表:

      drop table users;
      
    • 在默认情况下,当试图删除一个不存在的表时,系统会报错。例如,以下的情况(orders 表不存在):

      drop table orders;
      
    • 系统会出现 Unknown table “orders” 的错误信息,为避免这种错误,可以使用如下语句:

      drop table if exists orders;
      
    展开全文
  • MySQL约束条件

    2020-06-10 13:09:31
    MySQL的常用约束条件的定义、修改和删除
     
    

    1. 约束条件分类:

    • 主键约束:primary key:
      唯一约束 + 非空约束 的组合,可以同时保证唯一性和非空。

    • 外键约束:foreign key:
      用于限制两个表的关系,保证从表该字段的值来自于主表相关联的字段的值

    • 非空约束:not null :
      保证字段的值不能为空

    • 唯一约束:unique:
      保证唯一性但是可以为空,

    • 默认约束:default:
      保证字段总会有值,即使没有插入值,都会有默认值!

    • 自增长列:auto_increment:
      一个表中有且只能有一个自增长列

    • 检查性约束:check
      在MySQL已经不支持,语法不报错,但无效可以使用枚举类型替代:枚举类型(enum)

    create table student(
    studentno int auto_increment primary key , //定义学生学号为主键,设置位自增长
    sname nvarchar(8) not null, //定义学生姓名为非空
    sex nchar(1) default '男',  //定义性别,默认值为‘男’
    birthday datetime null,     //定义出生日期,默认为null
    classno nchar(6) ,          //定义所属教室号
    phone nchar(11) unique,     //定义唯一约束
    email nvarchar(30) unique,  //定义唯一约束
    constraint fk_class         //给约束起名字
    foreign key (classno) references class(classno) //将教室号设置为外键
    );
    
    

    2. 约束范围

    • 列级约束
    create table student(
    studentno int auto_increment primary key , 
    sname nvarchar(8) not null
    );
    
    • 表级约束
    create table student(
    studentno int auto_increment  , 
    sname nvarchar(8) not null,
    primary key(studentno,sname)
    );
    
    • 表级约束可以给约束起名字,方便以后删除:
    create table student(
    studentno int auto_increment  , 
    sname nvarchar(8) not null,
    constraint pk_student primary key(studentno,sname)
    );
    

    3.修改约束

    • 主键 (primary key)
      添加:alter table 表名 add primary key(数据);
      修改:alter table 表名 modify column 列名 数据类型 primary key;
      删除:alter table 表名 drop primary key ;

    • 外键 (foreign key)
      添加:alter table 表名 add foreign key(列名) references 外键表名(外键列名);
      删除:alter table 表名 drop foreign key 外键约束名称;

    • 唯一 (unique)
      添加:alter table 表名 modify column 列名 数据类型 unique;
      删除:alter table 表名 drop index seat;
      查看:show index from 表名;

    • 其他
      添加:alter table 表名 modify column 列名 数据类型 约束条件;
      删除:alter table 表名 modify column 列名 数据类型 ;

    展开全文
  • mysql Navicat12约束条件的设置和详解

    千次阅读 2020-08-23 18:06:53
    文章目录一、什么是mysql约束条件1.1 说明:1.2 约束的分类二、Navicat对应约束的设置位置2.1 not null :非空约束、primary ...约束条件在创建表时可以使用, 也可以修改表的时候添加约束条件 1.2 约束的分类 1)not

    一、什么是mysql约束条件

    1.1 说明:

    约束条件:限制表中的数据,保证添加到数据表中的数据准确和可靠性!凡是不符合约束的数据,插入时就会失败!

    约束条件在创建表时可以使用, 也可以修改表的时候添加约束条件

    1.2 约束的分类

    1)not null :非空约束,保证字段的值不能为空
    s_name VARCHAR(10) NOT NULL, #非空

    2)default:默认约束,保证字段总会有值,即使没有插入值,都会有默认值!
    age INT DEFAULT 18, #默认约束

    3)unique:唯一,保证唯一性但是可以为空,比如座位号
    s_seat INT UNIQUE,#唯一约束

    4)check:检查性约束【MySQL不支持,语法不报错,但无效】
    s_sex CHAR(1) CHECK(s_sex=‘男’ OR s_sex=‘女’),#检查约束(Mysql无效)

    5)primary key :主建约束,同时保证唯一性和非空
    id INT PRIMARY KEY,#主建约束(唯一性,非空)

    6)foreign key:外键约束,用于限制两个表的关系,保证从表该字段的值来自于主表相关联的字段的值!
    teacher_id INT REFERENCES teacher(id) #这是外键,写在列级,Mysql无效

    二、Navicat对应约束的设置位置

    2.1 not null :非空约束、primary key :主建约束、default:默认约束

    在这里插入图片描述

    2.2 unique:唯一

    在这里插入图片描述

    2.3 foreign key:外键约束

    在这里插入图片描述

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,091
精华内容 22,036
关键字:

mysql中修改约束条件

mysql 订阅