Diretório do artigo
1. Classificação do idioma do banco de dados Oracle:
1) DDL: linguagem de definição de dados, que desempenha um papel na estrutura de dados
-
create: cria um objeto
-
alterar: modificar um objeto
-
drop: excluir um objeto
-
truncar: dados claros + envio implícito
2) DCL: linguagem de controle de dados
-
grant: grant
-
revogar: reciclagem
3) DQL: linguagem de consulta de dados
-
selecione: consulta
4) DML: linguagem de manipulação de dados, trabalhando com dados
-
inserir: adicionar dados
-
delete: excluir dados
-
update: modificar dados + enviar explicitamente
5) TCL: linguagem de controle de transações (trabalhando em DML)
-
commit: commit
-
savepoint: save point, usado com reversão
-
reversão: reversão
2. Distinguir entre excluir, soltar e truncar? (Pergunta da entrevista)
1) Classificação do idioma: delete é a linguagem de manipulação de dados (DML), drop e truncate são DDL (data definition language)
2) Excluir conteúdo: drop é excluir o objeto inteiro, truncar é limpar os dados no objeto, delete é excluir os dados
3) É possível reverter: excluir é rolável, soltar e truncar não são roláveis
3. Comandos comuns:
1) Crie objetos de banco de dados:
Sintaxe:
create table 表名(字段1 数据类型,字段2 数据类型,.......);
2)) Adicione dados:
Sintaxe:
insert into 表名 values(值1,值2...); //表中有几个字段,对应就有几个值
insert into 表名(字段1,字段2) values(值1,值2);//给必须赋值的字段添加数据
3) Dados da consulta:
Sintaxe:
select * from 表名;
select 字段1,字段2 from 表名;
select 表达式 from dual; //dual是虚表(一行一列的虚表)
4) Estrutura da tabela de consulta:
Sintaxe:
desc 表名;
5) Modifique os dados:
Sintaxe:
update 表名 set 字段 = '值' where 字段 = '值';
6) Excluir dados:
Sintaxe:
delete from 表名 where 字段='值';
4. O tipo de dados do banco de dados Oracle:
1) Tipo de número:
- número (n): número (o maior é n dígitos)
- número (n, m): o n mais longo, com m dígitos após o ponto decimal
Por exemplo: Qual é o valor máximo do número (5,2)? 999,99
2) Tipo de personagem: (Pergunta da entrevista: distinguir char, varchar, varchar2)
- char (n): comprimento fixo n, se o comprimento dos dados inseridos for menor que n, ele deverá ser preenchido com espaços
- varchar (n): comprimento variável, se o comprimento dos dados inseridos for menor que n, o último comprimento de caractere exibido será o comprimento dos dados inseridos
- varchar2 (n): o uso é consistente com varchar, varchar2 é um tipo exclusivo de banco de dados Oracle
3) Tipo de data:
- encontro
Depois de aprender os comandos e tipos de dados comuns do Oracle, vamos dar um exemplo:
create table dept_jinli( deptno number(2) , dname char(20) , location char(20)) ;
insert into dept_jinli values(10 , 'developer' , 'beijing') ;
insert into dept_jinli values(20 , 'account' , 'shanghai') ;
insert into dept_jinli values(30 , 'sales' , 'guangzhou') ;
insert into dept_jinli values(40 , 'operations' , 'tianjin') ;
commit ;
create table emp_jinli(
empno number(4) ,
ename varchar2(20) ,
job varchar2(15) ,
salary number(7 , 2) ,
bonus number(7 , 2) ,
hiredate date,
mgr number(4) ,
deptno number(10));
insert into emp_jinli values( 1001 , '张无忌' , 'Manager' , 10000 , 2000 ,
to_date( '2010-12-12' , 'YYYY-MM-DD' ) , 1005 , 10) ;
insert into emp_jinli values( 1002 , '小苍' , 'Analyst' , 8000 , 1000 ,
to_date( '2011-01-01' , 'YYYY-MM-DD' ) , 1001, 10) ;
insert into emp_jinli values( 1003 , '李怡' , 'Analyst' , 9000 , 1000 ,
to_date( '2010-01-11' , 'YYYY-MM-DD' ) , 1001, 10) ;
insert into emp_jinli values( 1004 , '郭芙蓉' , 'Programmer' , 5000 , null ,
to_date( '2011-07-01' , 'YYYY-MM-DD' ) , 1001 , 10) ;
insert into emp_jinli values( 1005 , '张三丰' , 'President' , 15000 , null ,
to_date( '2008-05-15' , 'YYYY-MM-DD' ) , null , 20) ;
insert into emp_jinli values( 1006 , '燕小六' , 'Manager' , 5000 , 400 ,
to_date( '2009-02-01' , 'YYYY-MM-DD' ) , 1005 , 20) ;
insert into emp_jinli values( 1007 , '陆无双' , 'clerk' , 3000 , 500 ,
to_date( '2009-02-01' , 'YYYY-MM-DD' ) , 1006 , 20) ;
insert into emp_jinli values( 1008 , '黄蓉' , 'Manager' , 5000 , 500 ,
to_date( '2009-05-01' , 'YYYY-MM-DD' ), 1005 , 30) ;
insert into emp_jinli values( 1009 , '韦小宝' , 'salesman' , 4000 , null ,
to_date( '2009-02-20' , 'YYYY-MM-DD' ) , 1008 , 30) ;
insert into emp_jinli values( 1010 , '郭靖' , 'salesman' , 4500 , 500 ,
to_date( '2009-05-10' , 'YYYY-MM-DD' ) , 1008 , 30) ;
Consultar tabela de funcionários e tabela de departamento:
select * from emp_jinli;
select * from dept_jinli;
Consultar o salário mensal e anual de funcionários na tabela de funcionários
select ename ,salary ,salary*12+bonus from emp_jinli;
Existe um problema com a fórmula acima.Como mostrado na figura, o salário anual de algumas pessoas é nulo:
5.nulo:
1) Qualquer dado pode estar vazio
2) Se nulo participar da operação, o resultado estará vazio
3) O valor nulo e a sequência são emendados, e nulo é equivalente a não (a operação de junção no banco de dados Oracle usa '||', além de assinar Java)
6.nvl (campo 1, valor 1):
Função para manipular nulo, se o campo 1 for nulo, exiba o valor 1
Nota :
-
nvl (d1, d2) deve garantir que os tipos de dados de d1 e d2 sejam consistentes
-
nvl2 (expressão, d1, d2): julgue a expressão, se a expressão for verdadeira, execute d1, caso contrário, execute d2, que é equivalente à expressão da operação trinocular?
Portanto, a situação acima pode ser alterada assim:
select ename,salary ,salary*12+nvl(bonus,0) from emp_jinli;
A renderização no momento é: