[Banco de dados] design de sistema padrão SQL linguagem de banco de dados relacional (3)

Antes de notas picar aqui, embora não tanto com pontos de conhecimento o projeto real SQL, mas o registro e tentar entender o que também é OK.
[Banco de dados] design de sistema padrão SQL linguagem de banco de dados relacional (1)
[base de dados] design de sistema padrão SQL linguagem de banco de dados relacional (2)

Atualização de dados

dados de inserção

Inserir tupla

A nova tupla é inserido na tabela especificada:

INSERT 
INTO <表名> [(<属性列1>[,<属性列2 >)] VALUES (<常量1> [,<常量2>]); 

EX: uma nova tupla estudante (Student ID: 201215128; Nome: Chen Dong; Sexo: Masculino; onde a linha: É; Idade: 18 anos de idade) é inserido na tabela do Aluno.

INSERT INTO Student (Sno, Sname, Ssex, Sdept, Sage) 
VALUES ('201215128','陈冬','男','IS',18); 

EX: Os estudantes de informação Zhangcheng Min inseridos na tabela de Student.

NSERT INTO  Student 
VALUES ('201215126','张成民','男’,18,'CS'); 

EX: inserção de uma ficha de inscrição ( '201215128', '1').

# 关系数据库管理系统将在新插入记录的Grade列上自动地赋空值
INSERT INTO SC(Sno, Cno)
VALUES ('201215128', '1'); 
# 或者
INSERT INTO SC 		
VALUES ('201215128', '1', NULL); 

insere resultados

INSERT INTO <表名> [(<属性列1> [,<属性列2>)]

EX: Para cada departamento, encontrar a média de idade dos alunos, e os resultados armazenados no banco de dados
O primeiro passo: para construir a tabela

CREATE TABLE Dept_age
(Sdept CHAR(15), /*系名*/
Avg_age SMALLINT); /*学生平均年龄*/

Passo dois: Inserir dados

INSERT INTO Dept_age(Sdept, Avg_age)
	SELECT Sdept, AVG(Sage)
	FROM Student
	GROUP BY Sdept;

dados Modificar

UPDATE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>][WHERE <条件>];

Modificar um valor tupla

Ex: A idade do estudante foi alterado para 22 anos 201 215 121

UPDATE Student
SET Sage=22
WHERE Sno= '201215121';

Ex: todos os alunos o aumento da idade de 1 ano.

UPDATE Student
SET Sage= Sage+1;

Ex: O Departamento de Ciência da Computação todos os alunos notas zero.

UPDATE SC
SET Grade=0
WHERE Sno IN
(SELETE Sno
FROM Student
WHERE Sdept= 'CS');

Excluir dados

# 删除指定表中满足WHERE子句条件的元组
DELETE FROM <表名>
# WHERE子句指定要删除的元组,无该子句将会删除表中的全部元组
[WHERE <条件>];

Excluir o valor de um tuplo

Ex: Excluir estudante de escola número recorde de 201 215 128.

DELETE FROM Student
WHERE Sno=201215128';

Ex: Departamento de Ciência da Computação eletiva excluir registros de todos os alunos.

tuplas de valor múltiplo de exclusão

Ex:
Excluir todos os registros de matrículas de estudantes.

DELETE FROM SC;

instrução de exclusão Strap consulta

DELETE
FROM SC
WHERE Sno IN
(SELETE Sno
FROM Student
WHERE Sdept= 'CS') ;

Manipulação de valores nulos

Gerar valores nulos

  • valor nulo é "não sei" valor ou "não" ou "sem sentido" em.

  • Geralmente têm as seguintes situações:

    • A propriedade deve ter um valor, mas atualmente não sabe o valor específico
    • Esta propriedade não deve ter valor
    • Por alguma razão, não é fácil de preenchimento
  • Null é um valor muito especial, contêm incertezas.
    De operadores relacionais trazer problemas especiais requerem um tratamento especial.

  • Gerar um valor nulo tem suas necessidades reais.
    Estudantes nos, mesas produzir eletivos eletivos, mas sem resultados. Desta vez, a secção de resultados está valor vazio, ele não é o mesmo, e 0 (não 0)

Ex: SC para inserir uma tabela tupla, número de estudante é "201215126", número do curso é "1", o resultado é vazio.

INSERT INTO SC(Sno, Cno, Grade)
VALUES('201215126', '1',NULL); /*该学生还没有考试成绩,取空值*/
# 或者
INSERT INTO SC(Sno, Cno)
VALUES(' 201215126', '1'); /*没有赋值的属性,其值为空值*/

Ex: O número de alunos do ensino médio para a linha da tabela Student "201 215 200" estudantes pertencem alterado para um valor nulo.

UPDATE Student
SET Sdept = NULL
WHERE Sno='201215200';

nula análise

Determinar se o valor de uma propriedade é null, com IS NULLou IS NOT NULLrepresentados.
Ex: identificar faltando um registro de sexo ou idade da informação.

SELECT *
FROM Student
WHERE Ssex IS NULL OR Sage IS NULL;

restrição nula

definição de atributo (ou definição de domínio) em

  • NOT NULLrestrições não pode ter um valor nulo
  • Adicionado UNIQUEpropriedade restrição não pode assumir um valor nulo
  • atributo chave primária não valor nulo

valor aritméticas nulo, e lógicos operações comparar

  • valor nulo e outro valor (incluindo um outro valor em branco) da operação aritmética resultado é nulo
  • valor nulo e outro valor (incluindo um outro valor vazio) da operação de comparação resultado é UNKNOWN.
  • UNKNOWNdepois, o binário convencional ( TRUE,) FALSElógica é expandido em uma lógica de três valores

Aqui Insert Picture Descrição

Ex: estudante que não conseguiu encontrar as No. 1 cursos eletivos.

SELECT Sno
FROM SC
WHERE Grade < 60 AND Cno='1';

Os resultados da consulta não incluem alunos ausentes por causa de seu valor Grade null.

Ex: alunos que não escolher disciplinas eletivas No. 1 e alunos ausentes.

SELECT Sno
FROM SC
WHERE Cno='1' AND (Grade<60 OR Grade IS NULL);

As funções de agregação: MAX, MIN, AVG, COUNT, SUM encontrou nulos, exceto COUNT (*), o nulo ignorar o processo longe valor não nulo.

vista

apresenta vistas

  • tabela virtual, é derivada a partir de um ou vários tabela de base (ou vista) mesa
  • Armazenar apenas a definição da visão, não armazena dados correspondentes à vista
  • mudanças na tabela de base de dados, uma consulta de dados a partir do ponto de vista também muda

definir vistas

CREATE VIEW
<视图名> [(<列名> [,<列名>])]
AS <子查询>
[WITH CHECK OPTION];
  • sistema de gerenciamento de banco de dados relacional para executar CREATE VIEWapenas a definição da visão é armazenado no dicionário de dados quando a instrução, que não executa o SELECTcomunicado.
  • Em vista da consulta quando ele é primeiro determinado se há pontos de vista, se estiver presente, é removido da definição de dicionário de dados do ponto de vista, a definição de sub-consultas e visualizações de consulta combinadas, convertidas em uma consulta equivalente contra a mesa de base.

Aqui Insert Picture Descrição
Ex: o estabelecimento de informações à base visualização do aluno.

CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept= 'IS';

Ex: o estabelecimento de informações à base visualização do aluno e modificar os requisitos e ainda atender as informações para garantir que o aluno visualizar esta condição quando uma inserção.

# IS_Student1视图是一个行列子集视图
CREATE VIEW IS_Student1
AS
SELECT Sno, Sname, Sage
FROM Student
WHERE Sdept= 'IS'
WITH CHECK OPTION;

Uma pluralidade de pontos de vista com base na tabela

Ex: informações dos alunos sistema estabelecido No. 1 vista curso eletivo (incluindo o número, nome, resultados).

CREATE VIEW IS_S1(Sno, Sname, Grade)
AS
SELECT Student.Sno, Sname, Grade
FROM Student, SC
WHERE Sdept = 'IS' AND
	Student.Sno = SC.Sno AND
	SC.Cno = '1';

baseada em Vista

Ex: o estabelecimento de disciplinas eletivas baseada em informação e No. 1 o desempenho do aluno na visão de 90 pontos ou mais.

CREATE VIEW IS_S2
AS
SELECT Sno, Sname, Grade
FROM IS_S1
WHERE Grade >= 90;

Com uma vista da expressão

Ex: a definição de uma opinião os estudantes nascidos no ano de reflexão.

CREATE VIEW BT_S(Sno, Sname, Sbirth)
AS
SELECT Sno, Sname, 2014-Sage
FROM Student;

exibição de grupo

Ex: O número de alunos a aprender ea pontuação média é definida como uma visão

CREATE VIEW S_G(Sno,Gavg)
AS
SELECT Sno,AVG(Grade)
FROM SC
GROUP BY Sno;

Ver exclusão

DROP VIEW <视图名>[CASCADE];
  • Esta declaração remove uma definição de visualização especificada do dicionário de dados
  • Se a vista também exportar outra visão, use a CASCADEinstrução de exclusão em cascata, juntamente com a vista e para excluir todos os pontos de vista dele derivados
  • Excluir a tabela base, todos os pontos de vista definidos derivados de tabela base deve usar explicitamente a DROP VIEWinstrução para remover

Ex: Excluir o ponto de vista BT_S e IS_S1.

DROP VIEW BT_S; /*成功执行*/
DROP VIEW IS_S1; /*拒绝执行*/

# 要删除IS_S1,需使用级联删除:
DROP VIEW IS_S1 CASCADE;

consulta Ver

ângulo usuário: Consulta tabela vista substancialmente a mesma consulta
de gerenciamento de banco de dados relacional vista a implementação do sistema da consulta

  • vista a digestão (Ver resolução)
  • verificação de validade
  • Convertida em uma consulta equivalente na tabela básica
  • Após o inquérito correção de execução

Ex: identificar os alunos com menos de 20 anos de idade, estudante na vista de informações.

SELECT Sno, Sage
FROM IS_Student
WHERE Sage<20;

Após a digestão consulta vista transformação é:

SELECT Sno, Sage
FROM Student
WHERE Sdept= 'IS' AND Sage<20;

Ex: Inquérito No. 1 eletiva informações dos alunos do curso.

SELECT IS_Student.Sno, Sname
FROM IS_Student, SC
WHERE IS_Student.Sno = SC.Sno AND SC.Cno = '1';

Ex: Inquérito GPA número de estudante e a pontuação média de 90 pontos ou mais em vista S_G.
vista S_G definidos como se segue:

CREATE VIEW S_G(Sno,Gavg)
AS
SELECT Sno,AVG(Grade)
FROM SC
GROUP BY Sno;

Solução um:

# 视图查询
SELECT *
FROM S_G
WHERE Gavg>=90;

Solução dois:

# 视图消解法
# 错误:
SELECT Sno,AVG(Grade)
FROM SC
WHERE AVG(Grade)>=90
GROUP BY Sno;
# 正确:
SELECT Sno,AVG(Grade)
FROM SC
GROUP BY Sno
HAVING AVG(Grade)>=90;

Solução três:

SELECT *
FROM (SELECT Sno,AVG(Grade) Gavg
FROM SC
GROUP BY Sno) AS S_G WHERE Gavg>=90;

Atualizar exibição

Ex: A visualização de informações escola IS_Student número de aluno "201 215 125" nomes dos alunos leiam "Liu Chen."

UPDATE IS_Student
SET Sname= '刘辰'
WHERE Sno= '201215125';

# 转换后的语句
UPDATE Student
SET Sname= '刘辰'
WHERE Sno= '201215125' AND Sdept= 'IS';

Ex: Inserir um novo sistema de informação do estudante aos estudantes recordes ver IS_Student, onde o número de estudante como "201 215 129", o nome é "Zhao", com 20 anos de idade.

INSERT
INTO IS_Student
VALUES('201215129','赵新',20);
# 转换成对基本表的更新
INSERT
INTO Student(Sno,Sname,Sage,Sdept)
VALUES('200215129','赵新',20,'IS');
# 不同的系统处理方式不一样,MySQL会在系名处自动填入NULL或者默认值

Aqui Insert Picture Descrição

Atualize a limitação vista: alguns de vista não é atualizada, porque a atualização desses pontos de vista não pode ser traduzem exclusivamente para atualização significativa da tabela de base correspondente.

Ver do papel

funcionamento de um usuário pode ser simplificada vista

Quando os dados não é a vista directamente a partir da tabela da base, uma vista define a operação de um utilizador podem ser simplificadas

  • Ver formado por ligação de uma pluralidade de tabelas com base em
  • vista consultas aninhadas complexas baseadas
  • vista atributo derivado contendo

View permite ao usuário visualizar os mesmos dados em múltiplos ângulos

Ver mecanismo permite que diferentes usuários com diferentes formas de olhar para os mesmos dados, para se adaptar às necessidades de compartilhamento de banco de dados

Ver o banco de dados reconstruído fornece um grau de lógica independência

Refatoração de banco de dados:

Exemplo: Student relação Student (Sno, sname, Ssex, Sage, Sdept) "perpendicular" substancialmente dividido em duas tabelas: SX (Sno, sname, prudente), SY (Sno, Ssex, Sdept)

Ver através do estabelecimento de um estudante:

CREATE VIEW Student(Sno, Sname, Ssex, Sage, Sdept)
AS
SELECT SX.Sno, SX.Sname, SY.Ssex, SX.Sage, SY.Sdept
FROM SX,SY
WHERE SX.Sno=SY.Sno;

De modo que os usuários fora do padrão permanece o mesmo, a aplicação do usuário ainda será capaz de encontrar dados através de uma visão

Ver fornece proteção de segurança para dados confidenciais

Definir pontos de vista diferentes para diferentes usuários, de modo que cada usuário pode ver apenas os dados que ele tem o direito de ver

uso adequado de visão mais clara pode expressar consultas

Muitas vezes você precisa executar essas consultas "para encontrar o número do curso, ele recebeu a maior pontuação para cada aluno."
Pode definir um ponto de vista, obteve a maior pontuação obtida por cada aluno

CREATE VIEW VMGRADE
AS
SELECT Sno, MAX(Grade) Mgrade
FROM SC
GROUP BY Sno;

Em seguida, preencha a consulta com a seguinte consulta:

SELECT SC.Sno, Cno
FROM SC, VMGRADE
WHERE SC.Sno = VMGRADE.Sno AND
SC.Grade = VMGRADE.Mgrade;
Publicado 170 artigos originais · ganhou elogios 47 · vê 20000 +

Acho que você gosta

Origin blog.csdn.net/weixin_43734095/article/details/105047143
Recomendado
Clasificación