Advertisement
xlujiax

Ex. Parcial

Oct 4th, 2018
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 11.72 KB | None | 0 0
  1. Create TableSpace Parcial
  2. DATAFILE 'C:\WIN/usil.dbf'
  3. SIZE 50M;
  4.  
  5. Create USER Admin2
  6. Identified by 12345
  7. default tablespace Parcial
  8. temporary tablespace temp;
  9.  
  10. Grant connect, resource, create view to Admin2;
  11.  
  12. -- Tipo de datos: Char Varchar2 Number Date Clob(Grandes Tipo de Datos)
  13.  
  14. Create or REPLACE VIEW department_v as
  15. Select DEPARTMENT_ID, DEPARTMENT_NAME
  16. From Departments;
  17.  
  18. Select d.DEPARTMENT_ID, d.DEPARTMENT_NAME
  19. From Departments d join EMPLOYEES e
  20. on e.DEPARTMENT_ID = d.DEPARTMENT_ID;
  21.  
  22. Select d.DEPARTMENT_ID, d.DEPARTMENT_NAME, count(e.DEPARTMENT_ID) as cantidad_empleados
  23. From DEPARTMENTS d join EMPLOYEES e
  24. on d.DEPARTMENT_ID = e.DEPARTMENT_ID
  25. GROUP by d.DEPARTMENT_ID, d.DEPARTMENT_NAME
  26. ORDER by d.DEPARTMENT_NAME;
  27.  
  28. Create or Replace View Vista1 as
  29. Select EMPLOYEE_ID, FIRST_NAME, LAST_NAME
  30. From EMPLOYEES;
  31.  
  32. Create or Replace View Vista2 as
  33. Select employee_id, first_name, Last_name
  34. From EMPLOYEES
  35. Where SALARY >= 5000;
  36.  
  37. Create or Replace Viww Vista3 as
  38. Select employee_id, first_name, Last_name
  39. From Employees
  40. Where manager_id is null;
  41.  
  42. Create or Replace Viww Vista4 as
  43. Select e.DEPARTMENT_ID, e.FIRST_NAME, e.LAST_NAME
  44. From EMPLOYEES e join DEPARTMENTS d
  45. on e.DEPARTMENT_ID = d.DEPARTMENT_ID
  46. where e.DEPARTMENT_ID in (10, 30 , 50)
  47. order by d.DEPARTMENT_ID;
  48.  
  49. Create or Replace Viww Vista5 as
  50. Select EMPLOYEE_ID, first_name||' '||last_name, TO_CHAR(HIRE_DATE, 'DD') || ' de ' || To_CHAR(HIRE_DATE, 'MONTH') || ' del año ' || To_Char(hire_date, 'YYYY') as Fecha
  51. From EMPLOYEES;
  52.  
  53.  
  54. Create Table Tiendas
  55. (
  56. id_tienda number primary key,
  57. nombre varchar2(50),
  58. direccion varchar2(50)
  59. )
  60.  
  61. Create Table Inventarios
  62. (
  63. id_articulos char(10) primary key,
  64. nombre varchar2(50) unique,
  65. comentario varchar2(50) not null,
  66. precio decimal(10,2),
  67. id_tienda number references Tiendas
  68. );
  69.  
  70. insert into Tiendas values
  71. (1,'Tienda "la Perla"','Calle Victoria 234,La Perla.callao');
  72. insert into Tiendas values
  73. (2,'Tienda "Cercado"', ' Jr. Puno 753, Cercado de Lima.Lima');
  74. insert into Tiendas values
  75. (3,'Tienda "San Miguel"', 'Av. La Marina 2641, San Miguel.Lima');
  76. insert into Tiendas values
  77. (4,'Tienda "Pueblo Libre"', ' Av. Bolivar 1632.Pueblo Libre.Lima');
  78. insert into Tiendas values
  79. (5,'Tienda "Constructores"', ' Av.Constructores 1023, La Molina.Lima');
  80.  
  81. insert into Inventarios values
  82. (1,'cd-dvd','700 MB de Ram',40.00,5);
  83. insert into Inventarios values
  84. (2, 'usb', ' 64GB', 59.00, 4);
  85. insert into Inventarios values
  86. (3, 'laptop sony', '4GB ram', 1300.00, 3);
  87. insert into Inventarios values
  88. (4,'mouse optico','700dpi',84.00,2);
  89. insert into Inventarios values
  90. (5,'disco duro', ' 200TB', 800.00,1);
  91. insert into Inventarios values
  92. (6,'proyecto ','toshiba', 2500.00,5);
  93.  
  94.  
  95. Create Index IDX_INVENTARIO
  96. ON INVENTARIOS(id_tienda);
  97.  
  98. select i.ID_ARTICULOS, i.NOMBRE, i.PRECIO, i.ID_ARTICULOS, t.nombre, t.direccion
  99. From INVENTARIOS i join TIENDAS t
  100. on t.id_tienda = i.id_tienda;
  101.  
  102. Create Table Ventas_Diarias
  103. (
  104. ventas_id number primary key,
  105. id_articulo char(10) REFERENCES Inventarios,
  106. fecha date
  107. );
  108.  
  109. Create sequence Ventas_id
  110. start with 1
  111. increment by 1
  112. maxvalue 99999
  113. minvalue 1
  114. nocycle;
  115.  
  116. Insert Into VENTAS_DIARIAS
  117. values (VENTAS_ID.NEXTVAL, 3, '05-ABR-2018');
  118.  
  119. Insert Into VENTAS_DIARIAS
  120. values (VENTAS_ID.NEXTVAL, 4, '06-ABR-2018');
  121.  
  122. Insert Into VENTAS_DIARIAS
  123. values (VENTAS_ID.NEXTVAL, 5, '07-ABR-2018');
  124.  
  125. Insert Into VENTAS_DIARIAS
  126. values (VENTAS_ID.NEXTVAL, 1, '08-ABR-2018');
  127.  
  128. Alter Sequence Ventas_id
  129. increment by 10;
  130.  
  131. Select EMPLOYEE_ID, SUBSTR(first_name,1,4) as short_name, last_name, salary, salary*0.05 as bonus
  132. From employees;
  133.  
  134. Select DISTINCT JOB_ID
  135. From EMPLOYEES;
  136.  
  137. Select EMPLOYEE_ID, FIRST_NAME, LAST_NAME
  138. From EMPLOYEES
  139. where substr(LAST_NAME, 1, 1)
  140.   BETWEEN 'A' and 'L';
  141.  
  142. Select EMPLOYEE_ID, FIRST_NAME, LAST_NAME
  143. From EMPLOYEES
  144. where LAST_NAME like 'A%';
  145.  
  146. Select EMPLOYEE_ID, FIRST_NAME, LAST_NAME, DEPARTMENT_ID
  147. From EMPLOYEES
  148. WHERE DEPARTMENT_ID IN (100,110,120);
  149.  
  150. Select COUNTRY_NAME,
  151.       CASE region_id
  152.           when 1 THEN 'Europa'
  153.           when 2 THEN 'Latinoamerica'
  154.           ELSE 'OTROS'
  155.       end as Mercado
  156. From COUNTRIES;
  157.  
  158. --Laboratorio
  159.  
  160. Select COUNTRY_ID, COUNTRY_NAME
  161. From COUNTRIES
  162. WHERE SUBSTR(COUNTRY_ID, 1,1) NOT LIKE SUBSTR(COUNTRY_NAME,1,1);
  163.  
  164. SELECT DEPARTMENT_ID, DEPARTMENT_NAME
  165. From DEPARTMENTS
  166. WHERE DEPARTMENT_NAME LIKE 'C%g';
  167.  
  168. SELECT EMPLOYEE_ID, first_name||' '||last_name
  169. FROM EMPLOYEES
  170. WHERE MANAGER_ID IS NULL OR DEPARTMENT_ID IS NULL;
  171.  
  172. SELECT JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY,(MAX_SALARY-MIN_SALARY) AS DIFERENCIA
  173. FROM JOBS
  174. ORDER BY JOB_TITLE, MIN_SALARY, MAX_SALARY;
  175.  
  176. SELECT COUNTRY_ID, STREET_ADDRESS, CITY
  177. FROM LOCATIONS
  178. WHERE COUNTRY_ID LIKE 'JP%' OR
  179. COUNTRY_ID LIKE 'CH%'
  180. OR COUNTRY_ID LIKE 'D%';
  181.  
  182. SELECT DEPARTMENT_ID, DEPARTMENT_NAME
  183. FROM Departments
  184. WHERE MANAGER_ID IS NULL;
  185.  
  186. SELECT DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID AS SIN_GERENTE
  187. FROM DEPARTMENTS
  188. WHERE MANAGER_ID IS NULL;
  189.  
  190. SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, EMAIL, SALARY
  191. FROM EMPLOYEES
  192. WHERE DEPARTMENT_ID IN (20,40,60) AND SALARY BETWEEN 5000 AND 7000
  193. ORDER BY SALARY DESC;
  194.  
  195. SELECT e.FIRST_NAME, e.LAST_NAME, d.department_name
  196. FROM EMPLOYEES e join DEPARTMENTS d
  197. on e.DEPARTMENT_ID = d.DEPARTMENT_ID
  198. where d.DEPARTMENT_NAME like 'Sales';
  199.  
  200. Select e.EMPLOYEE_ID, e.FIRST_NAME, e.LAST_NAME, jo.JOB_TITLE, j.START_DATE, j.END_DATE, d.DEPARTMENT_NAME, d.DEPARTMENT_ID
  201. From DEPARTMENTS d join EMPLOYEES e
  202. on e.DEPARTMENT_ID = d.DEPARTMENT_ID
  203. join JOB_HISTORY j
  204. on j.EMPLOYEE_ID = e.EMPLOYEE_ID
  205. join jobs jo
  206. on jo.JOB_ID = j.JOB_ID
  207. where d.DEPARTMENT_ID in (80,90,110);
  208.  
  209. SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, CITY, COUNTRY_NAME, REGION_NAME
  210. FROM REGIONS R INNER JOIN COUNTRIES C
  211. ON C.REGION_ID=R.REGION_ID
  212. INNER JOIN LOCATIONS L
  213. ON C.COUNTRY_ID= L.COUNTRY_ID
  214. INNER JOIN DEPARTMENTS D
  215. ON L.LOCATION_ID=D.LOCATION_ID
  216. INNER JOIN EMPLOYEES E
  217. ON D.DEPARTMENT_ID=E.DEPARTMENT_ID
  218. WHERE R.REGION_NAME = 'Europe';
  219.  
  220. SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME,JOB_TITLE,SALARY,CITY, COUNTRY_NAME, REGION_NAME
  221. FROM REGIONS R INNER JOIN COUNTRIES C
  222. ON C.REGION_ID=R.REGION_ID
  223. INNER JOIN LOCATIONS L
  224. ON C.COUNTRY_ID= L.COUNTRY_ID
  225. INNER JOIN DEPARTMENTS D
  226. ON L.LOCATION_ID=D.LOCATION_ID
  227. INNER JOIN EMPLOYEES E
  228. ON D.DEPARTMENT_ID=E.DEPARTMENT_ID
  229. INNER JOIN JOBS J
  230. ON E.JOB_ID=J.JOB_ID
  231. WHERE C.COUNTRY_NAME = 'United States of America'AND E.SALARY > 4000
  232. OR C.COUNTRY_NAME = 'United Kingdom' AND E.SALARY<9000
  233. OR JOB_TITLE = 'Stock Clerk';
  234.  
  235. --LabConsultas2
  236. Select count(e.EMPLOYEE_ID) as cant_empleados, d.DEPARTMENT_NAME
  237. From EMPLOYEES e join DEPARTMENTS d
  238. ON e.DEPARTMENT_ID = d.DEPARTMENT_ID
  239. GROUP BY d.DEPARTMENT_NAME;
  240.  
  241. Select count(e.EMPLOYEE_ID) as contador, TO_CHAR(j.START_DATE, 'YYYY' ) as ANIO
  242. From EMPLOYEES e join JOB_HISTORY j
  243. on e.EMPLOYEE_ID = j.EMPLOYEE_ID
  244. GROUP BY j.START_DATE
  245. ORDER BY j.START_DATE ASC;
  246.  
  247. --Laboratorio
  248.  
  249. Select COUNTRY_ID, COUNTRY_NAME
  250. From COUNTRIES
  251. WHERE SUBSTR(COUNTRY_ID, 1,1) NOT LIKE SUBSTR(COUNTRY_NAME,1,1);
  252.  
  253. SELECT DEPARTMENT_ID, DEPARTMENT_NAME
  254. From DEPARTMENTS
  255. WHERE DEPARTMENT_NAME LIKE 'C%g';
  256.  
  257. SELECT EMPLOYEE_ID, first_name||' '||last_name
  258. FROM EMPLOYEES
  259. WHERE MANAGER_ID IS NULL OR DEPARTMENT_ID IS NULL;
  260.  
  261. SELECT JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY,(MAX_SALARY-MIN_SALARY) AS DIFERENCIA
  262. FROM JOBS
  263. ORDER BY JOB_TITLE, MIN_SALARY, MAX_SALARY;
  264.  
  265. SELECT COUNTRY_ID, STREET_ADDRESS, CITY
  266. FROM LOCATIONS
  267. WHERE COUNTRY_ID LIKE 'JP%' OR
  268. COUNTRY_ID LIKE 'CH%'
  269. OR COUNTRY_ID LIKE 'D%';
  270.  
  271. SELECT DEPARTMENT_ID, DEPARTMENT_NAME
  272. FROM Departments
  273. WHERE MANAGER_ID IS NULL;
  274.  
  275. SELECT DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID AS SIN_GERENTE
  276. FROM DEPARTMENTS
  277. WHERE MANAGER_ID IS NULL;
  278.  
  279. SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, EMAIL, SALARY
  280. FROM EMPLOYEES
  281. WHERE DEPARTMENT_ID IN (20,40,60) AND SALARY BETWEEN 5000 AND 7000
  282. ORDER BY SALARY DESC;
  283.  
  284. SELECT e.FIRST_NAME, e.LAST_NAME, d.department_name
  285. FROM EMPLOYEES e join DEPARTMENTS d
  286. on e.DEPARTMENT_ID = d.DEPARTMENT_ID
  287. where d.DEPARTMENT_NAME like 'Sales';
  288.  
  289. Select e.EMPLOYEE_ID, e.FIRST_NAME, e.LAST_NAME, jo.JOB_TITLE, j.START_DATE, j.END_DATE, d.DEPARTMENT_NAME, d.DEPARTMENT_ID
  290. From DEPARTMENTS d join EMPLOYEES e
  291. on e.DEPARTMENT_ID = d.DEPARTMENT_ID
  292. join JOB_HISTORY j
  293. on j.EMPLOYEE_ID = e.EMPLOYEE_ID
  294. join jobs jo
  295. on jo.JOB_ID = j.JOB_ID
  296. where d.DEPARTMENT_ID in (80,90,110);
  297.  
  298. SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, CITY, COUNTRY_NAME, REGION_NAME
  299. FROM REGIONS R INNER JOIN COUNTRIES C
  300. ON C.REGION_ID=R.REGION_ID
  301. INNER JOIN LOCATIONS L
  302. ON C.COUNTRY_ID= L.COUNTRY_ID
  303. INNER JOIN DEPARTMENTS D
  304. ON L.LOCATION_ID=D.LOCATION_ID
  305. INNER JOIN EMPLOYEES E
  306. ON D.DEPARTMENT_ID=E.DEPARTMENT_ID
  307. WHERE R.REGION_NAME = 'Europe';
  308.  
  309. SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME,JOB_TITLE,SALARY,CITY, COUNTRY_NAME, REGION_NAME
  310. FROM REGIONS R INNER JOIN COUNTRIES C
  311. ON C.REGION_ID=R.REGION_ID
  312. INNER JOIN LOCATIONS L
  313. ON C.COUNTRY_ID= L.COUNTRY_ID
  314. INNER JOIN DEPARTMENTS D
  315. ON L.LOCATION_ID=D.LOCATION_ID
  316. INNER JOIN EMPLOYEES E
  317. ON D.DEPARTMENT_ID=E.DEPARTMENT_ID
  318. INNER JOIN JOBS J
  319. ON E.JOB_ID=J.JOB_ID
  320. WHERE C.COUNTRY_NAME = 'United States of America'AND E.SALARY > 4000
  321. OR C.COUNTRY_NAME = 'United Kingdom' AND E.SALARY<9000
  322. OR JOB_TITLE = 'Stock Clerk';
  323.  
  324. --LabConsultas2
  325. Select count(e.EMPLOYEE_ID) as cant_empleados, d.DEPARTMENT_NAME
  326. From EMPLOYEES e join DEPARTMENTS d
  327. ON e.DEPARTMENT_ID = d.DEPARTMENT_ID
  328. GROUP BY d.DEPARTMENT_NAME;
  329.  
  330. Select count(e.EMPLOYEE_ID) as contador, TO_CHAR(j.START_DATE, 'YYYY' ) as ANIO
  331. From EMPLOYEES e join JOB_HISTORY j
  332. on e.EMPLOYEE_ID = j.EMPLOYEE_ID
  333. GROUP BY j.START_DATE
  334. ORDER BY j.START_DATE ASC;
  335.  
  336. /*
  337. Subquery en cláusula WHERE
  338. Este subquery debe devolver sólo un valor
  339. */
  340. SELECT employee_id, first_name, last_name,
  341. department_id, salary
  342. FROM employees
  343. WHERE salary >= (SELECT salary FROM employees
  344. WHERE first_name = 'Alexander'
  345. AND last_name = 'Hunold');
  346.  
  347. /*
  348. Subquery en cláusula WHERE
  349. Este subquery debe devolver sólo un valor
  350. Condiciones en subqueries se pueden combinar
  351. con otras
  352. */
  353. SELECT employee_id, first_name, last_name,
  354. department_id, salary
  355. FROM employees
  356. WHERE salary = (SELECT max(salary) FROM employees
  357. WHERE department_id = 30)
  358. AND department_id = 80;
  359.  
  360. /*
  361. Subquery en cláusula WHERE
  362. Este subquery puede devolver más de un valor
  363. */
  364. SELECT d.department_id, d.department_name
  365. FROM departments d
  366. WHERE d.department_id IN (SELECT e.department_id
  367. FROM employees e)
  368. ORDER BY d. department_id;
  369.  
  370. /*
  371. Subquery en cláusula WHERE
  372. Este subquery puede devolver más de un valor
  373. ALL significa TODOS
  374. ANY significa POR LO MENOS UNO
  375. */
  376. SELECT employee_id, first_name, last_name,
  377. department_id, salary
  378. FROM employees
  379. WHERE salary > ALL (SELECT salary FROM employees
  380. WHERE first_name='David');
  381.  
  382. /*
  383. Subquery en cláusula FROM
  384. Este subquery se utiliza como si fuera una tabla
  385. o vista
  386. */
  387. SELECT e.last_name, e.salary, e.department_id,
  388. m.max_salary
  389. FROM employees e JOIN
  390. (SELECT department_id, max(salary) max_salary
  391. FROM employees
  392. GROUP BY department_id) m
  393. ON e.department_id = m.department_id
  394. WHERE e.salary < m.max_salary;
  395.  
  396. /*
  397. Subquery en cláusula SELECT
  398. Este subquery está correlacionado, utiliza columnas
  399. que pertenecen a la sentencia externa
  400. */
  401. SELECT employee_id, first_name, last_name,
  402. department_id, salary,
  403. (SELECT max(salary)
  404. FROM employees
  405. WHERE department_id=e.department_id) dept_max
  406. FROM employees e;
  407.  
  408. /*
  409. Semijoin
  410. Subquery correlacionado
  411. */
  412. SELECT d.department_id, d.department_name
  413. FROM departments d
  414. WHERE EXISTS
  415. (SELECT 1
  416. FROM employees e
  417. WHERE e.department_id = d.department_id)
  418. ORDER BY d. department_id;
  419.  
  420. /*
  421. Antijoin
  422. Subquery correlacionado
  423. */
  424. SELECT d.department_id, d.department_name
  425. FROM departments d
  426. WHERE NOT EXISTS
  427. (SELECT 1
  428. FROM employees e
  429. WHERE e.department_id = d.department_id)
  430. ORDER BY d. department_id;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement