# restrições comuns
/*
Significado: Uma restrição usada para limitar os dados da tabela, a fim de garantir a precisão e confiabilidade dos dados da tabela
Classificação: seis restrições principais
NOT NULL: não vazio, usado para garantir que o valor do campo não pode ficar vazio,
como nome, número do aluno, etc.
DEFAULT: padrão, usado para garantir que o campo tenha um valor padrão
como gênero
PRIMARY KEY: chave primária, usada para garantir que o valor do campo seja único e não esteja vazio,
como número de aluno, número de funcionário, etc.
UNIQUE: único, usado para garantir que o valor do campo seja único , pode estar vazio,
como número do assento
CHECK: restrição de verificação [não suportada no mysql]
, como idade, gênero
FOREIGN KEY: chave estrangeira, usada para limitar o relacionamento entre as duas tabelas, usada para garantir que o valor deste campo deve vem do valor da coluna associada da tabela principal Adicionar uma
restrição de chave estrangeira à tabela escrava, usada para se referir a uma coluna na tabela principal O valor de
como o número profissional da tabela do aluno, o número do departamento do tabela de funcionários e o tipo de número de trabalho da tabela de funcionários
Quando adicionar restrições:
1. Ao criar uma tabela
2. Ao modificar uma tabela
Categorias de adição de restrições:
restrições em nível de coluna:
todas as seis restrições são suportadas sintaticamente, mas restrições de chave estrangeira não têm efeito
restrições em nível de tabela:
exceto para não nulo, padrão, outros são suportados
Chave primária e comparação única:
Exclusividade garantida Se é permitido ficar vazio Quantas podem haver em uma tabela Se permitir
chaves primárias combinadas √ × Existe no máximo 1 √, mas
único não é recomendado √ √ Pode haver vários √, mas não é recomendado
Chave estrangeira:
1. Obrigatório na tabela escrava Defina o relacionamento da chave estrangeira
2. O tipo da coluna de chave estrangeira da tabela secundária é consistente ou compatível com o tipo da coluna associada da tabela principal, e o nome não é obrigatório. 3
. A coluna associada da tabela principal deve ser uma chave (geralmente uma chave primária ou única)
4. Ao inserir dados, insira primeiro a tabela principal e depois insira a tabela escrava.
Ao excluir dados, exclua primeiro a tabela escrava e depois exclua a tabela mestre
*/
CREATE TABLE nome da tabela (nome
do campo tipo de campo restrições de nível de coluna,
nome de campo tipo de campo,
restrições de nível de tabela
)
CREATE DATABASE alunos;
#1. Adicione restrições ao criar uma tabela
# 1. Adicione restrições em nível de coluna
/*
Sintaxe:
Basta adicionar o tipo de restrição diretamente após o nome e tipo do campo.
Suportado apenas: padrão, não nulo, chave primária, exclusivo
*/
USE estudantes;
DROP TABLE stuinfo;
CREATE TABLE stuinfo(
id INT PRIMARY KEY, #primary key --- restrição é o número do aluno
stuName VARCHAR(20) NOT NULL UNIQUE, #non-empty
gênero CHAR(1) CHECK(gender='male ' OR gênero = 'feminino'), #check ------ na verdade, assento INT UNIQUE não é suportado no mysql
, #unique
age INT DEFAULT 18, #default restrição
majorId INT REFERENCES major(id)#foreign key- --- --Na verdade, colunas de restrição não são suportadas no mysql
);
CREATE TABLE major(
id INT PRIMARY KEY,
majorName VARCHAR(20)
);
#Ver todos os índices em stuinfo, incluindo chave primária, chave estrangeira, exclusivo
SHOW INDEX FROM stuinfo;
# 2. Adicione restrições em nível de tabela
/*
Sintaxe: Na parte inferior de cada campo
[nome da restrição de restrição] tipo de restrição (nome do campo) --- [nome da restrição de restrição] significa que pode ser omitido. Se não houver nome, haverá um nome padrão, ou seja, o nome do campo padrão*
/
DROP TABLE IF EXISTS stuinfo;
CREATE TABLE stuinfo(
id INT,
stuname VARCHAR(20),
gênero CHAR(1),
assento INT,
idade INT,
majorid INT,
CONSTRAINT pk PRIMARY KEY(id), #primary key --- chave primária o nome é fixo Sim, alterar o nome não terá efeito
CONSTRAINT uq UNIQUE(seat), #unique key CONSTRAINT ck CHECK(gender = 'male' OR gender = 'female'), #check------na verdade, CONSTRAINT
não é suportado no mysql );
MOSTRAR ÍNDICE DE stuinfo;
#Maneira geral de escrever:★
CRIAR TABELA SE NÃO EXISTE stuinfo(
id INT PRIMARY KEY,
stuname VARCHAR(20),
sexo CHAR(1),
idade INT DEFAULT 18,
assento INT UNIQUE,
majorid INT,
CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)#外键
);
# 2. Adicione restrições ao modificar a tabela
/*
1. Adicionar restrições em nível de coluna
alterar o nome da tabela modificar o nome do campo da coluna tipo de campo nova restrição;
2. Adicionar restrições no nível da tabela,
alterar o nome da tabela da tabela, adicionar [nome da restrição da restrição] tipo de restrição (nome do campo) [referência da chave estrangeira];
*/
DROP TABLE IF EXISTS stuinfo;
CREATE TABLE stuinfo(
id INT,
stuname VARCHAR(20),
gênero CHAR(1),
assento INT,
idade INT,
majorid INT
)
DESC stuinfo;
#1. Adicionar restrição não nula
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;
#2. Adicionar restrições padrão
ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;
#3. Adicionar chave primária
#①Restrições em nível de coluna
ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;
#②Table- restrições de nível
ALTER TABLE stuinfo ADD PRIMARY KEY(id);
# 4. Adicionar exclusivo
#①Restrições em nível de coluna
ALTER TABLE stuinfo MODIFY COLUMN assento INT UNIQUE;
#②Restrições em nível de tabela
ALTER TABLE stuinfo ADD UNIQUE(seat);
#5.添加外键
ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id);
#3. Exclua restrições ao modificar a tabela
# 1. Exclua a restrição não nula
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;
# 2. Exclua a restrição padrão
ALTER TABLE stuinfo MODIFY COLUMN age INT ;
# 3. Exclua a chave primária
ALTER TABLE stuinfo DROP PRIMARY KEY;
# 4. Exclua o único
assento ALTER TABLE stuinfo DROP INDEX;
# 5. Excluir chave estrangeira
ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major;
MOSTRAR ÍNDICE DE stuinfo;