zoukankan      html  css  js  c++  java
  • Mysql 约束说明

    说明:

    约束, 其实就是一种限制条件, 让你不能超出这个控制范围.

    而在数据库中的约束, 就是指 表中的数据内容 不能胡乱填写, 必须按照要求填写. 好保证数据的完整性与安全性.

    一,主键约束

    方式1:创建表时,在字段描述处,声明指定字段为主键

    格式:  字段名 数据类型[长度]  PRIMARY  KEY

     1 // 2 create table users(
     3  id int primary key,--主键
     4  uname varchar(255),
     5  sex varchar(10)
     6 );
     7 
     8 insert into users(id,uname,sex)value(1,'小李','');
     9 
    10 insert into users(id,uname,sex)value(1,'小张','');--设置主键后,插入失败,id值重复
    11 
    12 insert into users(id,uname,sex)value(null,'小刘','');--设置主键后,插入失败,id值不能为NULL

    方式2:创建表时,在constraint 约束,指定字段为主键:

    格式:  [constraint 名称] primary key (字段列表)

    • 关键字constraint可以省略,如果需要为主键命名,constraint不能省略,主键名称一般没用。
    • 字段列表需要使用小括号括住,如果有多字段需要使用逗号分隔。声明两个以上字段为主键,我们称为联合主键。
    //表一
    create table users(
     id int,
     uname varchar(255),
     sex varchar(20),
     constraint pk_users primary key(id) --添加主键约束,单一字段
    );
    
    //表二
    create table users(
     id int,
     uname varchar(255),
     sex varchar(20),
     constraint pk_users primary key(uname,sex) --添加主键约束,多个字段
    );
    
    insert into users(id,uname,sex)values(1,'老王','');
    insert into users(id,uname,sex)values(2,'老张','');
    insert into users(id,uname,sex)values(3,'老张','');--插入失败

    修改表字段主键约束

    格式:ALTER TABLE 表名 ADD [CONSTRAINT 名称] PRIMARY KEY (字段列表)

    //create table users(
     id int,
     uname varchar(255),
     sex varchar(20)
    );
    
    alter table users add constraint pk_users primary key (uname,sex);

    删除主键约束

    格式:ALTER TABLE 表名 DROP PRIMARY KEY

     //sql alter table users drop primary key;  

    a)自动增长列

    我们可以在表中使用 auto_increment(自动增长列)关键字,自动增长列类型必须是整形,自动增长列必须为键(通常是用于主键)。

    • 格式: 字段名 整数类型[长度][约束] auto_increment
    //create table users(
     id int primary key auto_increment,
     uname varchar(255),
      sex varchar(20)
    );
    
    //自增 默认AUTO_INCREMENT 的开始值是 1
    
    alter table users auto_increment=1000

    b)删除表所有数据,自增字段值新插入的值从1开始

    //delete
    
    delete from users;--auto_increment不会重置为1,新记录添加时在原有计数基础上+1
    
    //truncate
    
    truncate from users;--表删除,重新创建表,auto_increment重置为1

    二,非空约束

    格式:字段名 数据类型[长度] NOT NULL

    //create table users(
     id int primary key auto_increment,
     uname varchar(255) not null,--不为空
     sex varchar(20)
    );

    删除非空约束

    • 格式: ALTER TABLE 表名 MODIFY 字段名 数据类型[长度]
    alter table users modify uname varchar(255);

    三,唯一约束

    UNIQUE 约束:指定列的值 不能重复

    格式1:字段名 数据类型[长度] UNIQUE

    格式2:[constraint 名称] UNIQUE (字段)

    //create table users(
    id int primary key,
    uname varchar(255) unique, --添加唯一约束
    sex varchar(20)
    );
    
    insert into users(uname,sex)values('小张','');
    insert into users(uname,sex)values('小张','');--插入失败,uname值重复
    
    //示例二
    create table users(
    id int primary key,
    uname varchar(255),
    sex varchar(20),
    constraint uni_uname unique(uname) --添加唯一约束
    );

    修改表字段唯一约束

    格式:ALTER TABLE 表名 ADD [CONSTRAINT 名称] UNIQUE (字段)

    //create table users(
     id int,
     uname varchar(255),
     sex varchar(20)
    );
    
    alter table users add constraint uni_uname unique(uname) --添加唯一约束

    删除唯一约束

    格式:ALTER TABLE 表名 DROP INDEX 名称(唯一约束名或字段名)

    //删除唯一约束,有约束名
    
    alter table users drop index uni_uname;
    
    //删除唯一约束,没有约束名,使用字段名删除
    
    alter table users drop int uname;

    四,默认约束

    default 约束:用于指定字段默认值,向表中插入记录时,如果没有明确的为字段赋值,则自动赋予默认值。

    格式:字段名 数据类型[长度] DEFAULT 默认值

    //create table users(
     id int primary key auto_increment,
     uname varchar(255),
     sex varchar(20),
     create_time date default now() --添加默认约束 当前时间
    );
    
    insert into users(uname,sex,create_time)values('小张','',now());
    
    insert into users(uname,sex)values('小张','');--使用create_time默认值

    删除默认约束

    格式:ALTER TABLE 表名 MODIFY 字段名 数据类型[长度]

  • 相关阅读:
    Eclipse 安装配置指南
    CentOS下安装Git
    MySQL5.5在Windows下的安装
    NSInvocation调用
    动态调用
    模拟静态变量及静态类继承
    respondsToSelector判断是否实现了某方法
    JAVA闭包
    IMP获取函数指针
    [链表] 对链表与文件的结合使用的一点看法
  • 原文地址:https://www.cnblogs.com/qingjiawen/p/14024676.html
Copyright © 2011-2022 走看看