Experimento de base de datos de sueños 2: operación de consulta de tabla DMDBMS

Experimento 2 Operación de consulta de tabla DMDBMS

1. El propósito del experimento:

1. Dominar la aplicación de operadores en consulta;
2. 2. Dominar el desmantelamiento y análisis de requisitos de consulta para consultas complejas
; 3. Dominar el lenguaje SQL para consultar la información de la base de datos y la información del usuario
; Comprender y dominar el lenguaje SQL: ser capaz de usar comandos distintos, AS some_name (alias), unir, agrupar por, ordenar por, tener, limitar, como comandos relacionados para realizar consultas complejas en datos de tablas.
5. Complete una consulta compleja sobre datos de muestra, incluida la consulta sobre datos de tablas, deduplicación, agrupación, restricción de datos, consulta de conexión, etc.

2. Requisitos experimentales:

1. Domine el desmantelamiento y análisis de requisitos de consulta para consultas complejas
2 . 3. Dominar la aplicación de operadores en consulta
. Familiarizado con el método de uso y los escenarios de aplicación de cada parámetro en lenguaje DQL
4. Comprender y dominar el lenguaje SQL: ser capaz de usar comandos distintos, AS some_name (alias), unir, agrupar por, ordenar por, tener, limitar, como comandos relacionados para realizar consultas complejas en datos de tablas.
5. Familiarizado con ideas de consulta de ejemplo.

3. Puntos clave y dificultades del experimento:

Enfoque del experimento: uso de alias, consulta condicional, consulta de unión, subconsulta, agrupación de datos, clasificación de datos
Dificultad del experimento: consulta de unión, subconsulta, consulta de grupo, uso de funciones

4. Contenido del experimento:

  1. Información de la base de datos, consulta de información del usuario
  2. Consulta de datos de tabla
    2.1. Consulta de deduplicación 2.2.Selección
    de columnas de consulta
    2.3. Uso de alias
    2.4 Consulta condicional
    2.5
    Consulta conjunta 2.6 Subconsulta
    2.7 Agrupación de datos
    2.8 Clasificación de datos
    2.9 Restricción de datos

5. Pasos y resultados experimentales:

Descripción: para cada parte del contenido experimental, describa el proceso experimental y haga coincidir las capturas de pantalla de los resultados experimentales

1. Información de la base de datos, consulta de información del usuario

1.1

//查看数据库名及创建时间
select name,create_time from v$database;

1.2

//查看数据库里所有使用用户
select username,user_id,default_tablespace,profile from dba_users;

1.3

//查看当前登录用户
SELECT USER

1.4

	//当前用户拥有的表
select table_name from user_tables;

1.5

//所有用户的表
select table_name from all_tables;

1.6

//切换模式
set SCHEMA SYSDBA;

1.7

//查看当前模式
select * from  v$sessions;

2. Consulta de datos de tabla

//Captura de pantalla de comandos SQL y resultados de entrada

2.1. consulta de deduplicación

Ejemplo: La siguiente tabla muestra la información de los empleados (secciones) de un departamento, utilice la palabra clave distintiva para consultar el cargo y bono del empleado, y elimine los registros con el mismo cargo y bono.

select distinct JOB,BONUS from SYSDBA."sections";

2.2 Selección de columnas de consulta

Ver números de empleados, puestos y bonificaciones en la tabla de secciones

select STAFF_ID,JOB,BONUS from SYSDBA."sections";

2.3. Uso de Alias

Ejemplo: el nombre de la tabla califica el nombre de la columna para consultar los puntajes de matemáticas e inglés del estudiante cuyo ID de estudiante es 10.
hoja de puntuación de matemáticas

Hoja de puntuación en inglésInglés

select SCORE FROM SYSDBA."math" WHERE SID = 10;
select SCORE FROM SYSDBA."English" WHERE SID = 10

2.4 Consulta condicional

Ejemplo: consulta la información de los empleados cuyo cargo es desarrollador y cuya bonificación es >8000 de la tabla bonuses_depa anterior.
Ejemplo: Consultar la información de empleados con apellido wang y bonos entre 8500 y 9500 de la tabla bonuses_depa anterior.

select STAFF_ID,NAME FROM SYSDBA."bonuses_depa" WHERE JOB = 'developer' AND "bonuses_depa".BONUS>8000;
select STAFF_ID,NAME FROM SYSDBA."bonuses_depa" WHERE  NAME LIKE 'wang%' AND BONUS BETWEEN 8500 AND 9500;
 

2.5 Consulta de conexión

Preparación de datos:
– Crear tabla de entrenamiento.

CREATE TABLE training(staff_id INT NOT NULL,course_name CHAR(50),exam_date DATETIME,score INT);
--向表training中插入记录。
INSERT INTO training(staff_id,course_name,exam_date,score) VALUES(10,'SQL majorization','2017-06-25 12:00:00',90);
INSERT INTO training(staff_id,course_name,exam_date,score) VALUES(11,'BIG DATA','2018-06-25 12:00:00',92);
INSERT INTO training(staff_id,course_name,exam_date,score) VALUES(12,'Performance Turning','2018-06-29 12:00:00',95);

– Crear tabla de educación.

CREATE TABLE education(staff_id INT, higest_degree CHAR(8), graduate_school VARCHAR(64), education_note VARCHAR(70));

– Insertar registros en la tabla de educación

INSERT INTO education(staff_id,higest_degree,graduate_school,education_note) VALUES(11,'master','Northwestern Polytechnical University','211&985');
INSERT INTO education(staff_id,higest_degree,graduate_school,education_note) VALUES(12,‘doctor','Peking University','211&985');
INSERT INTO education(staff_id,higest_degree,graduate_school,education_note) VALUES(13,'scholar','Peking University','211&985');
示例:查询员工ID、最高学历和考试分数。使用training和education两个相关的列(staff_id)做查询操作。
SELECT STAFF_ID,EDUCATION.HIGEST_DEGREE,TRAINING.SCORE
FROM SYSDBA.TRAINING JOIN SYSDBA.EDUCATION USING(STAFF_ID);

2.6 Subconsultas

Preparación de datos: el personal
construye tablas

CREATE TABLE staffs
(
staff_id NUMBER(6) not null,
first_name VARCHAR2(20),
last_name VARCHAR2(25),
email VARCHAR2(25),
phone_number VARCHAR2(20),
hire_date DATE,
employment_id VARCHAR2(10),
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
manager_id NUMBER(6),
section_id NUMBER(4),
graduated_name VARCHAR2(60)
);

Insertar datos:

insert into staffs (staff_id, first_name, last_name, email, phone_number, hire_date,employment_id, salary, commission_pct, manager_id, section_id)values (198, 'Donald', 'OConnell', 'DOCONNEL', '650.507.9833', to_date('21-06-1999', 'dd-mm-yyyy'), 'SH_CLERK', 2600.00, null, 124, 50);

insert into staffs (staff_id, first_name, last_name, email, phone_number, hire_date,employment_id, salary, commission_pct, manager_id, section_id)values (199, 'Douglas', 'Grant', 'DGRANT', '650.507.9844', to_date('13-01-2000', 'dd-mm-yyyy'), 'SH_CLERK', 2600.00, null, 124, 50);

insert into staffs (staff_id, first_name, last_name, email, phone_number, hire_date,employment_id, salary, commission_pct, manager_id, section_id)values (200, 'Jennifer', 'Whalen', 'JWHALEN', '515.123.4444', to_date('17-09-1987', 'dd-mm-yyyy'), 'AD_ASST', 4400.00, null, 101, 10);

insert into staffs (staff_id, first_name, last_name, email, phone_number, hire_date,employment_id, salary, commission_pct, manager_id, section_id)values (201, 'Michael', 'Hartstein', 'MHARTSTE', '515.123.5555', to_date('17-02-1996', 'dd-mm-yyyy'), 'MK_MAN', 13000.00, null, 100, 20);

insert into staffs (staff_id, first_name, last_name, email, phone_number, hire_date,employment_id, salary, commission_pct, manager_id, section_id)values (202, 'Pat', 'Fay', 'PFAY', '603.123.6666', to_date('17-08-1997', 'dd-mm-yyyy'),
'MK_REP', 6000.00, null, 201, 20);

insert into staffs (staff_id, first_name, last_name, email, phone_number, hire_date,employment_id, salary, commission_pct, manager_id, section_id)values (203, 'Susan', 'Mavris', 'SMAVRIS', '515.123.7777', to_date('07-06-1994', 'dd-mm-yyyy'), 'HR_REP', 6500.00, null, 101, 40);

Use una subconsulta correlacionada para encontrar personas en cada departamento que tengan un salario más alto que el salario promedio del departamento

select STAFFS.first_name,STAFFS.LAST_NAME  
from STAFFS,(select AVG(salary) aver,section_id from STAFFS group by section_id)av
where STAFFS.section_id=av.section_id and STAFFS.salary>av.aver;

2.7 Agrupación de datos

Preparación de datos: cree una tabla (bonuses_depa) como se muestra e inserte datos

Ejemplo: Se agrupa el departamento por puesto y bono, se consulta el número de empleados de cada grupo y se ordenan los resultados en orden ascendente.

SELECT job,COUNT(*) FROM SYSDBA."bonuses_depa" GROUP 
BY JOB ORDER BY COUNT(*);
SELECT BONUS,COUNT(*) FROM SYSDBA."bonuses_depa" GROUP 
BY BONUS ORDER BY COUNT(*);

2.8 Clasificación de datos

Ejemplo: consulta la información de bonificación de varios tipos de trabajo en bonus_depa en la siguiente tabla. Los resultados de la consulta se ordenan primero en orden ascendente de bonificación y luego en orden descendente de nombre.

SELECT NAME,JOB,BONUS FROM SYSDBA."bonuses_depa"  ORDER BY BONUS;
SELECT NAME,JOB,BONUS FROM SYSDBA."bonuses_depa"  ORDER BY NAME DESC;
 

2.9 Restricciones de datos

Ejemplo: Consulta información de empleados en bonus_depa en la siguiente tabla. Al agregar LIMIT 2 OFFSET 1 para limitar la consulta para omitir la primera fila, se consultan un total de 2 filas de datos.

SELECT *FROM SYSDBA."bonuses_depa" LIMIT 2 OFFSET 1;

Supongo que te gusta

Origin blog.csdn.net/david2000999/article/details/122504503
Recomendado
Clasificación