首页 > 数据库 >Java学习 - MySQL数据库导入和查询方式 实例

Java学习 - MySQL数据库导入和查询方式 实例

时间:2024-06-13 08:59:25浏览次数:14  
标签:Java name employees 查询 导入 MySQL NULL 连接 SELECT

目录

练习用数据库导入

  • 下载相关资源中的 myemployess.sql
  • 执行 sql 脚本
source myemployees.sql;

基础查询

SELECT子句
SELECT 查询字段 FROM 表名;

-- 查询字段包括:表的字段,常量值,表达式,函数
-- 查询的结果是一个虚拟的表
  • 查询表中单个字段

    SELECT last_name FROM employees;
    
  • 查询表中多个字段

    SELECT last_name, salary, email FROM employees;
    
  • 查询表中所有字段

    SELECT * FROM employees;
    
  • 查询常量值

    SELECT 100;
    
  • 查询表达式

    SELECT 1+2;
    
  • 查询函数

    SELECT version();
    
字段起别名
方式一:SELECT last_name AS 姓 FROM employees;
方式二:SELECT last_name 姓 FROM employees;

特殊符号:SELECT last_name AS "OUT#PUT" FROM employees;
查询结果去重
SELECT DISTINCT department_id FROM employees;
+ 号的使用
MySQL中 + 仅仅只有运算的作用,没有拼接的作用
操作数A操作数B作用
数值数值加法运算
字符数值尝试将字符转换为数值,成功:继续做加法
字符数值尝试将字符转换为数值,失败:字符被当作0
NULL任意只要有一个为 NULL,结果一定为 NULL

条件查询

WHERE子句
SELECT 查询列表 
FROM 表名
WHERE 条件表达式;
比较运算符
> < >= <= = !=(<>) 
逻辑运算符
&&  ||  !
AND OR NOT
模糊查询
模糊查询关键字
模糊查询语句注意事项
LIKE与通配符配合使用
BETWEEN x AND y包含边界,等价于 >= x && <= y
ININ ( 待选列表 ),待选列表中的元素类型要相同
IS NULL不能用 = 判断是否是 NULL,只能用 IS 判断是否是 NULL,仅可以判断 NULL
通配符
% :任意多个字符,包含0个
_ :任意1个字符
转义通配符
\_
\%

排序查询

ORDER BY子句
SELECT *
FROM employees
ORDER BY salary DESC; -- DESC:降序,ASC:升序,默认为 ASC
多重排序标准
-- 先按 salary 进行升序排序,保证满足前提条件的情况下,按 employee_id 进行降序排序
SELECT *
FROM employees
ORDER BY salary ASC, employee_id DESC;

常用函数

字符函数
  • LENGTH
-- 求出字节的个数
SELECT LENGTH(last_name)
FROM employees;
  • CONCAT
SELECT CONCAT('a','b','c','d') AS 结果;
SELECT CONCAT(last_name, first_name) AS name FROM employee;
  • UPPER
SELECT UPPER(last_name) FROM employees;
  • LOWER
SELECT UPPER(last_name) FROM employees;
  • SUBSTR
SELECT SUBSTR("123456789", 5) // 56789 索引从1开始
SELECT SUBSTR("123456789", 5, 2) // 567 从索引5开始,长度为2
  • INSTR
SELECT INSTR("123456789", "567") // 返回第一次出现的索引 5
SELECT INSTR("123456789", "xxx") // 找不到返回0
  • TRIM
SELECT TRIM("    xxx    ") // 去除前后空格
SELECT TRIM("a" FROM "aaaaaaaaaaaaaxxxaaaxxxaaaaaaaaa") // 返回 "xxxaaaxxx"
  • LPAD
SELECT LPAD("abc", 15, "*") // "***************abc"
SELECT LPAD("abc", 2, "*") // "ab"
  • RPAD
SELECT RPAD("abc", 15, "*") // "abc***************"
SELECT RPAD("abc", 2, "*") // "bc"
数学函数
  • ROUND
SELECT ROUND(4.56); // 5
SELECT ROUND(-1.56) // -2
SELECT ROUND(-1.567, 2) // -1.57 
  • CELL
SELECT CELL(1.0001) // 2
SELECT CELL(-1.02)  // -1
SELECT CELL(1.00)   // 1
  • FLOOR
SELECT FLOOR(1.0001) // 1
SELECT FLOOR(-9.8)   //-10
  • TRUNCATE
SELECT TRUNCATE(1.699999,1);  // 1.6
日期函数
  • NOW
SELECT NOW();
  • CURDATE
SELECT CURDATE();
  • CURTIME
SELECT CURTIME();
  • YEAR
SELECT YEAR(NOW());
SELECT YEAR("2018-9-14 08:23:57");

MONTH,DAY,HOUR,MINUTE,SECOND 同上

  • STR_TO_DATE
STR_TO_DATE("9-13-1999", "%m-%-%y")

%y 18 %Y 2018
%m 08 %c 8
%d 08
%H 24小时制
%h 12小时制
%i 35
%s 05
  • DATE_FORMAT
DATE_FORMAT("2018/6/6","%Y年%m月%d日")
流程控制语句
  • IF
SELECT IF(10<5,'大','小')
  • CASE
CASE (要判断的表达式,有就是switch,否则是 if-else)
WHEN 常量1 THEN 语句1
WHEN 常量2 THEN 语句2
...
ELSE 语句x
END
其他函数
  • IFNULL函数
-- IFNULL(exp1, exp2)
-- exp1:将要进行判断的字段
-- exp2:替换的字段
-- 如果 exp1 为 NULL,则返回替换的字段

SELECT IFNULL(commission_pct, 0) AS "奖金率", commission_pct
FROM employees;
分组函数
  • SUM:忽略 NULL
  • AVG:忽略 NULL
  • MAX:忽略 NULL
  • MIN:忽略 NULL
  • COUNT:忽略 NULL
  • 注意事项
    • sum avg 可以处理数值
    • max,min,count可以处理任何类型
    • 分组函数都忽略 NULL
    • 可以和 distinct 配合实现去重
    • COUNT(*) :统计行数,只要有不含 NULL 的,都算一行
    • COUNT(1):统计行数,只要有不含 NULL 的,都算一行
    • 和分组函数一同查询的字段要求是 group by 后的字段

分组查询

GROUP BY子句
SELECT
FROM
WHERE
GROUP BY 
ORDER BY
HAVING 子句
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY

连接查询

分类
  • 内连接
    • 等值连接
    • 非等值连接
    • 自连接
  • 外连接
    • 左外连接
    • 右外连接
    • 全外连接
  • 交叉连接:就是笛卡尔积
语法
SELECT 查询列表
FROM 表1 AS 别名
连接类型 表2 AS 别名
ON 连接条件
WHERE
GROUP BY
HAVING
ORDER BY

连接类型
内连接:INNER JOIN,可以省略 INNER
左外连接:LEFT JOIN
右外连接:RIGHT JOIN
全外连接:FULL JOIN
交叉连接:CROSS JOIN
例子
SELECT last_name, department_name
FROM employees AS e
INNER JOIN department AS d
ON e.department_id = d.department_id;
图例

&&&&&代办

子查询

&&&&&代办

概念
  • 出现在其他语句内部的SELECT语句,称为子查询

分页查询

LIMIT的使用
  • 放在全部SQL语句最后

  • LIMIT 开始索引,条目个数

  • 如果开始索引是0,则可以省略

  • 例子

    
    
分页通用写法
SELECT 查询列表
FROM 表
LIMIT (页码-1) * 每页条目个数, 每页条目个数;

联合查询

概念
  • 将多条查询语句的结果集合并为一个结果集
  • 关键字:UNION
例子
SELECT * FROM employees WHERE email LIKE '%a%'
UNION
SELECT * FROM employees WHERE department_id > 90;
注意事项
  • 要求多条查询语句的查询结果列数相同
  • UNION关键字默认去重,如果不想去重则 UNION ALL可以包含重复项

标签:Java,name,employees,查询,导入,MySQL,NULL,连接,SELECT
From: https://blog.csdn.net/paofuluolijiang/article/details/139599525

相关文章

  • Java 学生管理系统(基础增删改查)
    目录1.学生类的定义2.学生管理系统主程序3.功能实现 4.代码结构及结果展示4.总结5.关于作者1.学生类的定义首先,我们需要定义一个Students类来表示学生对象。这个类包含学生的ID、姓名、年龄和地址等属性,并提供了相应的构造方法和访问方法。packageStudent;......
  • 第11篇:Milvus高效数据导入与预处理:从理论到实践
    欢迎来到Milvus高效数据导入与预处理的世界!在本文,我将带你深入了解Milvus的批量数据导入方式和数据预处理技巧。通过这篇博客,你将学会如何高效地将大规模数据导入Milvus,并对数据进行预处理,以确保高效的检索和分析。准备好了吗?让我们开始这段知识之旅吧!文章目录Milvus的......
  • Java项目:基于SSM框架实现的家居商城系统分前后台【ssm+B/S架构+源码+数据库+毕业论文
    一、项目简介本项目是一套基于SSM框架实现的家居商城系统包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。项目都经过严格调试,eclipse或者idea确保可以运行!该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值二、技术实现......
  • 【保姆级详细介绍JavaScript初识及基本语法】
    ......
  • 二十一、Java工具类的创建
    什么是工具类?很好理解首先它是一个工具能完成某项功能。比如螺丝刀它是一个工具,能拧动螺丝。在Java中工具类就是能完成某项功能的类。比如定义一个数组工具类(ArrayTool),要求这个类无需创建对象就可以使用方法,且不可以创建对象,类包含的功能有,该类中没有主方法:1、数组的最......
  • 【java基础】线程池的状态流转
    前言:首先要知道什么是线程池?池化:数据库连接池,线程池,字符串常量池线程是用来执行任务的,如果不用线程池,那么线程每次使用前创建,使用后释放,资源利用率低。所以说用线程池提高了线程对象利用率。所以可以用线程池完成,先创建好那么多个线程对象在那等着,类比银行客户等待窗口办理......
  • JavaScript获取表单数据转换时间格式(学习自用)
    JavaScript获取表单数据转换时间格式:getTime(date){letdateNow=newDate(date);functionconvert(data){//时间为个位数时,前面加个0,使观感更好returndata<10?"0"+data:data;}letyear......
  • 【java基础】java线程的四种创建方式
    1.继承Thread类 2.实现Runnable接口 因为Runnable接口就是支持函数式编程的接口,可以这么玩 3.实现Callable接口,用FutureTask<T>获取返回值。FutureTask还是继承的Runnable接口   4.创建线程池Executors。由于Executors提供的等待队列LinkedBlockingQ是无界......
  • 记一次线上MySQL+keepalive主从切换导致的断联
     告警/现象我们的一个程序在一次MySQL发生主从切换后直接与MySQL失去连接,且无法自恢复,只能重启程序。排查我们使用的是Springboot默认的连接池HiKari,经排查所使用的版本没有出现致命bug。导火索是数据库发生主从切换,且随时间推进,没有任何恢复连接的迹象,netstat监控表明程......
  • MySQL实战--用户行为数据分析--8小时跟做(3)
    RFM模型_哔哩哔哩_bilibili8RFM模型{最近消费(Recency)、消费频率(Frequency)、消费金额(Monetary)三个指标)对用户黏性、忠诚度和收入这三个维度进行数值定量分析,然后和平均数(中位数)对比得到定性描述(高或低)--存储createtablerfm_model(user_idint,frequencyint,recentch......