首页 > 数据库 >MySQL数据库-1

MySQL数据库-1

时间:2023-12-08 14:33:06浏览次数:35  
标签:name employees id employee MySQL department 数据库 SELECT

MySQL数据库-1

image-20231115143217402

image-20231115143334283

1.为什么要使用数据库

  • 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以"固化”,而持久化的实现过程大多通过各种关系数据库来完成。
  • 持久化的主要作用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。

2.数据库与数据库管理系统

2.1数据库的相关概念

  • DB:数据库(Database)
    即存储数据的“仓库”,其本质是一个文件系统。它保存了一系列有组织的数据。
  • IDBMS:数据库管理系统(Database Management System)
    是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据。
  • sQL:结构化查询语言(Structured Query Language)专门用来与数据库通信的语言。

image-20231115144819732


03章基本的SELECT语句

#1.sQL的分类

  • DDL:数据定义语言。CREATE \ALTER \ DROP \ RENAME\TRUNCATE
  • DML:数据操作语言。INSERT \DELETE
    UPDATE \SELECT
  • DCL:数据控制语言。COMMIT \ROLLBACK \ SAVEPOINT \GRANT \REVOKE

2.2 SQL大小写规范(建议遵守)

  • 推荐采用统一的书写规范:
  • 数据库名、表名、表别名、字段名、字段别名等都小写。SQL关键字、函数名、绑定变量等都大写

最基本的SELECT...FROM结构

SELECT  employee_id,last_name,salary
FROM employees

6.列的别名

as:全称:alias(别名),可以省略

列的别名可以使用一对""引起来。

SELECT  employee_id 我id,last_name AS xxx,salary
FROM employees

7.去除重复行

DISTINCT

8.空值参与运算

空值: null
null不等同于0,'', 'nulll

着重号

SELECT*FROM order;

查询常数

SELECT 'aaa',123, department_id
FROM employees;

#11.显示表结构

DESCRIBE employees; #显示了表中字段的详细信息

DESC employees;

#过滤条件 声明在FROM结构的后面

WHERE department_id = 90;


第04章_运算符

比较运算符

<=>:安全等于

SELECT NULL<=>NULL

LiKE:模制查询

%:代表不确定个数的字符(0个,1个,或多个)

_:代表一个不确定的字符

SELECT last_name
FROM employees
WHERE last_name LIKE '%a%';

REGEXP\RLiKE :正则表达式

SELECT 'asdf' REGEXP 's.f','asdf' REGEXP '[nb]'

第5章_排序与分页

列的别名只能在 ORDER BY中使用,不能在wHERE中使用。

#第5章_排序与分页

#1.排序
SELECT * FROM employees;

#使用ORDERBY对查询到的数据进行排序操作。
#升序:Asc (ascend)
#降序:DESc (descend)
#如果在ORDER BY后没有显式指名排序的方式的话,则默认按照升序排列。

SELECT employee_id ,last_name,salary
 FROM employees
ORDER BY salary DESC;

#2级排序
SELECT employee_id ,last_name,salary,department_id
 FROM employees
ORDER BY department_id DESC,salary;

分页

#分页
#mysql使用limit实现数据的分页显示
SELECT employee_id ,last_name,salary,department_id
 FROM employees
 LIMIT 0,20;
#需求:每页显示pagesize条记录,此时显示第pageNo页:
#公式:LIMIT (pageNo-1)* pagesize,pagesizer

#2.2 WHERE ... ORDER BY ...LIMIT声明顺序如下:
#LIMIT的格式:严格来说:LIMIT位置偏移量,条目数
#结构"LIMIT 0,条目数"等价于"LIMIT条目数"
SELECT employee_id ,last_name,salary,department_id
 FROM employees
 WHERE salary>6000
 ORDER BY salary DESC
 LIMIT 0,20;

第06章_多表查询

#第06章_多表查询
SELECT employee_id,department_name
FROM employees,departments
WHERE employees.`department_id`=departments.`department_id`;

#如果查询语句中出现了多个表中都存在的字段,则必须指明此字段所在的表。
SELECT employee_id,department_name,employees.department_id
FROM employees,departments
WHERE employees.`department_id`=departments.`department_id`;
#建议:从sql优化的角度,建议多表查询时,每个字段前都指明其所在的表。

#可以给表起别名,在SELECT和wHERE中使用表的别名。
SELECT t1.employee_id,t2.department_name,t1.department_id
FROM employees t1,departments t2
WHERE t1.`department_id`=t2.`department_id`;
#如果给表起了别名,一旦在SELECT或WHERE中使用表名的话,则必须使用表的别名,而不能再使用表的原名。

#练习:查询员工的employee_id,last_name , department_name , city
#结论:如果有n个表实现多表的查询,则需要至少n-1个连接条件
SELECT t1.employee_id,t1.`last_name`,t2.department_name,t3.`city`,t1.department_id
FROM employees t1,departments t2,locations t3
WHERE t1.`department_id`=t2.`department_id`
AND t2.`location_id`=t3.`location_id`;

7.多表查询的分类

角度1:等值连接vs非等值连接
角度2:自连接vs非白连接

角度3:内连接vs外连接

#角度1:等值连接vs非等值连接
SELECT e.`last_name`,e.`salary`,j.`grade_level`
FROM employees e,job_grades j
WHERE e.`salary` BETWEEN j.`lowest_sal`AND j.`highest_sal`;

#自连接
#练习:查询员工id,员工姓名及其管理者的id和姓名
SELECT t1.`employee_id`,t1.`last_name`,t2.`employee_id`,t2.`last_name`
FROM employees t1,employees t2
WHERE t1.`manager_id`=t2.`employee_id`;


#7.3内连接vs外连接(交集和并集)
#内连接:合并具有同一列的两个以上的表的行,结果集中不包含一个表与另一个表不匹配的行
SELECT employee_id,department_name
FROM employees,departments
WHERE employees.`department_id`=departments.`department_id`;
#外连接:合并具有同一列的两个以上的表的行,结果集中除了包含一个表与另1个表匹配的行之外,
#还查询到了左表或右表中不匹配的行。
#外连接的分类:左外连接、右外连接、满外连接
 
 #.SQL92语法实现外连接:使用+    MySQL不支持sQL92语法中外连接的写法!

#sQL.99语法中使用JOIN ...ON的方式实现多表的查询。
#SQL99语法实现内连接:
SELECT employee_id,department_name
FROM employees JOIN departments
ON employees.`department_id`=departments.`department_id`;

#sQL99语法实现外连接:
#左外连接:
SELECT employee_id,department_name
FROM employees LEFT JOIN departments
ON employees.`department_id`=departments.`department_id`;

#满外连接: mysql不支持FULL OUTER JOIN

UNION操作符

UNION操作符返回两个查询的结果集的并集,去除重复记录。

UNION ALL操作符

UNION ALL操作符返回两个查询的结果集的并集。对于两个结果集的重复部分,不去重。

#满外连接: mysql不支持FULL OUTER JOIN
#!!!!!只能有一个分号
SELECT employee_id,department_name
FROM employees LEFT JOIN departments
ON employees.`department_id`=departments.`department_id`
UNION ALL
SELECT employee_id,department_name
FROM employees RIGHT JOIN departments
ON employees.`department_id`=departments.`department_id`
WHERE employees.`employee_id` IS NULL;

6.1自然连接

sQL99在SQL92的基础上提供了一些特殊语法,比如NATURAL JOIN用来表示自然连接。我们可以把自然连接理解为SQL92中的等值连接。它会帮你自动查询两张连接表中所有相同的字段,然后进行等值连接。

USING指定了具体的相同的字段名称,你需要在USING的括号()中填入要指定的同名字段。


函数

日期和时间函数

#日期和时间函数
SELECT NOW(),UNIX_TIMESTAMP(),FROM_UNIXTIME(UNIX_TIMESTAMP())

SELECT NOW(),DAY(NOW()),SECOND(NOW()),EXTRACT(HOUR FROM NOW())

SELECT NOW(),DATE_ADD(NOW(),INTERVAL 1 YEAR)

#3.7日期的格式化与解析
#格式化: 日期--->字符串
#解析:   字符串---->日期

SELECT NOW(),DATE_FORMAT(CURDATE(),'%Y--%c--%e') ,STR_TO_DATE('2023--11--11','%Y--%c--%e'),DATE_FORMAT(CURDATE(),GET_FORMAT(DATE,'USA'))

4.流程控制函数

#4.流程控制函数
SELECT last_name,salary,IF(salary>=10000,'高工资','低工资') '工资',IFNULL(commission_pct,0) pct,
CASE 	WHEN salary>=15000 THEN '111'
	WHEN salary>=10000 THEN '222'
	WHEN salary>=5000 THEN '333'
	ELSE '000' END '资'
FROM employees

5.加密与解密的函数

#5.加密与解密的函数
SELECT MD5('sjhg'),SHA('sjhg')

标签:name,employees,id,employee,MySQL,department,数据库,SELECT
From: https://www.cnblogs.com/xin-zhi-suo-xiang/p/17887109.html

相关文章

  • Mysql Full-Text Index 介绍
    MysqlFull-TextIndex介绍ngramFull-TextParser参考链接Thebuilt-inMySQLfull-textparserusesthewhitespacebetweenwordsasadelimitertodeterminewherewordsbeginandend,whichisalimitationwhenworkingwithideographiclanguagesthatdono......
  • 数据库数据恢复—无备份,binlog未开启的Mysql数据库误删表数据的数据恢复案例
    mysql数据库数据恢复环境:本地服务器,windowsserver操作系统,部署有mysql单实例,数据库引擎类型为innodb,独立表空间,无数据库备份,未开启binlog。mysql数据库故障:工作人员使用Delete命令删除数据时未添加where子句进行筛选,导致全表数据被删除,删除后未对该表进行任何操作。针对mysql......
  • 从ClickHouse通往MySQL的几条道路
    一、应用背景简介ClickHouse是Yandex(俄罗斯最大的搜索引擎)开源的一个用于实时数据分析的基于列存储的数据库,其处理数据的速度比传统方法快100-1000倍。ClickHouse的性能超过了目前市场上可比的面向列的DBMS,每秒钟每台服务器每秒处理数亿至十亿多行和数十千兆字节的数据。它......
  • 数据库工程师-Oracle OCP 19C认证介绍
    原创:厦门微思网络一、ORACLEOCP认证介绍OCP的英文全称是:OracleCertifiedProfessional,专家级技能和技术知识考试,通过这个考试,说明此人可以管理大型数据库,或者能够开发可以部署到整个企业的强大应用。要成为OCP,需要先获得OCA的认证,然后才能参加OCP考试。获得ORACLEOCP认证之后可......
  • Ubuntu安装MySQL数据库
    Ubuntu安装MySQL数据库介绍MySQL的定义MySQL是一种开源关系型数据库管理系统。与其他关系型数据库一样,MySQL将数据存储在由行和列组成的表中。用户可以使用结构化查询语言(通常称为SQL)定义、操作、控制和查询数据。由于MySQL是开源的,因此它的大量功能是在超过25年与用户......
  • 数据库
    本单元目标一、为什么要学习数据库二、数据库的相关概念 DBMS、DB、SQL三、数据库存储数据的特点四、初始MySQL MySQL产品的介绍 MySQL产品的安装★ MySQL服务的启动和停止★ MySQL服务的登录和退出★ MySQL的常见命令......
  • Idea2023.2连接数据库
    一、Idea实现连接MySQL数据库注意:在Jetbrains全家桶都适用。1.1.在Idea里打开1.2.设置基本信息1.3.测试注意:测试不通过查看问题二、Idea自带可视化工具操作三、问题3.1问题1简介:丢失MySQL驱动注意:Pycharm也是Jetbrains全家桶之一方式二解决下载驱动:https:......
  • mongdb数据库下载与安装
    mongdb数据库下载与安装前言:不支持WindowsXP系统最好不要安装最新版本下载以及安装:mongdb安装https://www.mongodb.com/try/download/community傻瓜式安装,这里不过多叙述,只需注意下述几点!记得去高级系统设置查看是否配置,我的配置路径为D:\MongoDB\Server\4.4\bin......
  • MySQL数据表的CURD
    一、数据表的CURD1.create数据创建一个员工表,新建employee表并向表中添加一些记录:创建数据表:createtableemployee(idint,namevarchar(20),sexint,birthdaydate,salarydouble,entry_datedate,resumetext);向数据表中插入数据:insertintoemployeevalues(......
  • MySQL服务器8核32G max_connections设置为10000的情况,springboot里面的Druid参数配置
    MySQL服务器8核32Gmax_connections设置为10000的情况,springboot里面的Druid参数配置多少合适啊,MySQL服务器8核32G,max_connections设置为10000,确实是相当大的一个配置啊。对于Druid的参数配置,得看你系统的具体情况。一般来说,你可以考虑以下几个参数:initialSize:连接池的初始大小,你......