文档章节

数据库的基础知识

o
 osc_1ee7cxmx
发布于 2018/08/06 19:23
字数 1738
阅读 7
收藏 0

每日一练(算法)

题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

import java.util.Scanner;
public class Test {
public static void m(int num) {
int k = 2;       //因数从2开始,除了1和本身
System.out.print(num + "=");// 输出第一步格式
while (num > k) {           //对最大因数判断,k不能大于因数
if (num % k == 0) {
System.out.print(k + "×");// 如果num % k,但n能被k整除,则应打印出k的值
num = num / k;// num除以k的商,作为新的正整数你num
} else if (num % k != 0) {    
k++;
}
}
System.out.println(k);
}

//主函数
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);   //在控制台随意输入整数
int i = sc.nextInt();
m(i);
}
}

 

每周一总结

 对于系统命令(cmd)

进入sql:mysql -uroot -p 接着就是输入密码

--显示数据库实例 show databases;--创建数据库实例 create database mydb;--使用数据库实例 user mydb;--显示实例中所有数据库表 show tables;

创建结构:

/*

​ user 表

​ 用户表(id, name ,password)

*/

create table user(

id int primary key,

name varchar(10),

password varchar(10)

主键约束

主键 primary key

自动递增 auto_increment

唯一 unique

不为空 not null

unsigned:设置无符号列(列值不允许为负数)

zerofill:设置零填充列(当列数据长度不到定义长度时,数值 前补0

 

 

 

char类型跟varchar类型区别

char类型是定长字符串,默认大小是255(最大255);char类型一旦定义长度,则无论实际添加的数据长度是否达到最大长度,都会将定义空间占满,char类型效率高一般用于长度固定的列。

varchar类型是定长字符串,默认大小是255(最大长度取决与数据表的编码模式,utf-8:65535/3;GBK:65535/2),varchar类型定义长度之后系统不会直接分配对应大小的空间,而是根据实际填充值的长度申请空间,相对char类型更节省空间,所以varchar用于长度不定的列

 

 

SQL查询

sql语句DML语句中最为复杂的是查询语句,insert,update,delete语句多数情况为单表操作,但是select与可以关联多张数据表,针对sql查询需要明确三点:

  1. 查询列

  2. 查询目标表

  3. 查询条件

SQL查询语法:

SELECT 查询列1,查询列2,... FROM 目标表

WHERE 查询条件】

GROUP BY 列名称】

HAVING 查询条件】

ORDER BY 列名称 ASC|DESC】

LIMIT [偏移行,]记录行数】

sql查询常见关键字:

  • from子句:指定查询数据的表

  • where子句:查询数据的过滤条件

  • group by子句:对匹配where子句的查询结果进行分组

  • having子句:对分组后的结果进行条件限制order by子句:对查询结果结果进行排序,后面跟desc降序或asc升序(默认) 

  • limit子句:对查询的显示结果限制数目

select用法

一般的可以对表直接区别名 直接在表名后面加上别名 ,不能重复别名 (例:employee e)

可以将查询的整个当成一个子查询加上别名

select NAME
from employee e,(select Depno from department where depName='财务部') d
where e.Depno=d.Depno

​​​​

 

 

 

#练习1:SELECT语句的基本使用
#(1)查询每个雇员的所有记录;
select e.*,s.*,d.*
from employee e,salary s, department d
where e.Num=s.Num and e.Depno=d.Depno
order by e.Num Asc



#(2)查询前5个雇员的所有记录;
select e.*,s.*,d.*
from employee e,salary s, department d  
where e.Num=s.Num and e.Depno=d.Depno
order by e.Num Asc limit 0,5


#(3)查询每个雇员的地址和电话;
select Addr,Tel from employee



#(4)查询num为001的雇员地址和电话;
select Addr,Tel
from employee
where Num=1


#(5)查询表Employee表中女雇员的地址和电话,使用AS子句将结果列中各列的标题分别指定为地址、电话;

select Addr as 地址,Tel as 电话
from employee
where Sex='女'






#(6)计算每个雇员的实际收入;

select Num, InCome-OutCome 实际收入
from salary

#(7)找出所有性王的雇员的部门号(部门号不能重复显示);

select distinct Depno 部门号
from employee
where Name like '王%'
order by Depno asc



#(8)找出所有收入在2000-3000元之间的雇员编号
select Num 编号
from salary
where InCome between 2000 and 3000



#练习2:子查询的使用(答案可以不唯一)
#(1)查找在财务部工作的雇员情况;
select *
from employee e,(select Depno from department where depName='财务部') d
where d.Depno=e.Depno

select *
from employee e,department d
where d.Depno=e.Depno and depName='财务部'

#(2)查找在财务部且年龄不低于研发部任一个雇员年龄的雇员的姓名;
select NAME
from employee e,
(select Depno from department where depName='财务部') d
where e.Depno=d.Depno and e.Birth<all(
            select e2.Birth
            from employee e2,
            (select Depno from department where depName='研发部') e1
            where e2.Depno=e1.Depno
            )







#(3)查找比所有财务部雇员收入都高的雇员的姓名;
select NAME
from employee e
where Num in(select Num from salary where Income> ALL
(select Income from salary where Num in (select Num from employee where Depno in
(select Depno from department where depName='财务部'))))

select name from employee where num
exit(select num from department d,salary s where )


#练习3:连接查询的使用
#(1)查找每个雇员的情况及薪水情况;
select e.*,s.*
from employee e,salary s
where e.Num=s.Num


#(2)查找财务部收入在2200元以上的雇员姓名及其薪水详细情况;
select e.Name,s.*
from employee e,salary s
where e.Depno in (select Depno from department where DepName='财务部')
and e.Num in (select Num from salary where InCome>2200) and e.Num=s.Num

#练习4:数据汇总
#(1)求财务部雇员的平均实际收入;
select avg(InCome-OutCome)
from salary s,employee e
where e.Num=s.Num and e.Depno in
(select Depno from department where depName='财务部')



#(2)求财务部雇员的总人数;
select count(*)
from salary s,employee e
where e.Num=s.Num and e.Depno in
(select Depno from department where depName='财务部')


#练习5:GROUP  BY 、ORDER BY 子句的使用
#(1)求各部门的雇员数(要求显示,部门号、部门名称和部门雇员数);
select e.Depno 部门号,DepName 部门名称,count(e.Depno) 部门人数
from employee e,(select Depno , DepName from department ) d
where d.Depno=e.Depno
group by e.Depno

#(2)求部门的平均薪水大于2500的部门信息(要求显示,部门号、部门名称和平均工资)

select e.Depno 部门号 ,d.DepName 部门名称,avg(s.InCome) 平均工资
from employee e,(select Num,InCome from salary) s,(select Depno ,DepName from department)d
where d.Depno=e.Depno and e.Num=s.Num
group by e.Depno
having avg(s.InCome)>2500


o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

pycurl libcurl link-time ssl backend (nss)

pip uninstall pycurlecho 'pycurl==7.19.5.1 --global-option="--with-nss"' > requires.pypip install -r requires.py...

小红手
38分钟前
17
0
计算机网络性能衡量

1、速率 单位时间(s)内传输信息(bit)量 单位:KB/s, MB/s, Gb/s K = 10^3 ,M = 10^6, G=10^9 一般表示的是理想的传输速率 2、带宽 计算机网络中的带宽和通信等领域的带宽概念不一样,计算机网...

osc_np3y0rbq
38分钟前
3
0
互联网掀起农家乐,巨头上演AI掘金战

配图来自Canva **前有网易、阿里AI养猪,后有腾讯AI养鹅,互联网大佬们纷纷玩起了“农家乐”,互联网的生意在尖端技术的引领之下频频跨界,巨头之间的较量也从线上延伸至线下。**自古“民以食...

osc_5cok9i01
39分钟前
9
0
原来!我在4年前就开始体验雾游戏了!

前有云游戏后有雾游戏,游戏的方式看来起来越来越多种多样。那么“震撼业界”的雾游戏到底是什么来头?它依靠什么改变游戏界?它的原理又是什么? 本月月初,著名的日本游戏杂志《Fami通》表...

osc_j34n26zn
41分钟前
11
0
活动预告|田溯宁与你相约GSMA Thrive·万物生晖,分享5G风口下的创新与投资洞察

在万物互联的时代背景下,5G+AI+IoT的技术变革与融合,正在引发一场深刻的全产业创新与变革。5G技术创新、行业应用及投资机遇已成为科技行业所瞩目的焦点。 6月30日,宽带资本董事长田溯宁将...

osc_0qnrwmy3
42分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部