> 데이터 베이스 > MySQL 튜토리얼 > MySQL이 테이블을 생성할 때의 조건은 무엇입니까?

MySQL이 테이블을 생성할 때의 조건은 무엇입니까?

王林
풀어 주다: 2023-06-03 18:55:03
앞으로
1897명이 탐색했습니다.

emp 테이블의 레코드가 추가, 삭제, 수정되었으므로 여기서 스크립트를 다시 생성하여 사용합니다.

create database bjpowernnode;
use bjpowernode;
source C:\Users\Administrator\Desktop\bjpowernode.sql;
로그인 후 복사

constraints

1.

  • 제약조건은 테이블의 제한사항입니다

  • 제약조건의 키워드는 다음과 같습니다. code>

고유성 제약 조건 unique

    기본 키 제약 조건 기본 키
  • not null

  • 唯一性约束 unique

  • 主键约束 primary key

  • 外键约束 foreign key

    외래 키 제약 조건 외래 키
  • MySQL 데이터베이스는 지원하지 않는 제약 조건을 확인하고, Oracle 데이터베이스는

1을 지원합니다. null이 아님(null이 아닌 제약 조건)

null이 아닌 제약 필드는 null 값이 될 수 없으며, 특정 데이터가 포함된 테이블을 생성해야 합니다

. null이 아닌 제약 조건을 필드에 추가합니다. Null 제약 조건 [사용자의 이메일 주소는 비워둘 수 없습니다.]

drop table if exists t_user;
create table t_user(
        id int(10),
        name varchar(32) not null,
        email varchar (32)
);
로그인 후 복사
MySQL이 테이블을 생성할 때의 조건은 무엇입니까?

MySQL이 테이블을 생성할 때의 조건은 무엇입니까?

2.unique(고유 제약 조건)

이메일 주소가 고유한지 확인하는 테이블을 만듭니다

create table t_user(
id int(10),
name varchar(32) not null,
email varchar(128) unique
);
로그인 후 복사
MySQL이 테이블을 생성할 때의 조건은 무엇입니까?

고유 제약 조건의 필드는 반복될 수 없지만 null일 수 있습니다.

MySQL이 테이블을 생성할 때의 조건은 무엇입니까?

위 제약 조건은 열 수준 제약 조건입니다.

테이블 수준 제약 조건:

 create table t_user(
     id int(10),
     name varchar(32),
     email varchar(128),
     unique(email)
 );
로그인 후 복사

1. 테이블 수준 사용 여러 필드에 제약 조건을 추가하는 제약 조건

 create table t_user(
     id int(10),
     name varchar(32),
     email varchar(128),
     unique(name,email)
);
로그인 후 복사

2. 테이블 수준 제약 조건을 제공할 수 있습니다. 나중에 제약 조건을 삭제하려면 이름을 지정하고 이 이름을 사용하세요. 함께 사용됩니다

MySQL이 테이블을 생성할 때의 조건은 무엇입니까?

MySQL이 테이블을 생성할 때의 조건은 무엇입니까?3. 기본 키(기본 키 제약 조건)

MySQL이 테이블을 생성할 때의 조건은 무엇입니까?1. 기본 키에 포함되는 내용 용어:

MySQL이 테이블을 생성할 때의 조건은 무엇입니까?기본 키 제약 조건

기본 키 필드

  • 2 위 세 가지의 관계:

  • 테이블의 필드에 기본 키 추가 제약 조건 이후 해당 필드를 기본 키 필드라고 합니다

에 나타나는 모든 데이터 기본 키 필드를 기본 키 값이라고 합니다

  • 3. 필드에 기본 키 제약 조건을 추가한 후에는 해당 필드를 반복할 수 없으며 null이 될 수 없습니다

  • 기본 키 제약 조건도 동일한 효과를 갖습니다. ''not null Unique''와 같지만 본질은 다릅니다.

''not null Unique'' 외에도 기본 키 제약 조건은 ''not null Unique''

    기본 키를 달성할 수도 있습니다. ''index-index'' 필드도 기본적으로 추가됩니다
  • 4. 테이블에 기본 키 필드가 있어야 합니다. 그렇지 않으면 테이블이 유효하지 않음을 의미합니다

  • 기본 키 값은 다음과 같습니다. 현재 데이터 행 고유 식별자

기본 키 값은 현재 데이터 행의 ID 번호입니다

    테이블의 레코드 데이터 두 행이 완전히 동일하더라도
  • 하지만 기본 키 값이 다르기 때문에 완전히 다른 필드의 두 행으로 간주됩니다.
  • 5. 단일 기본 키이든 복합 기본 키이든 테이블은 하나의 기본 키만 가질 수 있습니다. 제약 조건

  • 필드에 기본 키 제약 조건을 추가하는 것을 단일 기본 키 제약 조건이라고 합니다.

복합 기본 키라고 하는 여러 필드에 기본 키 제약 조건을 추가합니다

  • 6. 속성에 따라 분류:

  • 자연 기본 키: 기본 키 값은 자연수이며, 이 기본 키는 현재 비즈니스와 관련이 없습니다. 관계

비즈니스 기본 키: 기본 키 값은 현재 업무와 밀접한 관련이 있습니다

    업무가 변경되면 기본 키 값이 영향을 받게 되므로 비즈니스 기본 키는 거의 쓸모가 없습니다.
  • 단일 기본 키, 열 수준 제약 조건
  •    create table t_user(
           id int(10),
           name varchar(32),
           email varchar(128),
           constraint t_user_email_unique unique(email)
     );
    로그인 후 복사

  • 단일 기본 키, 테이블 수준 제약 조건

    create table t_user(
        id int(10) primary key,
        name varchar(32)
    );
    로그인 후 복사

복합 기본 키: 테이블 수준 제약 조건만

 create table t_user(
     id int(10),
     name varchar(32),
     primary key(id)
);
로그인 후 복사

MySQL이 테이블을 생성할 때의 조건은 무엇입니까?

MySQL이 테이블을 생성할 때의 조건은 무엇입니까?

auto_increment:主键自增

MySQL数据管理系统中提供了一个自增的数字,专门用来自动生成主键值

主键值不需要用户维护,也不需要用户提供了,自动生成的,

这个自增的数字默认从1开始以1递增:1,2,3,4,....

mysql> create table t_user(
    -> id int(10) primary key auto_increment,
    -> name varchar(32)
    -> );
로그인 후 복사

MySQL이 테이블을 생성할 때의 조건은 무엇입니까?

4. foreign key(外键约束)

1.外键约束涉及到的术语:

  • 外键约束

  • 外键值

  • 外键字段

2.以上三者之间的关系:

  • 某个字段添加外键约束以后称为外键字段

  • 外键字段中的每一个数据称为外键值

3.外键分为单一外键和复合外键

  • 单一外键:给一个字段添加外键约束

  • 复合外键:给多个字段添加外键约束

4.一张表中可以有多个外键字段

设计一个数据库表,用来存储学生和班级信息,给出两种解决方案:

学生信息和班级信息之间的关系:一个班级对应多个学生,这是典型的一对多的关系

在多的一方加外键

第一种设计方案:将学生信息和班级信息存储到一张表中

第二种设计方案:将学生信息和班级信息分开两张表存储,学生表+班级表

  • 学生表 t_student

sno(主键约束)snameclassno(外键约束)
1jack100
2lucy100
3kk100
4smith200
5frank300
6jhh300
  • 班级表t_calss

cno(主键约束)cname
100高三1班
200高三2班
300高三3班

为了保证t_student 表中的classno字段中的数据必须来自于t_class表中的cno字段中的数据,有必要给t_student表中的classno字段添加外键约束,classno称为外键字段,该字段中的值称为外键值。

注意:

1.外键值可以为空

2.外键字段必须得引用这张表中的主键吗?

  • 外键字段引用一张表的字段的时候,被引用的字段必须具备唯一性

  • 即具有unique约束,不一定非是主键

3.班级表为父表,学生表为子表

  • 应该先创建父表,再创建子表

  • 删除数据时,应该先删除子表中的数据,再删除父表中的数据

  • 插入数据时,应该先插入父表中的数据,再删除子表中的数据

MySQL이 테이블을 생성할 때의 조건은 무엇입니까?

DROP TABLE IF EXISTS t_student;
DROP TABLE IF EXISTS t_class;
 
 CREATE TABLE t_class(
 cno INT(3) PRIMARY KEY,
 cname VARCHAR(128) NOT NULL UNIQUE
 );
 
 CREATE TABLE t_student(
 sno INT(3) PRIMARY KEY,
 sname VARCHAR(32) NOT NULL,
 classno INT(3),-- 外键
 CONSTRAINT t_student_class_fk FOREIGN KEY(classno) REFERENCES t_class(cno)
 );
 
 INSERT INTO t_class(cno,cname) VALUES(100,'高三1班');
 INSERT INTO t_class(cno,cname) VALUES(200,'高三2班');
 INSERT INTO t_class(cno,cname) VALUES(300,'高三3班');
 
 INSERT INTO t_student(sno,sname,classno) VALUES(1,'jack',100);
 INSERT INTO t_student(sno,sname,classno) VALUES(2,'lucy',100);
 INSERT INTO t_student(sno,sname,classno) VALUES(3,'hh',100);
 INSERT INTO t_student(sno,sname,classno) VALUES(4,'frank',200); 
 INSERT INTO t_student(sno,sname,classno) VALUES(5,'smith',300);
 INSERT INTO t_student(sno,sname,classno) VALUES(6,'jhh',300);
 
 SELECT * FROM t_student;
 SELECT * FROM t_class;
 
-- 添加失败,因为有外键约束 
 INSERT INTO t_student(sno,sname,classno) VALUES(8,'kk',500);
로그인 후 복사

重点:典型的一对多关系,设计时在多的一方加外键

5. 级联更新与级联删除

在删除父表中的数据的时候,级联删除子表中的数据

在更新父表中的数据的时候,级联更新子表中的数据

以上的级联更新和级联删除谨慎使用,

因为级联操作会使数据数据改变或删除,数据是无价的。

语法:

  • 级联更新:on update cascase

  • 级联删除:on delete cascase

MySQL이 테이블을 생성할 때의 조건은 무엇입니까?

MySQL이 테이블을 생성할 때의 조건은 무엇입니까?

MySQL中对于有些约束的修改比较麻烦,所以应该先删除约束,再添加约束

删除外键约束:

alter table t_student drop foreign key t_student_class_fk
로그인 후 복사

添加外键约束并级联更新:

alter table t_student add constraint t_student_class_fk foreign key(classno)
references t_class(no) on delete cascade;
로그인 후 복사

添加外键约束并级联删除:

alter table t_student add constraint t_student_class_fk foreign key(classno)
references t_class(no) on update cascade;
로그인 후 복사

级联删除

MySQL이 테이블을 생성할 때의 조건은 무엇입니까?

MySQL이 테이블을 생성할 때의 조건은 무엇입니까?

级联更新

MySQL이 테이블을 생성할 때의 조건은 무엇입니까?

MySQL이 테이블을 생성할 때의 조건은 무엇입니까?

위 내용은 MySQL이 테이블을 생성할 때의 조건은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿