MYSQL数据库

这篇博客详细介绍了MySQL数据库的基础查询和进阶操作,包括查询语法、条件筛选、排序、函数应用、分组及连接查询。此外,还讨论了流程控制函数、子查询、事务管理和数据库连接池的概念,提供了JDBC操作数据库的示例,以及Spring JDBC的简单封装使用。
摘要由CSDN通过智能技术生成

基础查询

select 查询列表 from 表名;

USE myemployees; //最好写上

1.查询表中的单个字段

SELECT last_name FROM employees;

2.查询表中的多个字段
SELECT last_name,salary,email FROM employees;

3.查询表中的所有字段

#方式一:
SELECT
employee_id,
first_name,
last_name,
phone_number,
last_name,
job_id,
phone_number,
job_id,
salary,
commission_pct,
manager_id,
department_id,
hiredate
FROM
employees ;
#方式二:
SELECT * FROM employees;

#4.查询常量值
SELECT 100;
SELECT ‘john’;

#5.查询表达式
SELECT 100%98;

#6.查询函数

SELECT VERSION();

7.起别名
方式一:使用as
SELECT 100%98 AS 结果;
SELECT last_name AS 姓,first_name AS 名 FROM employees;
方式二:使用空格
SELECT last_name 姓,first_name 名 FROM employees;

案例:查询salary,显示结果为 out put //如果要改的别名中含有关键字就用双引号包裹.
SELECT salary AS “out put” FROM employees;

#8.去重关键词 DISTINCT

#案例:查询员工表中涉及到的所有的部门编号
SELECT DISTINCT department_id FROM employees;

#9.+号的作用

/*
mysql中的+号:
仅仅只有一个功能:运算符
①若加号两边都为数值型,则两边相加
②若有字符型则转换为数值型相加,无法识别字符则视为0相加
③若有null相加则为null

*/

10、连接关键字 CONCAT():将括号中的内容连接。可以连接字符串 “xxxx”.和null连接为null

SELECT CONCAT(‘a’,‘b’,‘c’) AS 结果;

SELECT
CONCAT(last_name,first_name) AS 姓名
FROM
employees;

11、 ifnull(表 , a)关键字:若表中一行内容位null则返回 a 。
select ifnull(last_name , a) from employees;

_______________________________________________________________________________进阶2:条件查询

语法:
select
查询列表
from
表名
where
筛选条件;

分类:
一、按条件表达式筛选

简单条件运算符:> < = != <> >= <=

二、按逻辑表达式筛选
逻辑运算符:
作用:用于连接条件表达式	
&&和and:两个条件都为true,结果为true,反之为false
||或or: 只要有一个条件为true,结果为true,反之为false
!或not: 如果连接的条件本身为false,结果为true,反之为false

三、模糊查询
/*
like
between and
in()
is null is not null
<=>

/
#1.like
/

特点:
①一般和通配符搭配使用
通配符:
% 任意多个字符,包含0个字符。%向外字符可以为任意字符
_ 任意单个字符。一个_代表此位置可以代表任何字符
#案例1:查询员工名中包含字符a的员工信息

select
*
from
employees
where
last_name like ‘%a%’;
#案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资
select
last_name,
salary
FROM
employees
WHERE
last_name LIKE ‘__n_l%’;
#案例3:查询员工名中第二个字符为_的员工名

SELECT
last_name
FROM
employees
WHERE
last_name LIKE ‘_KaTeX parse error: Expected group after '_' at position 1: _̲%' ESCAPE '’;

2、.between and
①使用between and 可以提高语句的简洁度
②包含临界值
③两个临界值不要调换顺序
#案例1:查询员工编号在100到120之间的员工信息
SELECT
*
FROM
employees
WHERE
employee_id BETWEEN 120 AND 100;//前后顺序不能颠倒,AND之前为大于 之后为小于.

3、in
含义:判断某字段的值是否属于in列表中的某一项
特点:
①使用in提高语句简洁度
②in列表的值类型必须一致或兼容
③in列表中不支持通配符
#案例:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
SELECT
last_name,
job_id
FROM
employees
WHERE
job_id IN( ‘IT_PROT’ ,‘AD_VP’,‘AD_PRES’);

4、is null
=或<>不能用于判断null值
is null或is not null 可以判断null值

5、安全等于 <=>


排序查询
语法:
select 查询列表
from 表名
【where 筛选条件】
order by 排序的字段或表达式 + asc 或 desc 默认为升序;

1、asc代表的是升序,可以省略
desc代表的是降序

2、order by子句可以支持 单个字段、别名、表达式、函数、多个字段

3、order by子句在查询语句的最后面,除了limit子句

*/

#1、按单个字段排序
SELECT * FROM employees ORDER BY salary DESC;

#2、添加筛选条件再排序

#案例:查询部门编号>=90的员工信息,并按员工编号降序

SELECT *
FROM employees
WHERE department_id>=90
ORDER BY employee_id DESC;

#3、按表达式排序
#案例:查询员工信息 按年薪降序

SELECT ,salary12*(1+IFNULL(commission_pct,0))
FROM employees
ORDER BY salary12(1+IFNULL(commission_pct,0)) DESC;

#4、按别名排序
#案例:查询员工信息 按年薪升序

SELECT ,salary12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY 年薪 ASC;

#5、按函数排序
#案例:查询员工名,并且按名字的长度降序

SELECT LENGTH(last_name),last_name
FROM employees
ORDER BY LENGTH(last_name) DESC;

#6、按多个字段排序

#案例:查询员工信息,要求先按工资降序,再按employee_id升序
SELECT *
FROM employees
ORDER BY salary DESC,employee_id ASC;


常见函数(方法)
1、基础函数
1、字符函数 LENGTH : LENGTH(‘john’)。
2、拼接函数 CONCAT : CONCAT(last_name,’_’,first_name)。
3、大小写转换函数 upper、lower : UPPER(‘john’); LOWER(‘joHn’)。
4、 截取函数 substr、substring :
SUBSTR(‘李莫愁爱上了陆展元’,7) out_put; //从7号位置开始截取
SUBSTR(‘李莫愁爱上了陆展元’,1,n) out_put;//从1号索引开始截取N个字段(索引1计入)
5、查找字符函数instr: 返回子串第一次出现的索引,如果找不到返回0, INSTR(‘杨不殷’,‘殷’);
6、 删除两边函数 trim() :
LENGTH(TRIM(’ 张翠山 ')) AS out_put;
TRIM(‘a’ FROM ‘aaaaaa张aa翠aaaa’) AS out_put;结果为 张aa翠。不删除内容体间。
7、填充函数 lpad左填充、rpad右填充 : LPAD( 被填充体 , 填充后字符长度 , '填充内容 ')
8、替换函数 replace: REPLACE(‘被替换体’,‘被替换的内容’, ‘替换内容’ )

2、数学函数
1、四舍五入函数 round : ROUND(-1.55);
2、向上取整函数 ceil : SELECT CEIL(-1.02);
3、向下取整函数 floor : SELECT FLOOR(-9.99);
4、 截断函数 truncate : TRUNCATE(1.69999,1); 保留小数点后1位
5、 取余函数 : MOD(10,-3);
6、 随机函数 : rand() 从0到1之间取随机数[0.0, 1.0) 浮点型

3、日期函数
1、返回当前系统旟+时间 now
SELECT NOW();

2、 返回当前系统日期,不包含时间 curdate
SELECT CURDATE();

3、返回当前时间,不包含日期 curtime
SELECT CURTIME();

4、 可以获取指定的部分,年、月、日、小时、分钟、秒
SELECT YEAR(NOW()) 年;
SELECT YEAR(‘1998-1-1’) 年;
SELECT YEAR(hiredate) 年 FROM employees;
SELECT MONTH(NOW()) 月;
SELECT MONTHNAME(NOW()) 月;

5、 字符转date日期 :str_to_date(字符日期,转化格式) 如 str_to_date(‘9-13-1999’,’%m-%d-%Y’)
date日期转字符 :date_format(日期 , 转化格式 ) 如 DATE_format(“2018/6/6”,"%Y年%m月%d日")

4、流程控制函数
1、if 函数
SELECT IF(10<5,‘大’,‘小’);

2、case 函数
格式一 :
case 需要判断的字段货表达式
when X then 显示体
when Z then 显示体
else 显示体
end (表示结束)
格式二 :
case
when 需要判断体 then 显示体
when 需要判断体 then 显示体
else 显示体
end (表示结束)

5、分组函数
分类:
sum 求和、avg 平均值、max 最大值 、min 最小值 、count 计算个数
特点:
1、sum、avg一般用于处理数值型
max、min、count可以处理任何类型
2、以上分组函数都忽略null值
3、可以和distinct搭配实现去重的运算
4、count函数的单独介绍,一般使用count()用作统计行数
5、count函数的详细介绍
SELECT COUNT(salary) FROM employees;
SELECT COUNT(
) FROM employees;
SELECT COUNT(1) FROM employees;

效率:
MYISAM存储引擎下 ,COUNT()的效率高
INNODB存储引擎下,COUNT(
)和COUNT(1)的效率差不多,比COUNT(字段)要高一些

6、和分组函数一同查询的字段有限制
SELECT AVG(salary),employee_id FROM employees;
以最少函数位基准展现表

分组查询
group by + 分组类型(可以是函数、表达式等,一般使用单个类型)

后筛选 having,(前筛选为where)
完成显示后在查询,然后再显示表,在排序关键词 order by 之前

连接查询

内连接
等值连接查询
92版写法
SELECT last_name,department_name
FROM employees,departments
WHERE employees.department_id=departments.department_id;
99版写法
SELECT last_name,department_name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值