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

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

相关推荐
冷血~多好9 小时前
mysql实现主从复制以及springboot实现读写分离
java·数据库·mysql·springboot
山川行9 小时前
Python快速闯关专栏的总结
java·开发语言·笔记·python·算法·visual studio code·visual studio
承渊政道9 小时前
【优选算法】(实战掌握分治思想的使用方法)
数据结构·c++·笔记·vscode·学习·算法·leetcode
南境十里·墨染春水9 小时前
C++传记 this指针 及区分静态非静态成员(面向对象)
开发语言·jvm·c++·笔记
星辰_mya9 小时前
MVCC 与事务隔离:MySQL 如何实现“读不阻塞写”?
java·数据库·mysql·面试·架构
神龙斗士2409 小时前
MySQL在Navicat中 库的操作 表的操作
数据库·mysql
chushiyunen9 小时前
lua脚本笔记、redis使用lua解锁
redis·笔记·lua
弘毅 失败的 mian9 小时前
嵌入式系统观
数据库·经验分享·笔记·物联网·嵌入式
Yao.Li9 小时前
Dify 本地运行实操笔记
人工智能·笔记·python
ShineWinsu10 小时前
MySQL安全加固十大硬核操作:硬核防护指南
数据库·mysql·安全