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

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

相关推荐
Turnip120220 小时前
深度解析:为什么简单的数据库"写操作"会在 MySQL 中卡住?
后端·mysql
西岸行者2 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
加号32 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏2 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
starlaky2 天前
Django入门笔记
笔记·django
勇气要爆发2 天前
吴恩达《LangChain LLM 应用开发精读笔记》1-Introduction_介绍
笔记·langchain·吴恩达
WeiXin_DZbishe2 天前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5
悠哉悠哉愿意2 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
勇气要爆发2 天前
吴恩达《LangChain LLM 应用开发精读笔记》2-Models, Prompts and Parsers 模型、提示和解析器
android·笔记·langchain
爱可生开源社区2 天前
MySQL 性能优化:真正重要的变量
数据库·mysql