ホームページ  >  記事  >  データベース  >  MySQLがテーブルを作成するときの条件は何ですか?

MySQLがテーブルを作成するときの条件は何ですか?

王林
王林転載
2023-06-03 18:55:031848ブラウズ

emp テーブルのレコードの追加、削除、変更により、ここでスクリプトが再作成され、使用されます

create database bjpowernnode;
use bjpowernode;
source C:\Users\Administrator\Desktop\bjpowernode.sql;

constraints

1. 制約とは何ですか?

  • #制約は表内の制限です

  • #制約のキーワードは次のとおりです:constraint

##2. 制約の分類

    非 null 制約
  • not null

  • 一意の性的制約
  • 一意

    #主キー制約
  • 主キー
  • #外部キー制約
  • foreign key
  • チェック制約 MySQL データベースではサポートされていませんが、Oracle データベースではサポートされています
  • 1. not null (非- null 制約)
not 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がテーブルを作成するときの条件は何ですか?

2. unique (一意制約)MySQLがテーブルを作成するときの条件は何ですか?

電子メール アドレスが確実に一致するようにテーブルを作成します。は一意です

create table t_user(
id int(10),
name varchar(32) not null,
email varchar(128) unique
);

一意制約のフィールドは繰り返すことはできませんが、null にすることはできますMySQLがテーブルを作成するときの条件は何ですか?

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 に制約を追加します。テーブルレベルの制約では、制約に名前を付けることができ、後でこの名前を使用して制約を削除できます

   create table t_user(
       id int(10),
       name varchar(32),
       email varchar(128),
       constraint t_user_email_unique unique(email)
 );

MySQLがテーブルを作成するときの条件は何ですか?

MySQLがテーブルを作成するときの条件は何ですか? ##not null と unique は併用可能

MySQLがテーブルを作成するときの条件は何ですか?

3. 主キー (主キー制約)

MySQLがテーブルを作成するときの条件は何ですか?1. 主キーに関する用語:

主キー制約

  • 主キー フィールド

  • 主キーの値

  • ##2. 上記 3 つの関係:

##主キー制約をテーブルのフィールドに追加した後、このフィールドは主キー フィールドと呼ばれます

主キー フィールド内の各出現データはすべて主キー値と呼ばれます
  • 3. フィールドに主キー制約を追加した後、そのフィールドを繰り返したり空にしたりすることはできません
主キー制約には、「NULL 一意ではない」と同じ効果があります。

主キー制約は主キーに加えて「非 null 一意」も実現できます。フィールドには、デフォルトで ''index-index'' も追加されます
  • 4。テーブルには主キー フィールドが必要ですが、そうでない場合は、このテーブルが無効であることを意味します

  • 主キーの値は、データの現在の行の一意の識別子です。

主キーの値は、データの ID 番号です。データの現在の行

    テーブル内のレコード データの 2 つの行がまったく同じである場合でも、
  • ただし、プライマリの場合はキー値が異なる場合、2 つの行の 2 つの完全に異なるフィールドとみなされます
  • 5. 単一の主キーであっても、複合主キーであっても、テーブルには主キー制約を 1 つだけ設定できます。

  • 主キー制約をフィールドに追加することを単一主キー制約と呼びます

複数のフィールドに主キー制約を追加することは、単一主キー制約と呼ばれます。これは、複合主キーと呼ばれます。

  • 6. 主キーは、そのプロパティに従って分類されます。

  • # 自然な主キー: 主キーの値は自然数です。この主キーは現在のビジネスとは何の関係もありません。

ビジネスの主キー: 主キーの値は現在のビジネスと密接に関連しています

    ビジネスが変化すると、主キーの値は常に影響を受けるため、ビジネスの主キーはほとんど意味がありません使用。
  • #単一の主キー、列レベルの制約
  • 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> create table t_user(
    -> id int(10),
    -> name varchar(32),
    -> primary key(id,name)
    -> );

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(主键约束) sname classno(外键约束)
1 jack 100
2 lucy 100
3 kk 100
4 smith 200
5 frank 300
6 jhh 300
  • 班级表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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。