MySQL笔记

1.NOT NULL 非空约束


 (1)使用DDL(Database Difinion Language)语言将非空约束建立
 在表结构上
   create table temp(
     id int not null,
     name varchar(255) not null default 'ABC',
     gender char(2) null); --数据库定义语言
--测试 
   mysql> insert into temp(id,gender) values(id,'男');
 (2)使用sql语句添加非空约束
  
mysql> alter table temp modify gender char(2) not null 
default '男';
  (3)取消非空约束
mysql> alter table temp modify gender char(2) null;


2.唯一约束 :Mysql给唯一约束列名默认创建了唯一索引


(1)通过表结构创建
  
mysql> create table temp2(
    -> id int not null,
    -> name varchar(25),
    -> password varchar(10),
    -> constraint uq_name_password unique(name,password)
    -> );
 (2)通过sql语句建立唯一约束
 添加唯一约束 
alter table temp add unique(name, password);
添加唯一性约束
alter table temp modify name varchar(25) unique;
(3)删除约束
 alter table temp drop index(关键字) name(约束名称);

3.主键约束:是相当于唯一约束和非空约束的组合


(1)创建唯一主键的方式
 第一种: create table temp(
        id int not null primary key,
        name varchar(25)
);
  第二种:create table temp(
 id int  not null,
name varchar(25),
primary key(id)
)
(2)组合主键

mysql> create table temp3_2(
    -> id int not null,
    -> name varchar(12),
    -> pwd varchar(25),
    -> constraint pk_name_pwd primary key(name,pwd)
    -> );

第二种:通过sql建立组合主键
 alter table temp add primary key(name, pwd);
 (3)删除主键
 ysql> alter table temp3_2 drop primary key;

4.通过表结构设置自增


5.mysql的外键约束


  (1)创建外键列
    主表 
    create table classes(
        classes_id int auto_increment primary 
        key,
        name varchar(20)
    );
       create table student(
        id int auto_increment,
        name varchar(22),
        constraint pk_id primary key(id),
        classes_id int references classes(id)
    );
   (2)创建外键约束
    create table student(
        id int auto_increment primary key,
        name varchar(25),
        classes_id int,
        foreign key(classes_id) references classes(id)
    );

6.外键约束


第一种:采用默认约束名称建立外键约束
  (1)主表中的id必须是主键约束或者是唯一约束
  (2)从表中的外键值必须在主表中能找到或者为空即外键值可
  以为空
  (3)在表结构中创建外键约束的语句是
      foreign key(外键字段) references 主表名称(主表中的
      主键字段)
   create table student(
        id int auto_increment primary key,
        name varchar(25),
        classes_id int,
        foreign key(classes_id) references classes(id)
);

第二种:通过指定约束名建立外键约束名
  
mysql> create table student(
    -> sid int not null primary key,
    -> class_id int,
    -> constraint FK_CLASS_ID foreign key(class_id) 
    references classess(cid)
    -> );

7.外键约束的建立:多列外键组合,必须使用表级别用法


   --建立主表
   
mysql> create table classes2(
    -> id int,
    -> name varchar(12),
    -> number int,
    -> primary key(name,number)
    -> );

    --建立从表
    
mysql> create table student2(
    -> sid int not null primary key,
    -> sname varchar(10),
    -> cname varchar(10),
    -> cnumber int,
    -> foreign key(cname,cnumber) references 
    classes2(name,number)
    -> );


8.SQL语句中增加外键约束


  (1)建立默认约束名称的外键
> alter table student2 add foreign key(cname,cnumber) 
references classes2(name,number);
(2)建立指定约束名称的外键
    
mysql> alter table student2 add constraint 
Fk_cname_cnumber foreign key(cname,cnumber) references 
classes2(name,number);


9.在同一张表结构中建立外键

mysql> create table tree(
    -> tid int not null primary key,
    -> tname varchar(20),
    -> parent_id int,
    -> foreign key(parent_id) references tree(tid)
    -> );


10.级联删除

建立表结构的时候添加 on delete cascade;如果在建立外键约束的时候,没有添加on delete cascade,这时
非要删除数据,则先删除从表,在删除主表数据就可以。
  

相关推荐

  1. mySql笔记

    2024-06-07 10:38:02       41 阅读
  2. Mysql笔记

    2024-06-07 10:38:02       36 阅读
  3. mysql - 笔记

    2024-06-07 10:38:02       30 阅读
  4. MySQL笔记

    2024-06-07 10:38:02       10 阅读
  5. MySQL、Oracle笔记

    2024-06-07 10:38:02       30 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-07 10:38:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-07 10:38:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-07 10:38:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-07 10:38:02       18 阅读

热门阅读

  1. 单线服务器与双线服务器的区别?

    2024-06-07 10:38:02       9 阅读
  2. pandas处理DataFrame的方法汇总08

    2024-06-07 10:38:02       5 阅读
  3. 什么是shell脚本?

    2024-06-07 10:38:02       7 阅读
  4. MySQL和Redis的区别

    2024-06-07 10:38:02       9 阅读
  5. shell脚本对编码和行尾符敏感吗

    2024-06-07 10:38:02       9 阅读
  6. 2-链表-61-相交节点-LeetCode160

    2024-06-07 10:38:02       7 阅读
  7. GaussDB 数据库的事务管理

    2024-06-07 10:38:02       8 阅读
  8. Python语言回归:深入探索与实战应用

    2024-06-07 10:38:02       9 阅读