[Principio de base de datos] Práctica de declaración SQL

Directorio de artículos

E1.

1. Hay dos tablas de datos de la siguiente manera, los resultados y los nombres de los campos en cada tabla son los siguientes:
Libro (Libro) incluye número de libro (BNo), tipo (BType), título del libro (BName), autor (BAuth), precio unitario (BPrice), publicación Número de empresa (PNo);
editorial (Publish) incluye número de editorial (PNo), nombre de la editorial (PName), ciudad (PCity), teléfono (PTel).
Utilice SQL para lograr las siguientes funciones.
(1) El nombre del autor del libro titulado "Sistema operativo" publicado en "Higher Education Press";
(2) Busque el número de teléfono de la editorial que publica todos los libros "novedosos" del autor "Zhang Xin";
(3) ) Consultar el precio de los libros de "Computadora" publicados por "Electronic Industry Press" y mostrar el nombre de la editorial y la categoría del libro al mismo tiempo;
(4) Buscar libros del mismo nombre que tengan un precio más bajo que "Advanced Mathematics" publicado por "People's Posts and Telecommunications Press" Información relevante;
(5) Busque el título y el autor del libro con la palabra "computadora" en el título;
(6) Agregue el elemento "tiempo de publicación" (BDate) a la tabla "libros", y el tipo de datos es el tipo de fecha;
(7) Cree un índice con "autor" en la tabla "libros".

//Problem 1
select BAuth
from Book
where BName='操作系统'
	and PNo=(select PNo 
				from Publish 
				where PName='高等教育出版社')

select BAuth
from Book,Publish
where Book.PNo=Publish.PNo
	and BName='操作系统'
	and PName='高等教育出版社'

//Problem 2
select PTel
from Publish,Book
where Publish.PNo=Book.PNo
	and BType='小说'
	and BAuth='张欣'

//Problem 3
select BPrice,PName,BType
from Book,Publish
where Book.PNo=Publish.PNo
	and BType='计算机'
	and PName='电子工业出版社'

// Problem 4
select *
from Book
where BName='高等数学' and 
	  BPrice<(select BPrice 
				from Book,Publish 
				where Book.PNo=Publish.PNo
					and BName='高等数学'
					and PName='人民邮电出版社')

//Problem 5
select BAuth,BName
from Book
where BName like '%计算机%'

//Problem 6
alter table Book
add
Bdate datetime

//Problem 7
create index AuthorIndex
on Book(BAuth)

E2.

Supongamos que hay una librería. El administrador de la librería quiere gestionar el estado operativo de la librería y necesita establecer una base de datos, que incluye dos tablas:
libros de depósito (número de libro, título del libro, editorial, edición, fecha de publicación, autor, precio del libro , Precio de compra, cantidad)
ventas (fecha, número de libro, cantidad, monto)
utilice SQL para cumplir con los siguientes requisitos del administrador de la librería.
(1) Establecer una mesa de almacenamiento de libros y una mesa de ventas;
(2) Dominar el inventario de libros, enumerar todos los títulos, cantidades y saldos del inventario actual (saldo = precio de compra × cantidad, es decir, los fondos ocupados por el inventario);
(3) Estadísticas de ventas totales;
(4) Enumere el informe de ventas diarias, incluido el título del libro, la cantidad y el monto total (las ventas totales de cada libro);
(5) Analice los más vendidos, es decir, enumere el período actual (desde la fecha actual) , Los 30 días anteriores) El título y la cantidad del libro cuya cantidad de ventas es superior a 100.

//Problem 1
create table StoreBook
(
	BNo varchar(6) Primary Key,
	BName nvarchar(20),
	Publish nvarchar(20),
	Edition int,
	PubDate datetime,
	Author nvarchar(20),
	SalePrice smallmoney,
	Inprice smallmoney,
	Count int
)

create table Sale
(
	Date datetime,
	BNo varchar(6) foreign key references Book(BNo),
	Count int,
	Price smallmoney,
	constraint Sale_Prim Primary Key(Date,BNo)
)

//Problem 2
select BName Count,InPrice*Count as RestPrice
from Book

//Problem 3
select Date,SUM(Count*Price) as TotalMoney
from Sale
group by Date

//Problem 4
select BName,Count,Count*Price as TotalMoney,Date
from Book,Sale
where Book.BNo=Sale.BNo

//Problem 5
select BName,Count
from Book,Sale
where Book.BNo=Sale.BNo
	and Date+30>(select MAX(Date) from Sale)
	and Count>100

E3.

Hay cuatro tablas básicas S, C, SC, T como sigue, y la estructura se muestra en la Figura 3-20.
Inserte la descripción de la imagen aquí
(1) Cree una tabla S con lenguaje SQL DDL, S # es el código principal y SN no puede estar vacío.
(2) Cree una vista de estudiantes de computación. La columna de atributos de la vista se compone de la identificación del estudiante, el nombre, la identificación del curso y la identificación del profesor.
(3) Recuperar el DNI de los alumnos mayores de 20 años del Departamento de Informática.
(4) Busque el número de curso y el nombre del curso impartido por el profesor de apellido Wang.
(5) Obtenga las calificaciones de los cursos impartidos por Zhang San y enumere SN, C # y GR.
(6) Recuperar los nombres, los números de los cursos y las calificaciones de los estudiantes de los cursos impartidos por profesores cuyos ingresos electivos superen los 1.000 yuanes.
(7) Recupere los nombres y calificaciones promedio de los estudiantes que no han tomado cursos C1 y el número de cursos electivos es dos, y ordénelos en orden descendente de calificaciones promedio.
(8) Busque el mismo nombre de estudiante y nombre de curso en cualquiera de los cursos electivos seleccionados por Zhang San.
(9) Los estudiantes de S1 tomaron C3 como optativa e insertan esta información en la tabla SC.
(10) Elimine los registros de los estudiantes que no han tomado ningún curso en la tabla S.

//Problem 1
create table S
(
	S# varchar(6) Primary Key,
	SN nvarchar(20) not null,
	age int,
	dept navrchar(20)
)

//Problem 2
create view Com_View(S#,SN,C#,T#)
as select S.S#,SN,SC.C#,T#
from S,SC,T
where S.S#=SC.S#
	and SC.C#=T.C#
	and dept='计算机'

//Problem 3
select S#
from S
where age>20 and dept='计算机'

//Problem 4
select T.C#,CN
from T,C
where T.C#=C.C#
	and TN like '王%'

//Problem 5
select SN,C#,GR
from S,SC
where S.S#=SC.S#
	and SN='张三'

//Problem 6
select SN,T.C#,GR
from T,SC,S
where T.C#=SC.C#
	and SC.S#=S.S#
	and (SAL+COMM)>1000

//Problem 7
select S.S#,SN,AVG(GR) as AvgScore
from SC,S
where SC.S#=S.S#
	and C# !='C1'
group by S#,SN
having count(*)=2
order by AVG(GR) desc

//Problem 8
select SN,CN
from S,C,SC
where SC.C#=C.C#
	and S.S#=SC.S#
	and C# in (select C# 
				from S,SC
				where S.S#=SC.S#
					and SN='张三')
	and SN != '张三'

//Problem 9
insert into table SC(S#,C#)
values('S1','C3')

//Problem 10
delete table S
where S# not in (select distinct S# from SC)

Algunos consejos.

  • create tableMedio, número de estudiante, número de libro, etc., usualmente usa el nchar(x)tipo;
  • Nombre, título, alias del departamento, nvarchar(x)tipo de uso común , y la nchardiferencia es que la longitud anterior no es fija, y la ncharlongitud es fija, escuchas el tubo que no entendiste, el uso estaría terminado.
  • Al definir restricciones para la combinación de varias claves, como restricción de tabla, debe escribirse después de la definición de la columna de atributo, por ejemplo:
create table Sale
(
	Date datetime,
	BNo varchar(6) foreign key references Book(BNo),
	Count int,
	Price smallmoney,
	constraint Sale_Prim Primary Key(Date,BNo)
)

La creación de XXX generalmente corresponde a la createdeclaración:

  • Crea una base de datos :create database db_name on ... log on ...
  • Crea una tabla de datos:create table table_name (Attributes)
  • Crear índice :create index index_name on tb_name(Attributes)
  • Crea una vista :create view view_name as select...
  • Se suele utilizar modificar la definición de la tabla de datosalter , entre los que se encuentran comandos más detalladosadd\alter\drop
  • Las restricciones se dividen en restricciones de columna y restricciones de tabla. La primera se adjunta a la definición de columna (en la declaración de creación) y la última está en su propia línea.

Supongo que te gusta

Origin blog.csdn.net/weixin_44246009/article/details/108431321
Recomendado
Clasificación