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,这时

非要删除数据,则先删除从表,在删除主表数据就可以。

相关推荐
九皇叔叔8 小时前
《MySQL 体系架构详解:Server 层、SQL 执行流程与 InnoDB、MyISAM、MEMORY 存储引擎》
sql·mysql·架构
愤怒的苹果ext11 小时前
MySQL Shell备份恢复数据库
数据库·mysql·备份恢复·mysqlsh
sakiko_13 小时前
Swift学习笔记42-SwiftUI的属性包装器(讲解+面试)
笔记·学习·ios·swiftui·swift
自小吃多13 小时前
器件移动、旋转、镜像、对齐、等间距操作笔记
笔记·嵌入式硬件
超兔一体云14 小时前
MySQL索引优化实战——从慢查询到索引调优
后端·mysql
存在morning14 小时前
【Paimon 学习笔记 三】工作流程:Paimon 的批写、流写、批读与流读
笔记·学习
2601_9620748115 小时前
大数据-264 实时数仓 - Canal MySQL的binlog研究 存储目录 变动信息 配置MySQL
大数据·数据库·mysql
2601_9620738115 小时前
大数据-240 离线数仓 - 广告业务 测试 ADS层数据加载 DataX数据导出到 MySQL
大数据·数据库·mysql
老当益壮梁奶奶16 小时前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法
weixin_4660681117 小时前
《十分钟冥想》精读笔记(上):每天10分钟,给大脑做一次“系统减负”
笔记