日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql约束sex_MySQL笔记--约束

發布時間:2025/3/15 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql约束sex_MySQL笔记--约束 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/**

約束

*/

show databases;

use db_26_homework;

show tables;

select sname, sex

from stu;

/**

1 默認約束 default(如果沒有賦值,設置指定的值)

*/

create table student

(

sid int,

sname varchar(4) default '無名'

# 默認約束

);

insert into student (sid)

values (2);

# 不寫,是 默認值

select *

from student;

/**

非空約束 not null (不能為 null)

*/

create table student1

(

sid int,

sname varchar(4) default '無名',

sex char(1) not null

# 非空約束

);

insert into student1 (sid, sname)

values (1, 'he');

# [HY000][1364] Field 'sex' doesn't have a default value

insert into student1

values (3, 'h3h', null);

# [23000][1048] Column 'sex' cannot be null

select *

from student1;

/**

唯一約束 unique (如果值不為 null,值不能重復)

*/

drop table student2;

create table student2

(

sid int,

sname varchar(4) default '無名',

sex char(1) not null,

sorder int unique

# 唯一約束

);

insert into student2 (sid, sex, sorder)

values (1, '男', 1);

# [23000][1062] Duplicate entry '1' for key 'student2.sorder'

# 重復的 key 1

insert into student2 (sid, sex, sorder)

values (1, '男', null);

# 可以為 null,可以為多個 null

/**

檢查約束 check ( 對列的取值范圍設置 ) ! MsSQL 不支持

*/

/**

主鍵約束(不能重復,不能為 null,可以被引用)

*/

create table student3

(

sid int primary key,

sname varchar(11)

);

insert into student3 (sid, sname)

values (1, '韓寒');

# [23000][1062] Duplicate entry '1' for key 'student3.PRIMARY'

# 主鍵約束 不能重復

insert into student3 (sid, sname)

values (null, '張三');

# [23000][1048] Column 'sid' cannot be null

# 主鍵不能為 null

insert into student3 (sname)

values ('里斯');

# [HY000][1364] Field 'sid' doesn't have a default value

# sid 沒有默認值

desc student3;

/**

主鍵自增約束 auto_increment

特點1 不賦值、值為 null,值自動增長

特點2 自動自增 = 最大值 + 1

*/

create table student4

(

sid float(4, 1) primary key auto_increment,

# 只能用于數字類型的主鍵列

sname varchar(11)

);

insert into student4 (sname)

values ('張三');

# 不賦值,或者為 null,值自動增長

insert into student4 (sid, sname)

values (11, '里斯');

# 自動增長

insert into student4 (sid, sname)

values (null, '王武');

# 設置 為 null,自動增長

select *

from student4;

/**

創建表后操作約束

添加

*/

create table student5

(

sid int,

sname varchar(11)

);

desc student5;

alter table student5

change sanme sname varchar(11) default '無名';

# 添加默認約束

alter table student5

change sid sid int unique;

# 添加 唯一約束

alter table student5

change sid sid int not null;

# 添加 非空約束

alter table student5

change sid sid int primary key;

# 添加主鍵約束

alter table student5

change sid sid int auto_increment;

# 添加 自增長約束

alter table student5

modify sid int auto_increment;

# 添加 自增長約束

desc student5;

/**

刪除普通約束 not null/default/default

*/

create table student6

(

sid int primary key default,

snmae varchar(11) not null unique,

sex char(1) default '女'

);

desc student6;

alter table student6

change sex sex char(1);

# 刪除約束

alter table student6

modify snmae varchar(11);

# 刪除約束

desc student6;

insert into student6

values (2, '11', '女');

# [23000][1062] Duplicate entry '11' for key 'student6.snmae'

/**

刪除 鍵約束

*/

desc student6;

show create table student6;

/**

CREATE TABLE `student6` (

`sid` int NOT NULL AUTO_INCREMENT,

`snmae` varchar(11) DEFAULT NULL,

`sex` char(1) DEFAULT NULL,

PRIMARY KEY (`sid`),

UNIQUE KEY `snmae` (`snmae`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

*/

alter table student6

drop index snmae;

# 刪除 唯一約束

desc student6;

alter table student6

add unique key hehe (snmae);

# 給 sname 添加唯一約束 名字為 hehe,作用為:在刪除時使用

# 如果添加約束時,沒有指定名字,約束名是類名

alter table student6

drop index hehe;

# 刪除名為 hehe 的唯一約束

/**

刪除主鍵約束 一個表只能有一個主鍵

*/

create table student7

(

sid int primary key auto_increment,

sname varchar(11)

);

alter table student7

drop primary key;

# [42000][1075] Incorrect table definition; there can be only one auto column and it must be defined as a key

# 刪除主鍵約束,需要先刪除自增

alter table student7

modify sid int;

# 刪除 自增約束

desc student7;

/**

創建表之后,添加主鍵約束

*/

alter table student7

add primary key heh (sid);

# 設置 主鍵別名 heh 或者使用 change | modify

desc student7;

show create table student7;

# 查看創建表的語句

/**

CREATE TABLE `student7` (

`sid` int NOT NULL,

`sname` varchar(11) DEFAULT NULL,

PRIMARY KEY (`sid`)

# 可以在最后一行定義主鍵約束和唯一約束

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

*/

/**

聯合主鍵 兩列共同組成一個主鍵

成績表 : 學號+課程號 為聯合主鍵

特點1:兩個值都不能為 null,不能同時重復

*/

create table tab_score

(

sid int, # 學號

cid int, # 課程編號

score float(4, 1),

primary key (sid, cid)

);

insert into tab_score (sid, cid, score)

values (2, 1, 100);

/**

刪除聯合主鍵

*/

alter table tab_score

drop primary key;

# 沒有刪除 not null 的約束

/**

創建表后添加 聯合主鍵

*/

desc tab_score;

select *

from tab_score;

delete

from tab_score;

# 清空表

alter table tab_score

add primary key (sid, cid);

# [23000][1062] Duplicate entry '2-1' for key 'tab_score.PRIMARY'

# 添加失敗,現有的記錄違反了約束

/**

外鍵約束

a 表中要引用 b 表的記錄,可以在 a 表中定義一列作為外鍵列,來引用 b 表的主鍵

此時 a 表為從表,b 表為主表

特點1:一個從表中 可以定義多個外鍵

特點2:可以為 null

特點3:可以重復

特點4:如果外鍵列有值,次值必須在主鍵的主鍵列中存在

特點5:外鍵列只能引用主表的主鍵

特帶你6:刪除主表記錄前 需要先刪除從表的引用或者刪除從表的外鍵約束

*/

create table teacher

(

tid int primary key,

tname varchar(11)

);

drop table student8;

create table student8

(

sid int primary key,

sname varchar(11),

mytid int,

constraint fk_1 foreign key (mytid) references teacher (tid),

# 外鍵約束

# constraint

# fk_1 外鍵約束名,用于刪除

# foreign key (mytid) 指定從表中的外鍵列

# references teacher(tid) 指定主表和主表的主鍵列

mytid_heard int,

constraint fk_2 foreign key (mytid_heard) references teacher (tid)

);

desc student8;

# MUL 外鍵

insert into teacher (tid, tname)

values (1, '張老師');

insert into student8 (sid, sname, mytid, mytid_heard)

values (100, '韓寒', null, null);

insert into student8 (sid, sname, mytid, mytid_heard)

values (1, '韓寒', 1, 1);

insert into student8 (sid, sname, mytid, mytid_heard)

values (2, '韓寒', 1, 1);

insert into student8 (sid, sname, mytid, mytid_heard)

values (2, '韓寒', 2, 1);

# [23000][1062] Duplicate entry '2' for key 'student8.PRIMARY'

#

/**

刪除外鍵約束

*/

alter table student8

drop foreign key fk_1;

# 刪除外鍵約束

/**

創建表后添加外鍵約束

*/

alter table student8

add constraint foreign key fk_1 (mytid) references teacher (tid);

# 添加外鍵約束

總結

以上是生活随笔為你收集整理的mysql约束sex_MySQL笔记--约束的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。