数据库连接练习
- 格式:doc
- 大小:54.50 KB
- 文档页数:3
mysql 多表连接聚合函数题库以下是一个示例的MySQL多表连接和聚合函数的题库。
1. 给出两个表格"orders"和"customers",表格"orders"包含以下列:order_id,customer_id和order_date;表格"customers"包含以下列:customer_id,customer_name和customer_city。
写一个SQL查询语句,获取每个城市有多少个订单。
```mysqlSELECT customers.customer_city, COUNT(orders.order_id) AS num_ordersFROM ordersJOIN customers ON orders.customer_id = customers.customer_id GROUP BY customers.customer_city;```2. 继续使用上述表格"orders"和"customers",写一个SQL查询语句,获取每个顾客的订单数量以及他们的总订单数量。
```mysqlSELECT customers.customer_id, customers.customer_name, COUNT(orders.order_id) AS num_orders,SUM(COUNT(orders.order_id)) OVER () AS total_orders FROM ordersJOIN customers ON orders.customer_id = customers.customer_id GROUP BY customers.customer_id, customers.customer_name; ```3. 给出两个表格"orders"和"order_details",表格"orders"包含以下列:order_id,customer_id和order_date;表格"order_details"包含以下列:order_id,product_id和quantity。
第一章习题一、单项选择题1 •数据库(DB),数据库系统(DBS)和数据库管理系统(DBMS )之间的关系是(A )。
A. DBS 包括DB 和DBMSB. DBMS 包括DB 和DBSC. DB包括DBS和DBMSD. DBS就是DB,也就是DBMS2. 下面列出的数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是(D )。
I •人工管理阶段II.文件系统阶段III •数据库阶段A. I 和IIB. 只有IIC. II 和IIID. 只有I3. 下列四项中,不属于数据库系统特点的是(C )。
A. 数据共享B. 数据完整性C. 数据冗余度高D. 数据独立性高4. 数据库系统的数据独立性体现在(B )。
A .不会因为数据的变化而影响到应用程序B. 不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序C. 不会因为存储策略的变化而影响存储结构D. 不会因为某些存储结构的变化而影响其他的存储结构5. 要保证数据库的数据独立性,需要修改的是(C )。
A. 模式与外模式B. 模式与内模式C. 三层之间的两种映射D. 三层模式6. 要保证数据库的逻辑数据独立性,需要修改的是(A )。
A. 模式与外模式的映射B. 模式与内模式之间的映射C. 模式D. 三层模式7. 用户或应用程序看到的那部分局部逻辑结构和特征的描述是(C ),它是模式的逻辑子集。
A.模式B.物理模式C. 子模式D. 内模式8. 下述(B )不是DBA 数据库管理员的职责。
A.完整性约束说明B.定义数据库模式C.数据库安全D.数据库管理系统设计9. 常见的数据模型有三种,它们是(B )A 网状、关系和语义B 层次、关系和网状C 环状、层次和关系D 字段名、字段类型和记录10. 在E-R 图中,用来表示属性的图形是(B )A 矩形B 椭圆形C 菱形D 平行四边形二、填空题1. 描述数据库全体数据的全局逻辑结构和特性的是___________ 模式 ______ 。
一. 创建一个学生档案表(表名为xsda),其表结构如下:Create Table xsda(xh Char (10) not null unique,xm Char(8),csny Datetime ,gz Decimal(6,1),zy Char (10))1.在xsda表中插入一个学生记录:(2000jsj008,李平)insert into xsda(xh,xm) values(‘2000jsj008’,’李平’)2.把xsda表中80-01-01前出生的人的工资增加20%Update xsda set gz=gz*1.2 where csny<’ 80-01-01’3.查询xsda表中不同专业的人数Select zy ,count(xh) from xsda group by zy4.假如另外还有一个学生成绩表xscj(xh,kch,kccj), xh,kch,kccj分别指学号、课程号、成绩,要求查询姓名为李平的同学的各门课程的成绩。
Select kch,kccj from xsda,xscj where xsda.xh=xscj.xh and xm=’李平’5.xsda、xscj表同上,查询选修了kch为Yy2的学生的xh和XmSelect xh,xm from xsda,xscj where xsda.xh=xscj.xh and kch=’Yy2’二、使用SQL语句创建一个班级表CLASS,属性如下:CLASSNO,DEPARTNO,CLASSNAME;类型均为字符型;长度分别为8、2、20且均不允许为空。
CREATE ___table_____ CLASS(CLASSNO __char____ (8) NOT NULL,DEPARTNO CHAR (2) NOT NULL,CLASSNAME CHAR (__20__) NOT NULL)三、有一个[学生课程]数据库,数据库中包括三个表:学生表:Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记为:Student(Sno,Sname,Ssex,Sage,Sdept),Sno 为关键字。
1.在JDBC中,用于连接数据库的接口是什么?o A. PreparedStatemento B. DriverManagero C. ResultSeto D. Connection答案:D解析:在JDBC中,Connection接口用于表示与数据库的连接。
2.下列哪个类用于处理SQL语句的执行结果?o A. Statemento B. ResultSeto C. Connectiono D. Driver答案:B解析:ResultSet类用于处理执行SQL语句的结果集。
3.JDBC中,用于执行SQL语句的类是?o A. Connectiono B. PreparedStatemento C. ResultSeto D. DriverManager答案:B解析:PreparedStatement类用于执行预编译的SQL语句,Statement类则用于执行简单的SQL语句。
4.要使用JDBC连接数据库,哪个方法用于加载JDBC驱动?o A. Connection.getConnection()o B. DriverManager.getDriver()o C. Class.forName()o D. PreparedStatement.prepareStatement()答案:C解析:Class.forName()用于加载JDBC驱动,这是在连接数据库前必须要执行的步骤。
5.下面哪个选项不是PreparedStatement相对于Statement的优点?o A. 预编译SQL语句提高执行效率o B. 处理结果集更灵活o C. 防止SQL注入o D. 设置参数更方便答案:B解析:PreparedStatement在性能、安全性和参数设置上优于Statement,但两者处理结果集的能力基本相同。
6.JDBC中的DriverManager类的哪个方法用于建立数据库连接?o A. getConnection()o B. getDriver()o C. registerDriver()o D. setLoginTimeout()答案:A解析:getConnection()方法用于根据给定的数据库URL、用户名和密码建立数据库连接。
(完整版)数据库练习题(答案)..第四章练习题⼀、选择题1、设有两个关系R(A,B)和S(B,C),与下列SELECT语句SELECT A,B FROM RWHERE B NOT IN(SELECT B FROM S WHERE C='C56');等价的关系代数表达式是 [ C]A.πA,B(σC≠'C56'(R?S))B.πA,B(R ? S)C≠'C56' C.R-πA,B(σC= 'C56'(R?S))D.R-πA,B(σC≠'C56'(R?S))2、嵌⼊式SQL的预处理⽅式,是指[ B]A.识别出SQL语句,加上前缀标识和结束标志B.把嵌⼊的SQL语句处理成函数调⽤形式C.对源程序进⾏格式化处理D.把嵌⼊的SQL语句编译成⽬标程序3、SQL中,“DELETE FROM 表名”表⽰ [ A]A.从基本表中删除所有元组B.从基本表中删除所有属性C.从数据库中撤消这个基本表D.从基本表中删除重复元组4、SQL中,聚合函数COUNT(列名)⽤于[ C]A.计算元组个数B.计算属性的个数C.对⼀列中的⾮空值计算个数D.对⼀列中的⾮空值和空值计算个数5、在传统SQL技术中,使⽤“ORDER BY”⼦句的SELECT语句查询的结果,实际上为 [B]A.数组 B.列表 C.包 D.集合6、在数据库中,能提⾼查询速度的是(C )A. 数据依赖B. 视图C. 索引D. 数据压缩7、语句 delete from sc 表明( A )A. 删除sc中的全部记录B. 删除基本表scC. 删除基本表sc中的列数据D. 删除基本表sc中的部分⾏8、在DB应⽤中,⼀般⼀条SQL 语句可产⽣或处理⼀组记录,⽽DB主语⾔语句⼀般⼀次只能处理⼀条记录,其协调可通过(B )实现。
A. 指针B. 游标C. 数组D. 栈9、在下列基本表的定义中,数值5表⽰( C )CREATE TABLE student (Sno char(5) not null unique,Sname char(2));A. 表中有5条记录B. 表中有5列C. 表中字符串Sno 的长度D. 表格的⼤⼩10、在视图上不能完成的操作是( C )A. 更新视图B. 查询C. 在视图上定义新的基本表D. 在视图上定义新视图11、下列聚合函数中不忽略空值 (null) 的是(C)A、SUM (列名)B、MAX (列名)C、COUNT ( * )D、AVG (列名)12、SQL的查询语句的where⼦句中,对空值的操作,不正确的是( C )A、where AGE IS NULLB、where AGE IS NOT NULLC、where AGE = NULLD、where NOT (AGE IS NULL)13、Transact-SQL对标准SQL的扩展主要表现为( A )。
数据库练习题库(含答案)一、单选题(共98题,每题1分,共98分)1.在需求分析阶段,结构化分析和建模方法是一种较为有效的需求分析方法,下列不属于结构化分析和建模方法优点的是()。
A、可避免过早陷入具体细节B、从局部或子系统开始分析问题,便于建模人员了解业务模型C、图形对象不涉及太多技术术语,便于用户理解模型D、用图形化的模型能直观表示系统功能正确答案:B2.DBMS通过加锁机制允许用户并发访问数据库,这属于DBMS提供的()。
A、数据定义功能B、数据操纵功能C、数据库运行管理与控制功能D、数据库建立与维护功能正确答案:C3.关于数据划分策略,下述说法错误的是()。
A、散列划分釆用某种散列函数,以数据的划分属性作为函数参数,计算数据应存储的磁盘序号B、范围划分根据某个属性的取值,将数据划分为n个部分,分别存储到不同磁盘上C、范围划分有利于范围查询和点查询,但也可能会引起数据分布不均匀及并行处理能力下降问题D、轮转法划分能保证元组在多个磁盘上的平均分配,并具有较高的点查询和范围查询正确答案:D4.存取方法设计属于数据库设计的()阶段的设计任务。
A、逻辑结构设计B、概念结构设计C、系统需求分析D、物理结构设计正确答案:D5.将新插入的记录存储在文件末尾,并使记录随机地分布在文件物理存储空间中的文件结构是()。
A、散列文件B、堆文件C、索引文件D、聚集文件正确答案:B6.关于"死锁”,下列说法中正确的是()。
A、在数据库操作中防止死锁的方法是禁止两个用户同时操作数据库B、只有出现并发操作时,才有可能出现死锁C、当两个用户竞争相同资源时不会发生死锁D、死锁是操作系统中的问题,数据库操作中不存在正确答案:B7.关于数据库应用系统的需求分析工作,下列说法正确的是()。
A、在需求分析阶段,系统需求分析员要与用户充分沟通,并做出各类用户视图B、通过需求分析过程,需要确定出整个应用系统的目标、任务和系统的范围说明C、数据操作响应时间、系统吞吐量、最大并发用户数都是性能需求分析的重要指标D、数据需求分析的主要工作是要辩识出数据处理中的数据处理流程正确答案:C8.如果一个系统定义为关系系统,则它必须( )oA、支持关系数据库B、支持选择、投影和连接运算C、A和B均成立D、A、B都不需要正确答案:C9.联机分析处理包括以下()基本分析功能。
Java 数据库连接练习题及答案1. 练习题1.1. 题目一:连接数据库请编写Java代码,使用JDBC技术连接MySQL数据库,并返回数据库连接对象。
答案:```javaimport java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class ConnectionExample {public Connection getConnection() throws SQLException {String url = "jdbc:mysql://localhost:3306/mydatabase";String username = "root";String password = "password";Connection connection = DriverManager.getConnection(url, username, password);return connection;}```1.2. 题目二:执行SQL查询语句请编写Java代码,使用之前获取的数据库连接对象,执行以下SQL查询语句,并返回查询结果集。
- 查询所有学生的姓名和年龄:SELECT name, age FROM students;- 查询成绩大于80分的学生:SELECT * FROM students WHERE score > 80;答案:```javaimport java.sql.*;public class QueryExample {public ResultSet executeQuery(Connection connection, String sql) throws SQLException {Statement statement = connection.createStatement();ResultSet resultSet = statement.executeQuery(sql);return resultSet;}```1.3. 题目三:插入数据请编写Java代码,使用之前获取的数据库连接对象,向students表插入一条新记录,包含学生姓名、年龄和成绩。
数据库ER图练习题1. 对于学⽣选课关系,其关系模式为:学⽣(学号,姓名,年龄,所在系);课程(课程名,课程号,先⾏课);选课(学号,课程号,成绩)。
课堂练习:1、查询学⽣95001的姓名和所在系。
2、查询⾄少选修了两门课程的学⽣学号。
3、查询选修了1号课程的学⽣姓名。
4、查询没有选修数据库课程的学⽣姓名。
5、查询⾄少选修了1号课程和3号课程的学⽣学号。
⽤关系代数完成如下查询。
1)求学过数据库课程的学⽣的姓名和学号。
2)求学过数据库和数据结构的学⽣姓名和学号。
3)求没学过数据库课程的学⽣学号。
4)求学过数据库的先⾏课的学⽣学号。
5)求数据库最⾼、最低成绩学⽣的姓名。
6)有相同成绩学⽣的学号。
2. 设有⼀个SPJ数据库,包括Suppliers,Parts,Projects,SPJ四个关系模式:Suppliers(SNO,SNAME,STATUS,SCITY);Parts(PNO,PNAME,COLOR,WEIGHT);Projects(JNO,JNANE,JCITY);SPJ(SNO,PNO,JNO,QTY)。
其中:供应商表Suppliers由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(SCITY)组成;零件表Parts由零件代码(PNO)、零件名(PNAME)、颜⾊(COLOR)、重量(WEIGHT)组成;⼯程项⽬表Projects由⼯程项⽬代码(JNO)、⼯程项⽬名(JNAME)、⼯程项⽬所在城市(CITY)组成;供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、⼯程项⽬代码(JNO)、供应数量组成(QTY)组成,表⽰某供应商供应某种零件给某⼯程项⽬的数量为QTY。
试⽤关系代数完成如下查询:1)求供应⼯程J1 零件的供应商号码SNO。
2)求供应⼯程J1 零件P1的供应商号码SNO。
3)求供应⼯程J1 零件为红⾊的供应商号码SNO。
4)求没有使⽤天津供应商⽣产的红⾊零件的⼯程号。
第1题:设有商店和顾客两个实体,“商店”有属性:商店编号、商店名、地址、电话,“顾客”有属性:顾客编号、姓名、地址、年龄、性别。
假设一个商店有多个顾客购物,一个顾客可以到多个商店购物,顾客每次去商店购物有一个消费金额和日期,而且规定每个顾客在每个商店里每天最多消费一次。
①试画出ER图,并注明属性和联系类型。
(5分)②将E-R图转换成关系模型,并注明主码和外码(5分)商店(商店编号,商店名,地址,电话)顾客(顾客编号,姓名,地址,年龄,性别)消费(商店编号,顾客编号,消费金额,日期)第2题:假设每个学生选修若干门课程,且每个学生每选一门课只有一个成绩,每个教师只担任一门课的教学,一门课由若干教师任教。
“学生”有属性:学号、姓名、地址、年龄、性别。
“教师”有属性:职工号、教师姓名、职称,“课程”有属性:课程号、课程名。
①试画出ER图,并注明属性和联系类型。
(5分)②将E-R图转换成关系模型,并注明主码和外码(5分)学生(学号,姓名,地址,年龄,性别)课程(课程号,课程名)教师(职工号,教师姓名,职称,课程)选课(学号,课程号,成绩)第3题:设某商业公司数据库中有三个实体集,一是”公司”实体集,属性有公司编号、公司名、地址等;二是”仓库”实体集,属性有仓库编号、仓库名、地址等;三是”职工”实体集,属性有职工编号、姓名、性别等。
每个公司有若干个仓库,每个仓库只能属于1个公司,每个仓库可聘用若干职工,每个职工只能在一个仓库工作,仓库聘用职工有聘期和工资。
①试画出E-R图(5分)②将E-R图转换成关系模型,并注明主码和外码(5分)仓库(仓库编号,仓库名,地址,公司编号)公司(公司编号,公司名,地址)职工(职工编号,姓名,性别,仓库编号,聘期,工资)第4题:某研究所有多名科研人员,每一个科研人员只属于一个研究所,研究所有多个科研项目,每个科研项目有多名科研人员参加,每个科研人员可以参加多个科研项目。
科研人员参加项目要统计工作量。
简单查询1查询customers表中的所有记录的c_name, c_truename, c_address, c_mobile列。
elect c_name, c_truename, c_address, c_mobile from customers2在会员信息表中查询年龄在20岁到30之间的会员信息。
select*from customers where year(getdate())-year(c_birth)between 20 and 303查询会员所有的地址,即不重复的地址。
select distinct c_address from customers4查询会员电话区号为0731的会员信息。
select*from customers where c_phone LIKE'0731%'5查询VIP会员信息。
select*from customers where c_type in('vip')6统计商品类别。
select distinct t_id from goods7在商品信息表中查询三星的产品信息。
select*from goods where g_name LIKE'三星%'8在商品信息表中查询价格在2000-3000区间的商品信息。
select*from Goods where g_price >=2000 and g_price<=30009在商品信息表以价格降序查询商品信息。
select*from goods order by g_price desc10在商品信息表中查询商品类别为02的所有商品的商品名称,商品单价,并根据商品价格进行升序排序。
select g_price,t_id from goods where t_id=02 order by g_price11在商品信息表中查询三星和海尔品牌的商品的详细信息。
select*from goods where g_name LIKE'[三星,海尔]%'12在商品信息表查询促销产品且属于家电产品的商品信息。
select*from goods where t_id=03 and g_status='促销'13在员工表中统计男员工的人数,并显示相应信息。
select e_gender,count(*)from employees group by e_gender14工表中查询年龄在30岁以下员工信息select*from employees where year(getdate())-year(e_birth)<30。
15员工表中查询前10条信息。
select top 10 *from employees16员工表中查询不姓“王”的员工信息。
select*from employees where e_Name LIKE'[^王]%'17订单信息表中查询所有的订单并按升序排序。
select*from orders order by o_id asc18订单信息表中查询送货上门的平均订单金额。
select o_sendmode,avg(o_sum)from orders group by o_sendmode19订单详情表中查询存在的订单号。
select distinct o_id from orderdetails20订单详情表中查询订单的最高价格,最低价格,平均价格和所有订单的价格总数。
select avg(d_price)平均,min(d_price)最小,max(d_price)最大,sum(d_price)总数from orderdetails21显示每个商品类别的商品数量和商品总数22查订单总额大于1000小于3000的订单信息,并按降序排序。
select*from orders where o_sum>1000 and o_sum<3000 order by o_sum desc23用表中查询用户名中有_的用户信息,并使用别名显示结果。
连接查询任务一.内连接查询1.查询每个订单的订单编号,客户编号,客户姓名,订单金额,订单状态。
select orders.o_id,customers.c_id,customers.c_name,orders.o_sum,orders.o_statusfrom customers inner join orderson customers.c_id=orders.c_id2.查询每个订单的订单编号,订单日期,处理员工编号,姓名,电话,订单金额。
select orders.o_id,orders.o_datetime,orders.e_id,orders.o_sum, employees.e_name,employees.e_phonefrom employees inner join orderson employees.e_id=orders.e_id3.查询每个订单的订单编号,订单日期,处理员工姓名,订单支付方式编号,支付名称。
select orders.o_id,orders.o_datetime,employees.e_name,payments.p_id,payments.p_modefrom orders inner join employeeson orders.e_id=employees.e_idinner join paymentson orders.p_id=payments.p_id4.查询每个订单的订单编号,商品编号,商品名称,商品价格,购买价格。
select orderdetails.o_id,orderdetails.g_id,goods.g_name,goods.g_price,goods.g_discount*goods.g_pricefrom orderdetails inner join goodson orderdetails.g_id=goods.g_id二.外连接查询1.查询每个客户的编号和客户姓名及其对应的订单信息,包括订单编号,订单金额。
如果该客户没有对应订单也要显示其编号和姓名。
select customers.c_id,customers.c_truename,orders.o_id,orders.o_sumfrom customers left join orderson customers.c_id=orders.c_id2.查询员工的员工编号和姓名及其对应处理的订单信息,包括订单编号,订单日期,处理方式。
如果该员工没有对应订单也要显示其编号和姓名。
select employees.e_id,employees.e_name,orders.o_id,orders.o_datetime,orders.o_sendmodefrom employees left join orderson employees.e_id=orders.e_id3.查询每种支付方式的支付编号和支付名称及其对应的订单信息,包括订单编号,订单金额。
如果该处理方式没有对应的订单也要显示该支付方式的编号和名称。
select payments.p_id,payments.p_mode,orders.o_id,orders.o_sumfrom payments left join orderson payments.p_id=orders.p_id4.查询每种商品的商品编号和商品名称及其对应的订单详情信息,包括订单编号,购买价格。
如果该商品没有对应的订单详情也要显示该商品的商品编号和名称。
select goods.g_id,goods.g_name,orderdetails.o_id,orderdetails.d_pricefrom goods left join orderdetailson goods.g_id=orderdetails.g_id5.查询所有员工的基本信息和处理订单。
select*from employees left join orderson employees.e_id=orders.e_id6.查询所有的订单信息,即使是不存在对应的订单支付方式信息,也要显示所有的支付方式。
select*from orders right join paymentson orders.p_id=payments.p_id三.子查询1.查询与订单200708011012订单编号为同一个客户订单的订单编号,客户编号,订单金额。
select o_id,c_id,o_sum from orders where c_id in(selectc_id='C0001'from customers)2.查询与刘津津来自同一个地方的会员的编号,姓名,地址。
select c_id,c_name,c_addressfrom customers where c_address in(select c_address='湖南长沙市'from customers)心得体会:在这么多次的练习之后,才发现其实数据库技术并没有想象的那么可怕,搞懂每一句的意思及组成之后,SQL就显得很简单了,整理清楚自己的思路,比如表之间的纽带如何选择,各个表存在的关系,就可以轻而易举的完成练习。
但是在数据库的学习中,我们还要更多的加强练习。