Está en la página 1de 4

l. --IMPORTANTE! CAMBIAR EL NOMBRE A ALGUNAS RESTRICCIONES PARA QUE NO SEAN SIMILARES!

2. --MAS IMPORTANTE!!! ENTENDER TODO EL CODIGO :)


3. --CREDITOS A SU COMPAÑERO ALEX
4. --CUALQUIER DUDA AL GRUPO DE WHATSAPP
5.
6. --1. Crear una Base de Datos denominado lEXAMEN_A en PostgreSQL
7. create database "lEXAMEN_A";
8.
9. --2. Crear un usuario con el nombre EXAMEN_lA con contraseña 12345 de tipo super usuario
10. create user EXAMEN_lA SUPERUSER PASSWORD '12345';
11.
12. --3. A la base de datos lEXAMEN_A asignar el usuario creado y con su contraseña correspondiente
13. ALTER DATABASE "lEXAMEN_A" OWNER TO EXAMEN_lA;
14.
15. --4. Se debe crear un Esquema denominado DATOS_EXAMEN_A en la misma
16. --base de datos creado esto para futuros backup (solo creación)
17. CREATE SCHEMA DATOS_EXAMEN_A
18.
19. --====AQUÍ SE DEBEN CREAR DOMINIOS DE DATOS PARA LAS TABLAS========
20. --5. ------------------CREACION DE TABLAS============================
21. /*==================================================================
22. --crear las tablas por defecto en el esquema PUBLIC
23. Nombre de la tabla: CARRERAS
24. Campos:

25. l. Carrera_No: DOM_NRO


26. 2. C_Nombre: TEXT050
27. 3. SIGLA SIGLA
28. Restricciones:*/
29. /*l.Crear un dominio de datos CARRERA_NO de tipo llave primaria
30. ejemplo CAR-01, CAR-02, CAR-03,-,N*/
31.
32. CREATE DOMAIN DOM_NRO as CHAR(6)
33. CONSTRAINT PK_DOM_NRO check(value - 'A[CAR-]{4}\d{2}$');
34. /*2. Crear dominio de datos con nombre TEXT050 de tipo varchar
35. con tamaño de 50 no debe aceptar valores nulos*/
36. CREATE DOMAIN TEXT050 VARCHAR(50) NOT NULL;
37. /*3. Crear dominio de datos con nombre SIGLA solo debe ingresar
38. caracteres de tipo alfabético ejemplo A,B,C,D,-,z letras
39. mayúsculas y no números ni caracteres especiales*/
40. CREATE DOMAIN SIGLA AS VARCHAR(50)
41. CONSTRAINT PK_SIGLA CHECK (VALUE - 'A[A-Z]{l,}$');
42.
43. --===================================================================
44. CREATE TABLE PUBLIC.CARRERAS(
45. Carrera_No DOM_NRO,
46. C_Nombre TEXT050,
47. SIGLA SIGLA
48. ) ;
49. alter table PUBLIC.CARRERAS ADD primary key (Carrera_No);
50. /*Nombre de la tabla: ESTUDIANTES
51. Campos:
52. l. Est_No: DOM_CODIGO
53. 2. nombre: TEXT050
54. 3. apellido TEXT050
55. 4. fecha_nacimiento DATE
56. 5. fecha_ingreso DATE
57. 6. carrera_No DOM_NRO
58. 7. promedio ENTERO
59. 8. sexo VALOR
60. Restricciones:*/
61. /*l. Crear un dominio de datos denominado EST_NO de tipo entero
62. en secuencia de impares positivos ejemplo 1, 3, 5,-,N estos
63. datos debe ingresar automaticamente*/
64. CREATE DOMAIN DOM_CODIGO AS INT
65. CONSTRAINT PK_DOM_CODIGO check(value %2=1 AND VALUE >0);
66. /*2. Usar el mismo dominio de datos TEXT050 para los campos
67. indicados*/
68. /*3. Crear un dominio de datos llamado VALOR donde el campo sexo
69. solo debe aceptar valores M, F de tipo mayúscula usar un
70. constraint para el caso*/
71. DROP TABLE ESTUDIANTES
72. (REATE DOMAIN VALOR as char(l)
73. CONSTRAINT CK_VALOR check(value ='M' or value='F');
74. /*4. Para el campo carrera_No usar el mismo dominio de datos
75. DOM_NRO*/
76. /*5. Crear un dominio de dato ENTERO donde solo debe ingresar
77. números positivo entre 1 al 100*/
78. (REATE DOMAIN ENTERO AS INTEGER
79. CONSTRAINT PK_ENTERO CHECK(VALUE >=1 ANO VALUE<=100);
80. SELECT*FROM ESTUDIANTES
81. (REATE TABLE ESTUDIANTES(
82. Est_No DOM_CODIGO,
83. nombre TEXT050,
84. apellido TEXT050,
85. fecha_nacimiento DATE,
86. fecha_ingreso DATE,
87. carrera_No DOM_NRO,
88. promedio ENTERO,
89. sexo VALOR
90. );
91. /***********************/
92. --6.Adicionar constraint de llave primaria al campo Est_No de la tabla
93. --ESTUDIANTES
94. alter table ESTUDIANTES add CONSTRAINT PK_ESTUDIANTES PRIMARY KEY(Est_No)
95. --7.Adicionar constraint de llave secundaria al campo carrera_No de la
96. --tabla ESTUDIANTES con el campo carrera_No de la tabla CARRERAS
97. ALTER TABLE estudiantes ADD CONSTRAINT FK_ESTUDIANTES
98. FOREIGN KEY (carrera_no) REFERENCES PUBLIC.CARRERAS(Carrera_No);
99. --8.Agregar nuevos registros a las tablas CARRERAS, ESTUDIANTES
100. --Insertar datos en la tabla carreras
101. INSERT INTO PUBLIC.CARRERAS(Carrera_No,C_Nombre,SIGLA)
102. VALUES('CAR-01', 'Psicología', 'PSI'),
103. ('CAR-02', 'Ingeniería de Sistemas', 'IDS'),
104. ('CAR-03', 'Contabilidad', 'CON'),
105. ('CAR-04', 'Ingeniería de Química', 'IDQ'),
106. ('CAR-05', 'Mercadotecnia', 'MER'),
107. ('CAR-06', 'Arquitectura', 'ARQ'),
108. ('CAR-07', 'Administracion de Empresas', 'ADE'),
109. ('CAR-08','Medicina','MED'),
110. ('CAR-09', 'Sociología', 'SOC'),
111. ('CAR-10','Parvularia','PAR');
112. SELECT*FROM PUBLIC.CARRERAS
113. --Insertar datos en la tabla estudiantes
114. INSERT INTO estudiantes
(Est_No,nombre,apellido,fecha_nacimiento,fecha_ingreso,carrera_No,promedio,sexo)
115. VALUES(l, 'Juan', 'Vazquez', '1960-05-08', '1992-02-18', 'CAR-01',89, 'M'),
116. (3, 'Carlos Miguel', 'Lopez', '1990-07-18', '2016-02-05', 'CAR-02',70, 'M'),
117. (5, 'Maria Carlota', 'Sanchez', '2020-07-28', '2003-05-25', 'CAR-09',75, 'F'),
118. (7, 'Casandra', 'Gavilan', '2009-06-08', '2015-02-21', 'CAR-10',69, 'F'),
119. (9, 'Andrea', 'Davila', '1980-08-28', '2010-02-11', 'CAR-02',55, 'F'),
120. (11, 'Joao', 'Aguiar', '2000-09-18', '2011-02-27', 'CAR-01',89, 'M'),
121. (13, 'Flor', 'Velazquez', '2001-03-13', '2008-02-24', 'CAR-03',90, 'F'),
122. (15, 'Celeste', 'Vazquez', '1999-04-11', '2007-02-24', 'CAR-05' ,95, 'F'),
123. (17, 'Abigail', 'Andrade','1998-06-23', '2012-02-25', 'CAR-07',75, 'F'),
124. (19, 'Juan Carlos', 'Espinoza', '2005-12-08', '2012-02-11', 'CAR-10',85, 'M'),
125. (21, 'Jose Carlos', 'Flores', '2006-07-28', '2005-02-23', 'CAR-06',85, 'M'),
126. (23, 'Cristian Jesus', 'Kilberth', '2010-03-08', '2006-02-18', 'CAR-01',98, 'M');
127. SELECT*FROM estudiantes
128. --Realizar las pruebas de visualización usando el LMD con insertar 2
129. --registro a las tablas
130. --IMPORTANTE!!! CAMBAIAR LOS REGISTROS POR OTROS
131. INSERT INTO PUBLIC.CARRERAS(Carrera_No,C_Nombre,SIGLA)
132. VALUES('CAR-11', 'NOMBRE_CARRERA', 'CARR');
133. INSERT INTO estudiantes
(Est_No,nombre,apellido,fecha_nacimiento,fecha_ingreso,carrera_No,promedio,sexo)
134. VALUES(25, 'Nombre', 'Apellido', '1999-02-21', '1999-02-18', 'CAR-02' ,89, 'M');
135. /*9. Adicionar una columna TELEFONO a la tabla carreras, donde debe
136. crearse a través de dominio de datos TELEFONO la validación
137. correspondiente para el teléfono. En este caso, se establece que el
138. valor debe estar en el formato "xxx-xxxxxxxx", donde "x" es un número
139. del 0 al 9. Ejemplo 591-73299220 (ahora si no permite insertar valores
140. permitir que acepten nulos)*/
141. create domain TELEFONO as varchar(50) check(VALUE - 'A\d{3}-\d{8}$');
142. ALTER TABLE carreras ADD COLUMN TELEFONO TELEFONO NULL;
143. SELECT*FROM estudiantes;
144. /*========= CREACION DE HERENCIA DE TABLAS===========================
145. --10.Crear herencia de 2(dos) tablas hijas que hereden campos de la
146. tabla CARRERAS, el cual tiene que tener nombres las tablas de: CARRERA_!
147. CARRERA_2, en la tabla CARRERRA_l solo deben ingresar en su campo
148. carrera_No registros en el rango (ejemplo CAR-01 hasta CAR-20), y en la
149. tabla CARRERA_2 en el campo carrera_No registro en el rango (ejemplo
150. CAR-21 hasta CAR-40), aplicar las reglas correspondientes y ver
151. resultados con LMD y LQD realizar 1 ó 2 inserción de registros a las 2
152. tablas, mostrar resultados con capturas de pantalla.*/
153. /*--IMPORTANTE!!! CONSULTAR AL DOCENTE SOBRE COMO CREAR UN RULE CON CHECK
154. --PUESTO QUE ME INDICAN QUE NO PASARON EL TEMA DE REGLAS
155. --ESTO FUNCIONA, PERO NO SATISFACE LAS INDICACIONES DEL INGENIERO DE USAR RULE CON CHECK
156. --OTRA OPCIONES NO USAR RULE Y CREAR LA RESTRICCION DENTRO DE LA TABLA*/
157. (REATE TABLE CARRERA_!(
158. )INHERITS(CARRERAS);
159. --crear rule para carrera_!
160. create rule rule_carrera_l as on insert
161. to carrera_! where Carrera_No not between 'CAR-01'AND 'CAR-20'
162. do instead nothing;
163.
164. CREATE TABLE CARRERA_2(
165. )INHERITS(CARRERAS);
166. --crear rule para carrera_2
167. create rule rule_carrera_2 as on insert
168. to carrera_2 where Carrera_No not between 'CAR-21'AND 'CAR-40'
169. do instead nothing;
170.
171. --IMPORTANTE!! REGISTRAR OTROS DATOS PARA QUE NO SEAN SIMILARES!!
172. INSERT INTO CARRERA_l(Carrera_No,C_Nombre,SIGLA,TELEFONO)
173. VALUES('CAR-02', 'gastronomia', 'GAT', '591-68103937');
174.
175. INSERT INTO CARRERA_2(Carrera_No,C_Nombre,SIGLA,TELEFONO)
176. VALUES('CAR-25', 'telecomunicacion', 'TLM', '591-68103937');
177.
178. SELECT *FROM CARRERA_!
179. SELECT *FROM CARRERA_2
180. /*11.Crear herencia de identidad para la tabla ESTUDIANTES con 3(tres)
181. tablas hijas de igual arquitectura y diseño solo aplicar en campos
182. usando LQD, mostrar resultados con capturas de pantalla.*/
183. (REATE TABLE ESTUDIANTE_! ()INHERITS (ESTUDIANTES);
184. CREATE TABLE ESTUDIANTE_2 ()INHERITS (ESTUDIANTES);
185. (REATE TABLE ESTUDIANTE_3 ()INHERITS (ESTUDIANTES);
186.
187. /*12.Crear herencia de múltiple para la tabla CARRERA y ESTUDIANTE con
188. 1 tablas hijas de igual arquitectura y diseño solo campos realizar
189. aplicando el LQD el nombre de la tabla debe ser PERSONAL con un único
190. campo llamado Personal_No de tipo primary key, y luego hacer heredar
191. los siguientes campos solo datos aplicando LQD, mostrar resultados con
192. capturas de pantalla.*/
193. create table PERSONAL(
194. personal_no int primary key) inherits (carreras, estudiantes);
195. select * from personal;
196.
197. ---------------------------SUBCONSULTAS (SUBQUERY) -----------------
198. --ESTAS CONSULTAS SE LAS DEJA A USTEDES XD
199. /*13.Realizar la subconsulta donde debe mostrar los campos de SIGLA,
200. NOMBRE y APELLIDO de los estudiantes con un promedio que estén en el
201. rango de 51 a 70 esto aplicando la tabla carreras y estudiantes*/
202.
203. /*14.Realizar la subconsulta para listar aquellos estudiantes que
204. estén en la carrera Parvularia el cual debe mostrar en una lista
205. NOMBRE CARRERA, NOMBRE ESTUDIANTE*/
206. select * from estudiantes;
207. select c.c_nombre as "NOMBRE CARRERA", e.nombre! I' '! le.apellido AS "NOMBRE ESTUDIANTE"
208. from estudiantes as e join carreras as c using(carrera_no)
209. where c.c_nombre = 'Parvularia';
210. /*15.Realizar una subconsulta aquellos estudiantes que su apellido en
211. la penúltima letra sea igual a la letra E, ejemplo Marquez se debe
212. buscar por la letra E*/
213.
214.
215.
216.

También podría gustarte