Conceptos básicos de programación de Oracle (DDL (lenguaje de definición de datos), DML (lenguaje de manipulación de datos), funciones ORACLE)

Tres aspectos de la programación de Oracle: DDL (lenguaje de definición de datos), DML (lenguaje de manipulación de datos), funciones ORACLE

DDL (lenguaje de definición de datos)

1. Ingrese desde la línea de comando

cmd
sqlplus/nolog abre el espacio de trabajo
conn nombre de usuario/contraseña@nombre de servicio como sysdba (es una identidad);
mostrar usuario mostrar usuario
El apagado inmediato (cierre forzado de la base de datos) cierra la base de datos. Nota: Cuando se utiliza este comando, el oyente se cierra a la fuerza.
La fuerza de inicio inicia la base de datos.

2. Crear espacio de mesa      

Nota (el sufijo de archivo del espacio de tabla es dbf y el directorio especificado debe ser el directorio donde está instalada la base de datos, es decir:
crear espacio de tabla tbs_tablespacename archivo de datos 'nombre de archivo' tamaño 100 m extender automáticamente en los siguientes 10 MB
2.1 Ajustar el tamaño del espacio de la tabla
alterar el archivo de datos de la base de datos 'nombre de archivo' cambiar el tamaño nuevo tamaño
   Cambiar el estado de lectura y escritura del espacio de tabla t
alterar el espacio de tabla tbs_tablespacename solo lectura/wtite; solo lectura/lectura-escritura
   Soltar espacio de tabla
espacio de tabla dorp tbs_tablespacename;
   Eliminar datos en el espacio de tabla
dorp tablespace tbs_tablespacename incluido el contenido;

3.Crear usuario

Cree un usuario y especifique el tamaño del espacio de tabla a utilizar.
crear prueba de usuario identificado por 123
espacio de tabla predeterminado tbs_school
temperatura temporal del espacio de tabla
cita 5m en tbs_school; (Nota, especifique el tamaño del espacio de tabla utilizado por la tabla)
 4. Modificar usuario  
alterar el valor del atributo del atributo nombre de usuario del usuario
alterar usuario nombre de usuario espacio de tabla predeterminado tbs_

4. Eliminar usuario

soltar usuario nombre de usuario;
5. Autorización de usuario
otorgar DBA al nombre de usuario; Tres roles predefinidos del sistema: conectar recurso dba 
6. Cancelar autorización
revocar DBA del nombre de usuario;

 5. Crear tabla

crear tabla nombre de tabla (
 número de identificación de usuario (20),
 nombre de usuario varchar(10);
 número de teléfono(11)
)

6. Modificar tabla

  Cambiar campo
alterar tabla nombre de tabla modificar(nombre varchar2(25),...)
  Agregue campo
alterar tabla nombre de tabla agregar (nombre varchar2(10));
  Eliminar campo
alterar la columna de eliminación de la tabla tbl_school (nombre del campo);
  Eliminar tabla
soltar tabla nombre de tabla;
  Ver estructura de la tabla
desc tableName; (Nota: solo se usa en la ventana de línea de comando)

7. Restricciones de clave primaria  

Generalmente se utiliza para restringir las identificaciones.
modificar tabla estudiante agregar restricción pk_id clave primaria (id);
Las restricciones únicas se utilizan generalmente para restringir nombres.
modificar la tabla estudiante (nombre de la tabla) agregar restricción u_id (nombre de la restricción) único (nombre del campo);
Verificar restricciones Restringir el dominio de un campo
modificar tabla estudiante agregar restricción chk_age check(edad>10);

8. Restricciones de integridad referencial

alterar tabla tabla secundaria 
dd restricción nombre de restricción clave externa (clave externa de la tabla secundaria)
hace referencia a la tabla principal (clave principal de la tabla principal);
alterar tabla tabla de información del estudiante
agregar restricción fk_subtable nombre_clave extranjera (stu_cla_id)
hace referencia a la tabla de información de clase (cla_id);
Eliminar restricciones
alterar la tabla estudiante (nombre de la tabla) eliminar la restricción pk_id (nombre de la restricción);
Ver restricciones
seleccione * de user_constraints donde table_name='Nombre de la tabla en mayúscula';
seleccione nombre_restricción de restricciones_usuario donde nombre_tabla='表名大写';

9.Desbloqueo de usuario

Desbloquee usuarios comunes en Oracle con la provincia del administrador de la base de datos:
alterar el desbloqueo de la cuenta  scott  del usuario ;

DML (lenguaje de manipulación de datos)

1. Insertar

insert into school(id,name,studentCount,teacherCount,creatDate) value('00001','Escuela pública de la Universidad de Pekín Beida Jade Bird' 200,20,to_date('2006-hour 12-12','yyyy-mm-dd ') );
    Agregar contenido de tabla secuencialmente no requiere los nombres de los campos
insert into school('00002','Escuela pública de la Universidad de Pekín Beida Jade Bird' 200,20,to_date('2006-hour 12-12','yyyy-mm-dd'));//sysdate

2. Consulta

seleccione * de es_user donde tipo de usuario = 2 y  ( nombre real = '李思' o nombre real = '张三' ) ; // Consulta la información de miembro de Zhang San y Li Si
seleccione * de es_user donde el tipo de usuario es nulo; //Consulta si el nombre del campo es un carácter nulo 
  // seleccione * de es_user donde nombre real como' 李% ';
  // seleccione * de es_user donde nombre real como' 李_ ';
    % puede hacer coincidir 0 con más caracteres
   - Puede coincidir con cualquier personaje
  // seleccione * de es_user donde nombre real  en ('Zhang San', 'Zhang Xiaohong')
seleccione * de la escuela;

2.1 Consultar algunos campos

seleccione nombre, creeFecha de tbl_school;
     Consultar el número de alumnos entre 100 y 200
seleccione * de tbl_school donde StudentCount está entre 100 y 200;
seleccione * de tbl_school donde StudentCount>100 y StudentCount<200;

2.2 Ordenar en orden ascendente

seleccione * de tbl_school ordenar por createDate asc(opcional)/desc;
     // ordenar asc en orden ascendente
     // desc ordenar en orden descendente
     //  distinto Comprueba un grupo de objetos únicos desordenados
seleccione distinto * de es_user 

2.3 Consulta de alias

seleccione u.realname como "nombre real del usuario", u.username  como  "nombre real del usuario" de es_user u donde u.usertype = 2;

3. Copiar tabla 

insertar en tbl_school_pk   seleccionar t.*,sysdate de tbl_school t ; copiar la tabla dentro de la hora actual del sistema
insertar en tbl_school seleccione id, nombre, StudentCount, TeacherCount de tbl_school_pk;

4. Modificar tabla

actualice tbl_school establezca StudentCount = 256, TeacherCount = 30 donde id = '00001';
actualizar  (seleccione d.qj, r.creater de uf_dianzhanghr d left join requestbase r en d.requestid= r.id)  set  qj =creater

5. Formulario de envío

comprometerse;

6. Eliminar tabla

eliminar de tbl_school donde id = '0002'; cometer 提交
eliminar de tbl_school eliminar todas las tablas
truncar tabla tbl_school revertir completamente borrar revertir

7. Haga una copia de seguridad de la mesa

insertar en user_bak  seleccionar * de es_user donde ueertype = 2;
DCL (lenguaje de control de base de datos) concede la reversión de confirmación de rovoke  

8. Permisos de rol de usuario

8.1 Permisos

Objeto: dba_sys_privs Todos los privilegios del sistema
Objeto: user_sys_privs Permisos del sistema propiedad del usuario  
Consulte los permisos del sistema propiedad del usuario actual: seleccione * de user_sys_privs;

8.2 Otorgar permisos del sistema

otorgar permisos del sistema al usuario

8.3 Permisos comunes del sistema

crear permisos del sistema de conexión de sesión
crear tabla crear tabla
crear vista crear vista
crear procedimiento crear procedimiento
crear secuencia crear secuencia
Otorgar los permisos de objeto otorgar selección en la tabla 1 al usuario; Otorgar los permisos de objeto de la tabla de consulta 1 al usuario usuario
Revocar objeto revocar selección en la tabla1 del usuario; revocar el permiso de consulta del usuario en la tabla uno
Permisos de objetos y diccionario de datos seleccione * de user_tab_privs;

8.4 Otorgar permisos de roles a los usuarios

otorgar conexión, recurso al usuario;
rol de recurso: permiso para operar la base de datos
Rol de conexión: permiso para conectarse a la base de datos.
Rol de DBA: tiene privilegios de administrador de base de datos

8.5 Roles personalizados

crear rol rol1;
conceder crear sesión, crear tabla para rol1; 
rol del usuario
otorgar rol1 al usuario; asignar el rol al usuario (el usuario tiene los permisos de rol1)
Roles de usuario y diccionario de datos.
dba_role_privs todos los roles de usuario
user_role_privs rol de usuario actual
Permisos de roles y diccionario de datos
role_sys_privs Privilegios del sistema para todos los roles

función ORÁCULO

1. Los tres métodos de conexión de Orcl.

1. sqlplus --> nombre de usuario --> contraseña
2.sqlplus scott/123@orcl
2.sqlplus/nolog conn system/123@orcl como sysdba

2. Consultar espacio de tabla

seleccione * de dba_data_files;

3 tipos de campos

   Tipo de datos numéricos : binario_double Se utiliza un nuevo tipo de datos proporcionado por Oracle 10G para almacenar un número de coma flotante de 64 bits de doble precisión.
  Tipo de datos de fecha : la fecha almacena datos de fecha y hora en la tabla, la marca de tiempo almacena el año, mes y día de la fecha, así como los minutos y segundos de la hora.
  Tipo de datos de objetos grandes : clob Grandes lotes de texto, objetos binarios blob como imágenes, etc.

4 funciones

select p,name, concat(p.price,'元')  p.description from es_product p; // Concatenar cadenas
seleccione p.name,  p.price||元  from es_product p;
seleccione p.name, nvl(p.content,'Aún no hay descripción detallada')  de es_product p;
trunc(columna|expresión,n)  // Función de interceptación
seleccione trunc(45.926) de daul; 45
seleccione trunc(45.926,2) de dual; 45,92
seleccione trunc(45.926,-1) de dual; 40
seleccione round(45.926) de daul; 46    // 4 función de redondeo
seleccione round(45.926,2) de dual; 45,93
seleccione ronda(45.926,-1) de dual; 50
seleccione round(p.price,2) como "precio redondeado", p.name como "nombre del producto"
de es_product p;
seleccione sysdate de dual    // Función de fecha:
seleccione extraer (año de sysdate) de dual
seleccione extraer (mes de sysdate) de dual
seleccione extraer (día de sysdate) de dual
insertar en valores de es_product(1000,2,apple,3783,null,null,sysdate,700);
seleccionar extracto(año desde p.saledate)||'-'|| extraer(mesde p.saledate)||'-'||extraer(día de p.saledate) de es_product p;
//función de conversión
seleccione  to_char(p.saledate,'aaaa-MM-DD')  de es_product p;
seleccione * de es_product p donde  to_date('2012-2-29','yyyy-MM-DD')  < p.saledate y  to_date('2012-4-1','yyyy-MM-DD')  > p. fecha de venta
//Función de agregación
seleccione  suma (p.stockcount) , p.sort_id del  grupo es_product p por p.sort_id;
seleccione  count(p.stockcount) , p.sort_id del grupo es_product p por p.sort_id;
seleccione  max(p.price) , p.sort_id del grupo es_product p por p.sort_id;
// La subconsulta devuelve el resultado como una sola fila
seleccione id, nombre, precio de es_product donde sort_id = (seleccione id de es_sort donde sortname='图书');
seleccione ID, nombre, precio de es_product donde (seleccione promedio (precio) de tb_sort)>precio

5 Creación de procedimientos almacenados

crear [o reemplazar] procedimiento procudure_name
[{parameter_list}]
{ISÍAS}
[declaraciones locales]
comenzar
declaraciones ejecutables
[EXCEPCIÓN]
controladores ejecutables
FINAL [nombre_producto]; 

Demostración 5.1:

crear o reemplazar procedimiento
find_emp(emp_no número) --Crea un procedimiento almacenado con un parámetro
COMO
nombre emp varchar2(20);
comenzar
seleccione em.name en empname de empleados em donde em.id =emp_no;
dbms_output.put_line('nombre del empleado'||empname);
excepción
cuando no_data encontró entonces
dbms_output.put_line('Número de empleado encontrado');
finalizar buscar_emp;

5.2 Ejecutar procedimientos almacenados

ejecutar nombre_procedimiento(lista_parámetros);
configurar serverountput en --mostrar procedimientos almacenados
ejecutar find_emp(3);

5.3 Modo de parámetro de procedimientos almacenados

en modo predeterminado Si no se especifica el parámetro, se especifica el modo int predeterminado.
afuera 
En fuera

5.4 Autorización de procedimientos almacenados

1. otorgar ejecución en nombre_procedimiento al usuario
2. otorgar ejecución en el procedimiento al usuario con la opción grent

6 DEMOSTRACIÓN del procedimiento almacenado ORACLE

create or replace procedure PRO_OA_KQ_SYNRECORDSDATA as
begin
    begin--请假
      insert into oa_kq_records(id,no,begintime,endtime,type,typeid,days,hours,savedate,reqdate,totalhours,LEAVEANDBUESSID)
            select SE_OA_KQ_RECORDSID.NEXTVAL,h.objno,lz.sjqjkssj,lz.sjqjjssj,1,lz.qjlx ,lz.sjqjts,lz.sjqjss,to_char(sysdate,'yyyy-MM-dd'),l.reqdate,lz.sjqjts*8+lz.sjqjss,lz.id
            from uf_kq_leave l
            left join uf__kq_leave_zib lz on l.requestid = lz.requestid
            left join uf_kq_xjdzib xj on lz.id=xj.sqr
            left join humres h on h.id = l.reqman
            left join requestbase rb on rb.id = lz.requestid
            where l.flag=0 and rb.isfinished =1 and rb.isdelete=0;
      update uf_kq_leave l set l.flag =1 where l.id in (select l.id from uf_kq_leave l left join requestbase r on l.requestid=r.id and l.flag=0 and r.isfinished =1 and r.isdelete=0);
      commit;
      EXCEPTION
          WHEN OTHERS THEN
          ROLLBACK;
    end;

    begin--销假
      insert into oa_kq_records(id,no,begintime,endtime,type,typeid,days,hours,requestid,savedate,reqdate,totalhours)
           select SE_OA_KQ_RECORDSID.NEXTVAL,h.objno,kqx.sjqjkssj,kqx.sjqjjssj,2,kqx.qjlx,kqx.sjqjts,kqx.sjqjss,kqx.sqr,to_char(sysdate,'yyyy-MM-dd'), kqxz.reqdate, kqx.sjqjts*8+kqx.sjqjss
           from uf_kq_xjsqd kqxz
           left join uf_kq_xjdzib kqx on kqxz.requestid=kqx.requestid
           left join humres h on h.id = kqx.reqman
           left join requestbase rb on rb.id=kqxz.requestid
           where kqxz.flag=0 and rb.isfinished=1 and rb.isdelete=0;
      ----用销请假的id更新 reuqest
      update oa_kq_records set requestid=1 where LEAVEANDBUESSID in(select kqx.sqr
           from uf_kq_xjsqd kqxz
           left join uf_kq_xjdzib kqx on kqxz.requestid=kqx.requestid
           left join humres h on h.id = kqx.reqman
           left join requestbase rb on rb.id=kqxz.requestid
           where kqxz.flag=0 and rb.isfinished=1 and rb.isdelete=0);
      update uf_kq_xjsqd l set l.flag =1 where l.id in (select l.id from uf_kq_xjsqd l left join requestbase r on l.requestid=r.id and l.flag=0 and r.isfinished =1 and r.isdelete=0);

       commit;
       EXCEPTION
          WHEN OTHERS THEN
          ROLLBACK;
     end;

    begin--出差
      insert into oa_kq_records(id,no,begintime,endtime,type,days,savedate,reqdate,LEAVEANDBUESSID)
        select SE_OA_KQ_RECORDSID.NEXTVAL,h.objno,kqwz.sjcckssj,kqwz.sjccjssj,3,kqwz.sjccts ,to_char(sysdate,'yyyy-MM-dd'),kqw.reqdate,kqwz.id
           from uf_kquf_workout kqw
           left join uf_kquf_workout_zib kqwz on kqw.requestid = kqwz.requestid
           left join humres h on h.id= kqw.reqman
           left join uf_kq_xccd_zib xc on xc.sqr=kqwz.id
           left join requestbase rb on rb.id = kqwz.requestid
           where kqw.flag=0 and rb.isfinished=1 and rb.isdelete=0;
      update uf_kquf_workout l set l.flag =1 where l.id in (select l.id from uf_kquf_workout l left join requestbase r on l.requestid=r.id and l.flag=0 and r.isfinished =1 and r.isdelete=0);
       commit;
       EXCEPTION
          WHEN OTHERS THEN
          ROLLBACK;
    end;

    begin--销出差
      insert into oa_kq_records(id,no,begintime,endtime,type,days,requestid,savedate,reqdate)
        select SE_OA_KQ_RECORDSID.NEXTVAL,h.objno,sccz.sjcckssj,sccz.sjccjssj,4,sccz.sjccts,sccz.sqr,to_char(sysdate,'yyyy-MM-dd'),kqsc.reqdate
           from uf_kq_xccsqd kqsc
           left join uf_kq_xccd_zib sccz on kqsc.requestid=sccz.requestid
           left join humres h on h.id= kqsc.reqman
           left join requestbase rb on rb.id = kqsc.requestid
           where kqsc.flag=0 and rb.isfinished=1 and rb.isdelete=0 ;

      ----用的销出差id更新 reuqest
     update oa_kq_records set requestid=1 where LEAVEANDBUESSID in(select sccz.sqr
           from uf_kq_xccsqd kqsc
           left join uf_kq_xccd_zib sccz on kqsc.requestid=sccz.requestid
           left join humres h on h.id= kqsc.reqman
           left join requestbase rb on rb.id = kqsc.requestid
           where kqsc.flag=0 and rb.isfinished=1 and rb.isdelete=0);

      update uf_kq_xccsqd l set l.flag =1 where l.id in (select l.id from uf_kq_xccsqd l left join requestbase r on l.requestid=r.id and l.flag=0 and r.isfinished =1 and r.isdelete=0);

       commit;
       EXCEPTION
          WHEN OTHERS THEN
          ROLLBACK;
    end;

    begin--加班核对
    insert into oa_kq_records(id,no,begintime,endtime,type,hours,savedate,reqdate)
          select SE_OA_KQ_RECORDSID.NEXTVAL,h.objno,jbzi.beintime,jbzi.endtime,5,jbzi.jbsc1,to_char(sysdate,'yyyy-MM-dd'),jbz.reqdate
           from uf_kq_jbhdzb jbz
           left join uf_kq_jbhdzib jbzi on jbz.requestid=jbzi.requestid
           left join humres h on h.id= jbzi.reqman
           left join requestbase rb on rb.id =jbz.requestid
           where jbz.flag=0 and rb.isfinished=1 and rb.isdelete=0;
      update uf_kq_jbhdzb l set l.flag =1 where l.id in (select l.id from uf_kq_jbhdzb l left join requestbase r on l.requestid=r.id and l.flag=0 and r.isfinished =1 and r.isdelete=0);
      commit;
      EXCEPTION
          WHEN OTHERS THEN
          ROLLBACK;
    end;

     begin--补打卡
      insert into oa_kq_records(id,no,bktime,bkqdtime,bkqttime,type,savedate,reqdate)
      select SE_OA_KQ_RECORDSID.NEXTVAL,h.objno,bkzi.bkrq,bkzi.qdsj,bkzi.qtsj ,6,to_char(sysdate,'yyyy-MM-dd'),bkz.reqdate
           from uf_kq_specialattendancezb bkz
           left join uf_kq_specialattendancezib bkzi on bkz.requestid=bkzi.requestid
           left join humres h on h.id= bkzi.reqman
           left join requestbase rb on rb.id =bkz.requestid
           where bkz.flag=0 and rb.isfinished=1 and rb.isdelete=0;
     update uf_kq_specialattendancezb l set l.flag =1 where l.id in (select l.id from uf_kq_specialattendancezb l left join requestbase r on l.requestid=r.id and l.flag=0 and r.isfinished =1 and r.isdelete=0);
       commit;
        EXCEPTION
          WHEN OTHERS THEN
          ROLLBACK;
    end;
end PRO_OA_KQ_SYNRECORDSDATA;

Supongo que te gusta

Origin blog.csdn.net/java_zhong1990/article/details/39613261#comments_28979377
Recomendado
Clasificación