MySQL学习笔记(长文查询用)

MySQL学习笔记

文章目录

数据库的相关概念

DB: 数据库(database),存储数据的“仓库”,它保存了一系列有组织的数据。
DBMS:数据库管理系统(Database Management System),数据库是通过DBMS创建和操作的容器。
SQL:结构化查询语言(Structure Query Language), 专门用来与数据库通信的语言。

数据库存储数据的特点

  1. 将数据放在表中,表再放到库中。
  2. 一个数据库中可以有多个表,每个表都有一个名字用来标识自己。表名具有唯一性。
  3. 表具有一些特性,这些特性定义了数据在表中如何存储,类似Java中“类”的设计。
  4. 表由列组成,我们也称之为字段。所有的表都是由一个或多个列组成的,每一列类似Java中的“属性”。
  5. 表中的数据是按行存储的,每一行类似Java中的“对象”。

MySQL的安装

MySQL服务的启动和停止

方式一: 计算机————右键管理————服务
方式二: cmd窗口
net start 服务名启动服务
net stop 服务名 停止服务

MySQL的登录和退出

方式一: 通过MySQL自带的客户端(仅限于root用户)
方式二: 通过cmd窗口

mysql -h 主机名 -P 端口号 -u 用户名 -p  
Enter password:密码

退出: exit或ctrl+c

MySQL常见命令

1.查看当前所有数据库
show database;
2.打开指定的库
use 库名;
3.查看当前库所有表
show tables;
4.查看其他库所有表
show tables from;
5.创建表

create table 表名(
    列名 列类型,
    列名 列类型,
    ...
    );

6.查看表结构
desc 表名;
7.查看服务器版本
方式一:登录到MySQL服务端
select version();
方式二: 没有登录到MySQL服务端(cmd窗口)

mysql --version  
或  
mysql --V  

MySQL语法规范

  1. 不区分大小写,但建议关键字大写,表名、列名小写。
  2. 每条命令最好用分号结尾
  3. 每条命令根据需要,可以进行缩进或换行
  4. 注释
单行注释 : #注释文字  
单行注释 : -- 注释文字  
多行注释 : /*  注释文字  */  

DQL语言

基础查询

语法:

select 查询列表 from 表名;
1.查询列表可以是: 表中的字段、常量值、 表达式 、函数。
2.查询的结果是一个虚拟的表格。

USE emp;

  • 查询表中单个字段
    SELECT employeename FROM emp;

  • 查询表中的多个字段
    SELECT employeename,userId,userPw FROM emp;

  • 查询表中的所有字段
    SELECT * FROM emp;

  • 查询常量值

SELECT 100;
SELECT `A`;
  • 查询表达式
    SELECT 100%98;

  • 查询函数
    SELECT version();

  • 起别名

(1). 便于理解。
(2). 如果查询的字段有重名的情况,使用别名可以区分开来。

方式一

SELECT 100%98 AS 结果;
SELECT employeename AS "姓名" from employee;

方式二
SELECT employeename "姓名" FROM employee;

  • 去重
    查询员工表中涉及到的所有部门的编号
    SELECT DISTINCT departmentID FROM employee;

  • +号的作用

MySQL中的+号仅仅只有一个功能————运算符

/*两个操作数都为数值型,则做加法运算*/
SELECT 100+90; 

/*
只要其中一方为字符型,试图将字符型数值转换成数值型
如果转换成功,则继续做加法运算
如果转换失败,则字符型数值转换成0
*/
SELECT `123`+90;

/*只要其中一方为NULL,则结果肯定是NULL*/
SELECT NULL+10;
  • 连接
    CONCAT(str,str2,...)函数

  • IFNULL函数
    SELECT IFNULL(expr1,expr2);

SELECT IFNULL(employeename,查无此人) AS 是否有人 FROM employee;

条件查询

语法:
    SELECT
        查询列表
    FROM
        表名
    WHERE
        筛选条件;
分类:
  1. 按条件表达式筛选
    条件运算符: > < + != <> >= <=
  2. 按逻辑表达式筛选
    逻辑运算符:$$ AND , || OR , ! NOT
  3. 模糊查询
    like , between and , in , is null/is not null

按条件表达式筛选
/*查询工资大于12000的员工信息*/
SELECT
        *
FROM
        employees
WHERE
        salary>12000;
按逻辑表达式筛选
/*查询工资在10000-20000之间的员工名、工资以及奖金*/
SELECT
        last_name,
        salary,
        commission_pct
FROM
        employees
WHERE
        salary>=10000
AND        
        salary<=20000;
        
/*查询部门编号不是在90-110之间,或者工资高于15000的员工信息*/  
SELECT
        *
FROM
        employees
WHERE
        NOT(department_id>=90 AND department_id<=100) OR salary>15000;  
模糊查询

1.like
特点:
一般和任意通配符搭配使用
通配符
% : 任意多个字符,包含0个字符
_ : 任意单个字符

/*查询员工中包含字符a的员工信息*/
SELECT
        *
FROM
        employees
WHERE
        last_name 
LIKE 
        `%a%`;
        
/*查询员工名中第三个字符为e,第五个字符为a的员工名和工资*/
SELECT
        *
FROM
        employees
WHERE
        last_name LIKE `__e_a%`;

/*查询员工名中的第二个字符为_的员工名*/
SELECT
        last_name
FROM
        employees
WHERE
        last_name LIKE `_\_%`
  1. between and
    使用between and可以提高语句简洁度
    包含临界值
    两个临界值不能调换顺序
/*查询员工编号在100-120之间的员工信息*/
SELECT
        *
FROM
        employees
WHERE
        employee_id BETWEEN 100 AND 120;
  1. in
    使用in提高语句简洁度
    in列表的值类型必须一致或者兼容
/*查询员工的工种编号是 IT_PEOG、AD_VP、 AD_PRES中的一个员工名和工种编号*/
SELECT
        last_name,
        job_id
FROM
        empolyees
WHERE
        job_id IN(`IT_PEOG`,AD_VP`, `AD_PRES`);
  1. is null
    <>或=不能用于判断NULL值
    IS NULL 或 IS NOT NULL可以判断NULL值
/*查询没有奖金的员工名和奖金率*/
SELECT
        last__name,
        commission_pct
FROM
        employees
WHERE
        commission_pct IS MULL;
  1. <=> 安全等于
    既可以判断NULL值,又可以判断普通的数值。
    缺点是可读性较差
排序查询
SELECT
        查询列表
FROM
        表
WHERE
        筛选条件
ORDER BY 排序列表 asc|desc // 升序or降序  

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

常见函数

概念: 类似于java中的方法,将一组逻辑语句封装在方法体中,对外暴露方法名。
好处: 隐藏了实现细节、提高代码的重用性。
调用: select 函数名(实参列表) 【from 表】

字符函数

length 获取参数值的字节个数

SELECT LENGTH(`John`);

concat 拼接字符串

SELECT CONCAT(last_name, `_`, first_name) FROM employees;

upper/lower

SELECT UPPER(`John`);  
SELECT LOWER(`John`);

substr/substring
如果是单独参数,索引从1开始(字符长度)
截取从指定索引处后面所有字符

SELECT SUBSTR(`asdfghjk` , 5)  out_put; //ghjk

截取从指定索引处指定字符长度的字符

SELECT SUBSTR(`asdfghjk` , 5,6)  out_put; //gh

instr 返回子串第一次出现的索引, 如果找不到,返回0。

trim

SELECT TRIM(`  Myjinji  `); //去掉前后的空格  

SELECT TRIM(`a` FROM `aaaaaaMyjinjiaaaa`);//去掉Myjinji前后的a.  

lpad/rpad: 用指定的字符实现左/右填充指定长度

SELECT LPAD(`这里是一个字符串`,长度,`这里是要填充的字符`); 

replace 替换

SELECT REPLACE(`今天天气很糟糕` , `糟糕` , `不错`);
//输出:今天天气很不错
数学函数

round() 四舍五入

  1. SELECT ROUND(1.56);//2
  2. SELECT ROUND(1.567,2);//1.57

ceil(): 向上取整,返回>=该参数的最小整数

floor(): 向下取整,返回<=该参数的最大整数

truncate(): 截断
SELECT TRUNCATE(1.69999,1);//输出:1.6

取余(被除数,除数)
SELECT(10,3);//输出:1
% 效果一样

日期函数

now():返回当前系统日期+时间

curdate():返回当前系统日期,不包含时间

curtime():返回当前系统时间,不包含日期

DATEDIFF(被减数时间,减数时间):算出时间差(天)

可以获取指定的部分,年、月、日、小时、分钟、秒。

SELECT YEAR(NOW()); //2020;
SELECT YEAR(`1988-1-1`);
SELECT MONTHNAME(NOW()); //April;

str_to_date:讲字符通过指定的格式转换成日期

SELECT STR_TO_DATE(`1988-3-2`,`%Y-%c-%d`) AS 时间;
序号 格式符 功能
1 %Y 四位的年份
2 %y 两位的年份
3 %m 月份(01,02…,11,12)
4 %c 月份(1,2…11,12)
5 %d 日(01,02…)
6 %H 小时(24小时制)
7 %h 小时(12小时制)
8 %i 分钟(00,01…59)
9 %s 秒(00,01…)

date_format:将日期转换成字符

流程控制函数

if函数:if else的效果

SELECT IF(10 > 5,`大`,`小`); //大

case函数

case的使用一:

case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句2;
when 常量2 then 要显示的值2或语句2;
···
else 要显示的值n或语句n;
/*end as 一个名称
from 表*/

如果配合SELECT来用,值或语句后面不加分号。

case 的使用二(类 似于 多重if):

case 
when 条件1 then 要显示的值1或语句2;
when 条件2 then 要显示的值2或语句2;
···
else 要显示的值n或语句n;
/*end as 一个名称*/
分组函数

用作统计使用,又称为聚合函数或统计函数或组函数。

  • 分类:sum , avg , max , min , count 计算个数
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL多数据源是指在一个应用程序中同时使用多个不同的MySQL数据库来存储和管理数据的技术。它可以帮助开发人员更灵活地处理各种数据库操作,提高程序的性能和可扩展性。下面是一个完整的MySQL多数据源教程。 一、设置数据库连接信息 1. 在应用程序的配置文件中,创建多个数据库连接的配置项。例如,可以为每个数据源创建一个配置项,分别命名为db1、db2等。 2. 在配置项中,设置每个数据源的连接信息,包括数据库地址、用户名、密码等。 二、创建数据源管理器 1. 创建一个数据源管理器类,用于管理多个数据源。该类需要实现数据源的动态切换和获取。 2. 使用Java的线程安全的数据结构,如ConcurrentHashMap来存储数据源信息。将配置文件中的数据库连接信息加载到数据结构中。 3. 实现方法来切换不同的数据源,通过传入数据源的名称来切换到对应的数据库。 三、实现数据源切换 1. 在应用程序中,根据业务需求选择需要使用的数据源。可以通过调用数据源管理器的方法来切换数据源。 2. 在DAO层的代码中,根据当前使用的数据源名称,选择对应的数据源进行数据库操作。 四、使用多数据源进行数据库操作 1. 在DAO层的代码中,区分不同的数据源,并将数据库操作的代码包装在对应的数据源中。 2. 在业务层的代码中,调用DAO层的方法来进行数据库操作。不同的数据源会自动切换。 五、处理事务 1. 如果需要在一个事务中操作多个数据源,可以使用分布式事务的方式来处理。 2. 可以使用开源的分布式事务框架,如Atomikos、Bitronix等来实现多数据源的事务管理。 六、监控和维护 1. 使用监控工具来监控多个数据源的使用情况,包括连接数、查询次数等。 2. 定期对数据库进行维护,包括索引优化、数据清理等工作,以保证数据库的性能和稳定性。 通过以上步骤,我们可以实现MySQL多数据源的配置和使用。使用多数据源可以更好地管理和处理不同的数据库操作,在提高程序性能和可扩展性的同时,也提供了更灵活的数据操作方式。同时,需要注意合理选择和配置数据源,以及监控和维护数据库,以保证系统的运行效率和数据的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值