数据库的基础知识

每日一练(算法)

题目:将一个正整数分解质因数。例如:输入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


转载于:https://www.cnblogs.com/danhua520tuzi/p/9432088.html

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值