zoukankan      html  css  js  c++  java
  • MySQL的约束

    主键约束

    有两种方式可以添加主键约束:
    1.在定义列的同时指定主键;
    2.在定义完字段之后再指定主键。

    create database MyDb;
    use MyDb;
    
    create table t_user1(
    userId int primary key,  //在定义列的同时指定主键;
    name varchar(32),
    password varchar(11),
    phone varchar(11),
    email varchar(32));
    
    create table t_user2(
    name varchar(32),
    phone varchar(11),
    email varchar(32),
    primary key(name,phone) //在定义完字段之后再指定主键。
    );
    
    外键约束

    在MySQL中给表中字段添加外键约束的语法规则如下:

    constraint 外键名 foreign key 字段名 references 主表名(主键名)
    

    创建两张表如下,给t_student表添加外键约束,外键为classId,外键名称为fk_stu_class1。

    表t_class
    字段名称 数据类型 备注
    id INT 班级Id,主键
    name VARCHAR(22) 班级名称
    表t_student
    字段名称 数据类型 备注
    id INT 学号,主键
    name VARCHAR(22) 学生姓名
    classId INT 班级ID,外键
    
    CREATE DATABASE MyDb;
    use MyDb;
    
    create table t_class
    (id int primary key,
    name varchar(22)
    );
    
    create table t_student(
    id int primary key,
    name varchar(22),
    classId int,
    //添加外键
    CONSTRAINT fk_stu_class1 FOREIGN KEY(classId) REFERENCES t_class(id));
    
    常用约束

    唯一约束(UNIQUE) 唯一约束(Unique Constraint)要求该列唯一,允许为空,但是只能有一个空值。唯一约束可以确保一列或者几列不出现重复值。
    非空约束 (not null)
    默认约束(DEFAULT) 默认约束:即给字段一个默认值。如果要添加的是中文默认值,则需要加上DEFAULT CHARSET=utf8;
    表的属性值自动增加 (AUTO_INCREMENT),默认情况下初始值和增量都为1。
    在数据库MyDb中创建表t_user,表结构如下:

    字段名称 数据类型 备注
    id INT 用户ID,主键,自动增长
    username varchar(32) 用户名,非空,唯一
    sex varchar(4) 性别,默认“男”
    提示:若要给字段添加两个或者两个以上的约束,约束之间以空格隔开即可。
    
    create table t_user(
    id int primary key auto_increment,
    username varchar(32) not null unique,
    sex varchar(4) default '男')
    default charset=utf8;
    


    删除表的外键约束

    alter table 表名 drop foreign key 外键约束名; 
    

    建立了主表tb_dept和子表tb_emp,在表tb_emp上添加了名称为emp_dept的外键约束,外键名称为DeptId,依赖于表tb_dept的主键Id,下面那是两张表的结构展示:


    删除数据表tb_emp的外键约束emp_dept。

    alter table tb_emp drop foreign key emp_dept;
    
  • 相关阅读:
    Win7 64位环境下安装mysql5.6
    High CPU Usage 原因及分析
    SQL Server 2012 AlwaysOn 亲身实历记
    elasticsearch的简单介绍
    url().openStream 的超时问题处理
    关于数据库tinyint 字段的值范围
    linux磁盘空间不足预警的相关问题
    关于Dubbo一个接口多个实现的解决方案
    一个优化登录判断的技巧
    SimpleDateFormat的线程安全问题与解决方案
  • 原文地址:https://www.cnblogs.com/HelloCTF/p/12782601.html
Copyright © 2011-2022 走看看