Linguagem de Consulta Estruturada SQL
-
Características :
-
Integrado
- A linguagem de definição de dados DDL, a linguagem de manipulação de dados DML, a linguagem de controle de dados DCL estão todas em uma
- Pode concluir todas as atividades do banco de dados independentemente
-
Altamente não processado
- Sugira apenas o que fazer, sem necessidade de entender o caminho de acesso
-
Operação orientada a conjunto
- Uma vez inseridos, excluídos e atualizados, os objetos são uma coleção de tuplas
-
Várias formas de uso
- SQL interativo
- Digite diretamente comandos SQL para operar
- Existe um DBMS para explicar
- SQL incorporado
- Incorporar instruções SQL em linguagens de alto nível
- Permite que os aplicativos utilizem totalmente a capacidade do SQL de acessar o banco de dados e os recursos de processo da linguagem host
- Geralmente requer pré-compilação para converter instruções SQL incorporadas em instruções que o compilador da linguagem host pode manipular
- SQL interativo
-
-
Função principal
- Definição de dados: excluir, modificar tabelas básicas, visualizações, índices
- Manipulação de dados: adicione, exclua, verifique e modifique dados
- Controle de dados: permissão concedida, retirada
-
Arquitetura
- Tabela básica :
- Uma tabela que existe por si só, um relacionamento corresponde a uma tabela básica
- Uma ou mais tabelas básicas correspondem a um arquivo de armazenamento
- Uma tabela pode ter vários índices
- Armazenar arquivo :
- A estrutura interna do banco de dados relacional pela estrutura lógica
- A estrutura física é arbitrária e transparente
- Ver :
- Tabela derivada de uma ou várias tabelas básicas
- O banco de dados armazena apenas a definição da visualização e não armazena os dados da visualização
- A vista é uma tabela virtual, o usuário pode definir a vista na vista
- Tabela básica :
-
Operação SQL
- Consulta de dados
- Consulta de tabela única
- Consulta de dados
select 指定列 from 表名
select 指定列 别名, 指定列2 别名2 ... from student #这里的指定列的别名用来更改查出来的值的列名
select distinct 列名 from 表名 #distinct 是指去掉表中重复的行
select 列名 from 表名 where 条件表达式 #这里条件表达式有 >= <= = != AND,OR,NOT,LIKE,IN,BETWEEN AND ......
select 列名 from 表名 where 列名 LIKE 'DB\_%i__' ESCAPE '\\' #这里LIKE为比较,%为通配符,ESCAPE '\\' 为换码字符,即转义字符,从查询以DB_ 开头且以 倒数第三个字母为i的字母的行
select 列名 from 表名 where 条件表达式 order by 列名 desc(asc)#指定列升序或者降序排列
#聚集函数:COUNT(),SUM(),AVG(),MAX(),MIN()等
select MAX(属性名) from 表名 where 条件表达式
#GROUP BY 对查询结果进行分组
select 列名 from 表名 group by 列名 having 条件 #对分组进行条件筛选
- Consulta de coleção (UNION, INTERSECT, EXCEPT)
select * from 表 where xxx UNION select * from 表 where xxx #UNION 将多个查询结果合并起来 相当于OR
select * from 表 where xxx INTERSECT select * from 表 where xxx #INTERSECT将多个查询结果合并起来 相当于AND
select * from 表 where xxx EXCEPT select * from 表 where xxx #EXCEPT 差,前者所查询的结果-后者查询到的结果
- Consulta de associação (consulta de várias tabelas)
#表名1.列名 比较运算符 表名2.列名
select 表1.列, 表2.列 from 表1,表2 where 条件
-
Consulta aninhada
- select-from-where é um bloco de consulta, aninhando um bloco de consulta em outro local chamado aninhamento de loop
select * from 表 where (select * from 表 where xx)
- Subconsulta irrelevante: a condição de consulta da subconsulta não depende da consulta pai
- Subconsultas relacionadas: A condição da subconsulta depende da consulta pai
- Subconsulta com IN
select * from 表 where 列 IN ( select 列 from 表 where xx)
- Subconsulta com operador de comparação
- Quando você souber exatamente o que a consulta interna retorna como um valor único, poderá usar o operador de comparação> <> =…
- Subconsulta com QUALQUER ou TODAS
- Maior que QUALQUER maior que um determinado valor
- Maior que TODO maior que qualquer valor
select 列 from 表名 where 列 > ANY( select * from 表 ...)
- Subconsulta com EXISTS
select * from 表 where EXIST (select * from 表 where xx)
-
Definição de dados
- Definição de modo
create schema 模式名 authorization 用户名 #为用户名定义一个模式,可以没有模式名,模式名默认为用户名
drop schema 模式名 <cascade / restrict> #cascade 级联,删除模式的同时把该模式所有数据都删除,restrict 如果定义了下属的数据库对象,则拒绝删除语句的执行。
- Definição da tabela básica
- Tipo de dados
create table 表名 (列名 数据类型 约束条件,...)
alter table 表名 ADD/DROP/ALTER 列名 ...
drop table 表名 restrict/cascade #删除表,restrict 有限值的删除,如果存在依赖该表的对象,则不进行删除,cascade 强制删除
- Tipo de dados
- Definição do índice : para acelerar a consulta
create unique/cluster index 索引名 on 表名(列名...) #cluster聚簇索引,一个基本表最多建立一个,unique 为唯一索引
drop index 索引名
- Definição de modo
-
Atualização de dados
- Inserir dados
insert into 表名 (属性列1,属性列2...) values (常量1,常量2...)
- Modificar dados
update 表名 set 列名 = 表达式,... where 条件表达式
- Excluir dados
delete from 表名 where 条件表达式
-
Ver
- Funcionalidades
- Tabela derivada de uma ou mais tabelas básicas
- Armazene apenas a definição da visualização, não os dados correspondentes à visualização
- Definir a visualização
create view 视图名 列名1,列名2... as 子查询 with check option #自动检查属性是否为IS
- Excluir visualização
drop view 视图名
- Vista de consulta
select 属性列 from 视图名 where 条件
- Atualizar visualização
update 视图名 set 属性列 = 值 ... where 条件表达式e
- Funcionalidades
End