呵呵!笔记有点抽象。网大家多多指点。十分感激。
--1获得跟巴西在同一个地区的所有国家
select c_name from bbc where c_region=(
select c_region from bbc where c_name='巴西')
--2找出人口多于俄国的所有国家
select c_name from bbc where c_population >(
select c_population from bbc where c_name='俄国')
--3找出中国美国所在地的所有国家信息
select * from bbc
where c_region in (select c_region from bbc
where c_name='中国' or c_name='美国')
--4 找出人均gdp超过中国的亚洲国家
select c_name
from bbc
where c_gdp>(select c_gdp from bbc where c_name='中国')
and
c_region='亚洲'
select * from bbc where c_gdp>(
select sum(c_gdp)/sum(c_population) from bbc where c_name='中国')
and c_region='亚洲';
--5给出人口比巴西多但是比中国少的国家及信息
select * from bbc
where c_population>(
select c_population from bbc where c_name='巴西')
and c_population<(select c_population from bbc where
c_name='中国')
--6 给出gdp比任何欧洲国家都多的国家
select c_name from bbc
where c_gdp > (
select max(c_gdp) from bbc
where c_region = '欧洲' )
--7 每个地区人口最大的国家
select * from bbc y
where y.c_population=(
select max(x.c_population) from bbc x
where x.c_region=y.c_region
group by c_region
)
--8 指出某些国家比他同地区要多3倍的国家
select c_name,c_region from bbc t1
where c_population > (select 3*min(c_population) from bbc t2
where t2.c_region=t1.c_region
)
为什么要进行数据库的设计
建模:就是设计的意思。设计的目的是为了便于交流。如开发时有施工图,如买房时给一个楼盘模型)
什么是数据库设计
根据需求绘制实体以及实体之间的关系图,又叫实体关系(图)模型(ER建模,Entity RelationShip Model)。由于与具体的RDBMS无关,又叫概念数据模型(ConceptualDataModel,ER=CDM)。
由于具体的表(已有代码)与具体的RDBMS相关,所以又叫物理数据模型(PhysicalDataModel)。
概念:抽象
物理:具体
关系模型组成:
一、实体
实体:相当于表中的“一条”记录。如学生表有30条记录,表示有30个学生实体,也可以叫做30个学生对象。
实体属性:就是对象的各个属性(但是班级编号除外,因为它属于实体关系)。
设计 = 理论(建模理论+PD)+业务需求
范式:
一、作用
个人认为,范式的作用就是在判断你所建立的实体是否正确,即指导在数据库设计时如何找实体。
二、内容
1NF:列不可再分,行不可重复
2NF:非PK列必须依赖于PK列
3NF:非PK列之间必须相互独立
非PK列必须依赖于PK列:每个实体只能有自己的属性。
一对多关系设计:在转化为表的时候,一方的主键会自动设计到多方的表中。
订单与订单明细:一个订单包含多项商品,小票上每一商品属于一张订单。
商品与订单明细:一个订单明细包含多项商品,每一项商品属于一个商品。
一、为什么需要实体关系:
虽然实体本身是作为一个独立的个体存在的,但是实体之间并不是孤立的。通过各种各样的关系,才能完整的体现企业各种业务信息。
如:学生,部门,本身相对独立;关系就是:各学生在哪些部门。
数据库范式要求数据库设计避免冗余,而在设计时经常又有重复的字段,这种设计叫“逆范式”。如在设计中,经常为了保留历史数据而重复保存重复的数据(这是业务)。
以下题目基于员工表(部门号-int,工号-int,姓名-char,性别-char,生日-date),
emp(d_id,e_id,e_name,e_sex,e_birthday)。
0、写出建表语句
1、将表中的所有男员工记录复制到新表t2。语法为(?)
2、将表中所有性别为空的记录追加到表t2,语句为(?)
3、如果经常要查询:select * from emp where name=?。如何提高查询速度?
4、将工号为2020的的员工姓名改为张三,性别改为空,生日改为1980-10-2,语句为:(?)
5、删除所有员工数据的方法有(?)种,分别是(?)
6、查询所有员工姓名,相同名称只要求显示一次。
7、查询年龄最大的10名员工。
8、查询生日在1980-12-31号以后的所有男员工。
9、查询所有女员工或者姓张的员工。'
10、查询1,4,7部门中所有女员工。
11、JDBC有什么作用?
12、写出使用JDBC添加一名新员工(10部门,工号9527,李四,男,1983-3-2)的核心代码。
答案在下一篇中