MySQL数据库基础回顾与复习一

news2024/11/20 18:45:38

MySQL数据库

一、原理定义概念

定义

  1. 数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库

  2. 数据库是长期储存在计算机内、有组织的、可共享的数据集合

  3. 分类:

    (1)非结构化数据:

    • 数据相对来讲没有固定的特点,这种数据非常不便于检索
    • 但是生活中很多都是非结构化数据

    (2)半结构化数据:

    • 数据之间有着相同的存储结构 属性:值

    • 每一条数据的属性可以不同

      • 张三:
        • 三号学生
      • 李四:

    (3)结构化数据

    • 创建在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据

    • 数据之间有着相同的存储结构 属性 值

    • 同一个结构模型中每一条数据的属性都是相同的,但是值有可能不同,这些数据非常便于存储和管理

    • 于是针对这些数据,专门设计一套数据存储的软件,现在我们说的数据库主要用来存储这些数据

  4. 产品

    • sqlserver -->微软
    • Mysql -->Java-->Oracle收购
      • 免费
    • Oracle-->Oracle
      • 收费
    • DB2-->IBM 份额很少
  5. 问题

    • 我们所有的数据库都放在软件中
    • 我们要获取到数据,就需要使用软件给我们提供的访问数据的接口
    • 最痛苦的就是程序员,我们就要为存储数据学习不同的数据库
    • 于是有人开始倡导:使用统一的操作数据库的方式
  6. SQL

    • sql一般指结构化查询语言(Structured Query Language),简称SQL.

    • 全世界所有的结构化数据库都适用

    • 分类

      1. DQL:Data Query Language 数据查询语言

        定义数据库的一些组件 表 索引 视图 自增序列...

      2. DML:Data Manipulate Language 数据操纵语言

        数据库的增、删、改、查

      3. DDL:Database Definition Language 数据定义语言

        Create Drop Alter

        1. DCL:Data Control Language 数据库控制语言

        权限

        事务的提交:commit

        事务的回滚:rollback

  7. SQL语言属于第四代语言,而java c++ 才属于第三代

安装

自己百度,我用的是Mysql80+Navicat16

概念

关系模型中常用的概念

  • 关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名
  • 元组:可以理解为二维表中的一行,在数据库中经常被称为记录
  • 属性:可以理解为二维表中的一列,在数据库中经常被称为字段
  • 域:属性的取值范围,也就是数据库中某一列的取值限制
  • 关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成
  • 关系模式:指对关系的描述。其格式为:关系名(属性1,属性2, ... ... ,属性N),在数据库 中成为表结构

scott用例表

  • emp 员工信息表
字段名中文类型空?默认值克其他说明
EMPNO🔑雇员编号int(11)主键
ENAME雇员名称varchar(255)
JOB岗位工种varchar(255)
MGR上级int(11)
HIREDATE雇佣日期date
SAL工资decimal
COMM奖金|津贴decimal
DEPTNO部门编号int(11)外键,dept表的deptno 关联
  • dept部门信息表
字段名中文类型空?默认值其他说明
DEPTNO🔑部门编号int(11)主键
DNAME部门名称varchar(255)
LOC地址varchar(255)
  • salgrade薪资区间表
字段名中文类型空?默认值其他说明
GRADE等级int(11)
LOSAL最低薪资int(11)
HISAL最高薪资int(11)

二、SQL-DQL语句

  1. 格式

    select 列名*N from 表名 where 查询条件1 and/or 查询条件2 group by 列 Having 分组条 件 Order by 排序

  2. 规则

    • sql在书写的时候除了查询条件之外,大小写都可以

      select * from user where uname ='zs';

      SELECT * FROM USER WHERE UNAME = 'zs';

      保持大小写风格

    • -- 属于SQL语句的注释

    • 所有的查询条件为字符串时,需要用''进行修饰,否则就会当做列名去处理

  3. select查询列和别名

emp是存储员工信息的表

 -- 查询所有员工信息(*通配符,默认查询所有的列)
 select * from emp;
 -- 查询员工的姓名
 select ename from emp;
 -- 查询员工的薪资 select sal from emp;
 -- 查询员工的姓名和薪资
 select ename , sal from emp;
 select ename sal from emp;
 select ename sal comm from emp;
 -- 查询员工的姓名和薪资,推荐使用单引号
 select ename '员工姓名', sal "薪资" from emp;
 -- 查询到的数据可以直接进行运算
 select ename ,sal ,sal * 12 from emp;
 select ename ,sal ,comm ,(sal+comm) * 12 from emp;  

4.select的条件查询

  • 普通条件查询 = > < != <> >= <=

 -- 查询员工编号为7369的员工
 select ename,sal from emp where empno = 7369;
 -- 查询员工姓名叫做
 SMITH select ename,deptno,job from emp where ename = 'SMITH';
 select ename,deptno,job from emp where ename = 'smith';
 -- 查询薪资大于2000的员工姓名
 select ename from emp where sal > 2000;
 -- 查询工作为SALESMAN
 select * from emp where job = 'SALESMAN';
 -- 查询部门在20的员工
 select * from emp where deptno = 20;
 -- 查询薪资不等于2000的员工
 select * from emp where sal != 2000;
 select * from emp where sal != 2000; 
  • in 在某个范围中查找
 -- 查询 员工编号 为 7369 7788 7881的员工信息
 select * from emp where empno in (7369,7788,7881);
 -- 查询 员工编号除了 7369 7788 7881之外的所有员工信息
 select * from emp where empno not in(7369,7788,7881);
 -- 查询除了10,20部门之外的所有员工
 select * from emp where deptno not in (10,20);
  • null值查询
 -- 查询不发放津贴的员工信息
 select * from emp where comm is null;
 -- 查询发放津贴的员工信息
 select * from emp where comm is not null; 
  • "空值"、"NULL" 和 "0" 的含义
  1. 空值(Empty Value)

    • "空值" 通常表示数据字段中没有包含任何值,它是一个没有内容的状态。
    • 在关系型数据库中,一个字段可以被设置为空,这意味着该字段可以不包含任何值。
    • 空值不等同于零或空字符串,它表示完全没有值。
  2. NULL

    • "NULL" 是数据库中表示缺少数据或未知数据的特殊值。
    • 在数据库中,如果一个字段没有被赋予任何值,那么它会被视为 "NULL"。
    • "NULL" 不同于零,它表示缺少值,而不是特定的数值。
  3. 0

    • "0" 是一个具体的数值,表示零。
    • 它是一个有效的数值,不同于空值或 "NULL"。
    • "0" 代表一个明确的数值,通常表示没有数量或值为零。
  • 范围比较
 -- 查询薪资范围在1000-4000之间的员工信息 [1000.4000]
 select * from emp where sal between 1000 and 4000;
  • 模糊查询 % _
-- 查询名字中有S的员工
select * from emp where ename like '%S%';
-- 查询名字最后一个字符是S
select * from emp where ename like '%S';
-- 查询名字第一个字符是S
select * from emp where ename like 'S%';
-- 查询名字第二个字符是A
select * from emp where ename like '_A%';
-- 查询名字中有%的员工
select * from emp where ename like '%\%%';
-- 查询名字第8 188个字符是A,这是需要一些特殊的手段-》函数
-- % 代表任意字符的任意次数 _任意字符的一次
  • 多条件联合查询 and or

(1)and 必须前后同时满足条件才能返回结果

(2)or前后有一个满足条件就能返回结果

-- 查询在20部门并且薪资大于2000的员工
select * from emp where deptno =20 and sal >2000;
-- 查询在20部门或者薪资大于2000的员工
select * from emp where deptno = 20 or sal >2000;
--查询不在20部门并且薪资小于2000的员工
select * from emp where deptno <> 20 and sal <2000;

5.select结果排序 order by

  • 使用asc是升序排列(默认),使用desc可以降序排序

  • 单列

-- 按照薪资进行排序(默认升序)
select * from emp order by sal;
-- 按照薪资进行排序(降序)
select * from emp order by sal desc;
-- 按照薪资进行排序(升序)
select * from emp order by sal asc;
-- 按照津贴进行排序(null排在最前面)
select * from emp order by comm;
  • 多列
-- 多个排序的列
select * from emp order by deptno,sal;
-- 多个排序的列(部门升序 薪资降序)
select * from emp order by deptno,sal desc;
-- 多个排序的列(工作,薪资)
select * from emp order by job,sal;

6.select结果分页

-- 每次查询前N行
SELECT
 * 
FROM
 emp 
 LIMIT 4;
 
-- 查询第N页,每页显示M个
select * from emp limit 0,3;
select * from emp limit 3,3;
select * from emp limit 6,3;
select * from emp limit (n-1)*M,M;
-- 查询薪资大于1000的逆序排列,然后显示前5条记录
select * from emp where sal >1000 order by sal desc limit 0,5 ;

7.SQL语句错误

select enane from emp

1054 - Unknown column 'enane' in 'field list'
将来出现错误的时候,直接将错误编号输入到百度查询或者询问Gpt3.5即可

单行函数

  1. 函数都是数据口提前给我们准备好的,所以我们可以直接可以调用,使用函数可以让指定的列计算出我们需要的数据

  2. 单行函数

    • 指的是操作一行数据返回一行数据,操作10行数据返回10行数据

    • 字符串函数

      函数名称作用
      LENGTH计算字符串长度函数,返回字符串的字节长度
      CONCAT合并字符串函数,返回结果为连接参数产生的字符串,参数可以是一个或多个
      INSERT替换字符串函数
      LOWER将字符串中的字母转换为小写
      UPPER将字符串中的字母转换为大写
      LEFT从左侧截取字符串,返回字符串左边的若干个字符
      RIGHT从右侧截取字符串,返回字符串右侧的若干个字符
      TRIM删除字符串左右两侧的空格
      REPLACE字符串替换函数,返回替换后的新字符串
      SUBSTRING截取字符串,返回从指定位置开始的指定长度的字符串
      REVERSE字符串反转(逆序)函数,返回与原始字符串顺序相反的字符串

-- 长度
	- select ename,length(ename) from emp;
-- 截取
	- select ename,SUBSTR(ename,1,3) from emp;
	- select * from emp where substr(ename,5,1)='S';
-- 大小写
	- select ename, upper(ename),lower(ename) from emp;
-- 拼接
	- select CONCAT(empno,'=',ename) from emp;
-- 替换
	- select ename,REPLACE(ename,'T','—') from emp;

  • 日期函数
函数名称作用
CURDATA 和 CURRENT_DATE两个函数作用相同,返回当前系统的日期值
CURTIME 和 CURRENT_TIME两个函数作用相同,返回当前系统的时间值
NOW 和 SYSDATE两个函数作用相同,返回当前系统的日期和时间值
UNIX_TIMESRAMP获取UNIX时间戳函数,返回一个以UNIX时间戳为基础的无符号整数
FROM_UNIXTIME将UNIX时间戳转换为时间格式,与UNIX_TIMESTAMP互为反函数
MONTH获取指定日期中的月份
MONTHNAME获取指定日期中的月份英文名称
DAYNAME获取知道那个日期对应的星期几的英文名称
DAYOFWEEK获取指定日期对应的一周的索引位置值
WEEK获取指定日期是一年中的第几周,返回值的范围为052或153
DAYOFYEAR获取指定日期是一年中的第几天,返回值范围是1~366
DAYOFMONTH获取指定日期是一个月中的第几天,返回值范围是1~31
YEAR获取年饭,返回值范围是1970~2069
TIME_TO_SEC将时间参数转换为秒数
SEC_TO_TIME将秒数转换为时间参数,与TIME_TO_SEC互为反函数
DATE_ADD 和 ADDDATE两个函数功能相同,都是向日期添加指定的时间间隔
DATE_SUB 和 SUBDATE两个函数功能相同,都是向日期减去指定的时间间隔
ADDTIME时间加法运算,在原始时间上添加指定时间
SUBTIME时间减法运算,在原始时间上减去指定时间
DATEDIFF获取两个日期之间间隔,返回参数1减去参数2的值
DATE_FORMAT格式化指定的日期,根据参数返回值那个格式的值
WEEKDAY获取指定日期在一周内的工作日索引

-- 获取当前系统时间
	- select hiredate,sysdate() from emp;
	- select hiredate,CURRENT_DATE(),CURRENT_TIME(),CURRENT_TIMESTAMP() from emp;
-- 日期转换
	- select DATE_FORMAT(sysdate(),'%Y-%m-%d %H:%i:%s')
	- select hiredate, date_format(now(),'%Y年%m月%d日 %H时%i分%s秒')  from emp;
-- 分别获取 年月日 时分秒 星期
	- select
		- SECOND MINUTE HOUR DAY WEEK MONTH YEAR
-- 日期的加减操作
	- select hiredate,ADDDATE(hiredate,9),ADDDATE(hiredate,-9) from emp;
	- select DATE('2012-11-11') ; 
  • 数字函数
函数名称作用
ABS求绝对值
SQRT求二次方根
MOD求余数
CEIL 和 CEILING两个函数功能相同,都是返回不小于参数的最小整数,即向上取整
FLOOR向下取整,返回值转化为一个BIGINT
RAND生成一个0~1之间的随机数,传入整数参数时,用来产生重复序列
ROUND对所传参数进行四舍五入
SIGN返回参数的符号
POW 和 POWER两个函数的功能相同,都是所传参数的次方的结果值
SIN求正弦值
ASIN求反正弦值,与函数SIN互为反函数
COS求余弦值
ACOS求反余弦值,与函数COS互为反函数
TAN求正切值
ATAN求反正切值,与函数TAN互为反函数
COT求余切值

-- 向上取整 向下取整
	- select ceil(12,1),floor(12.9)
-- mod abs pow PI rand round TRUNCATE(直接进行截取,不进行四舍五入)
-- 保留多少位有效数字
	- select round(1.4999999,2),round(1.4999999),round(1.4999999,-1)
    - select TRUNCATE(1.4999999,2)
  • 转换函数
-- 日期--》字符串
	- date_format(date,expr)
    - select DATE_FORMAT(sysdate(),'%Y-%m-%d %H:%i:%s');
-- 字符串--》日期
	- 要注意字符串和格式的匹配
	- select STR_TO_DATE('2020-4-16 17:15:24','%Y-%c-%d %H:%i:%s');
-- 数字--》字符串
	- 直接拼接一个字符串即可,可以自动转换
-- 字符串--》数字
	- 依靠函数提供的参数
  • 转换函数

    (1)空值的处理

    if null (exp1,exp2) exp1 != null ? exp1 : exp2

    select IFNULL (comm,888) from emp;

    (2)加密算法

    select MD5('123456');

    select

    AES_ENCRYPY('123456','abcd'),AES_DECRYPT(AES_ENCRYPT('123456','abcd'),'abcd')

今天就预习到这里后续有时间会在继续补充的,有点小累!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1064344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Cloud Gateway网关中各个过滤器的作用与介绍

文章目录 1. Route To Request URL Filter&#xff08;路由过滤器&#xff09;2. Gateway Filter&#xff08;全局过滤器&#xff09;3. Pre Filter&#xff08;前置过滤器&#xff09;4. Post Filter&#xff08;后置过滤器&#xff09;5. Error Filter&#xff08;错误过滤器…

【刷题笔记10.6】LeetCode:汉明距离

LeetCode&#xff1a;汉明距离 一、题目描述 两个整数之间的汉明距离是指这两个数字对应二进制位不同的位置的数目。 给你两个整数x 和 y&#xff0c;计算并返回他们之间的汉明距离。 二、分析及代码实现 对于汉明距离问题我们其实可以将其转换为&#xff1a;计算x 和 y按…

U盘作为启动盘安装苹果OS X操作系统

如何制作 macOS USB启动盘&#xff1f;如何创建可引导的 macOS 安装器&#xff1f;接下来就为大家带来可引导的苹果电脑 macOS 系统U盘启动盘制作教程。U盘是我们在工作和生活中的好帮手&#xff0c;能储存和传递数据文件&#xff0c;重要的是&#xff0c;U盘还可以制作成苹果电…

leetcode - 365周赛

一&#xff0c;2873.有序三元组中的最大值 I ​ 该题的数据范围小&#xff0c;直接遍历&#xff1a; class Solution {public long maximumTripletValue(int[] nums) {int n nums.length;long ans 0;for(int i0; i<n-2; i){for(int ji1; j<n-1; j){for(int kj1; k<…

矩阵键盘的扫描原理与基础应用

基础知识 原理图 首先需要先将 J5 跳帽放到1和2之间。 表示选择的是矩阵键盘。 简化原理图 扫描原理&#xff1a; 以左上角按键为例。 先向 R1 输出低电平&#xff0c;向 R2&#xff0c;R3&#xff0c;R4 输出高电平。 再然后向 C1&#xff0c;C2&#xff0c;C3&#xff…

在Linux中软链接和硬链接的区别是什么?

2023年10月6日&#xff0c;周五晚上 目录 软链接(SymbolicLink):硬链接(HardLink):区别: 软链接(SymbolicLink): 软链接本身只是一个指向其他文件或目录的指针,不占用任何磁盘空间。软链接的修改或删除不会影响原文件。软链接可以指向不同文件系统中的文件。 硬链接(HardLink…

Cookie和Session详解以及结合生成登录效果

目录 引言 1.Cookie中的数据从哪来数据长啥样&#xff1f; 2.Cookie有什么作用&#xff1f; 3.cookie与session的工作关联&#xff1f; 4.Cookie到哪去&#xff1f; 5.Cookie如何存&#xff1f; 6.Session 7.Cookie与Session的关联与区别 8.通过代码理解 8.1 相关代码 8.2…

c++学习之 继承的方式

在C中&#xff0c;继承方式&#xff08;或继承访问权限&#xff09;有三种&#xff1a;public、protected 和 private&#xff0c;它们决定了派生类&#xff08;子类&#xff09;对基类&#xff08;父类&#xff09;成员的访问权限&#xff0c;它们之间的区别如下&#xff1a; …

局部放电发生因素与局部放电试验的重要性

局部放电发生的几个因素&#xff1a;   ①电场过于集中于某点&#xff1b;   ②固体介质有气泡&#xff0c;有害杂质未除净&#xff1b;   ③油中含水、含气、有悬浮微粒&#xff1b;   ④不同的介质组合中&#xff0c;在界面处有严重的电场畸变。   局部放电试验的重…

【小工具-生成合并文件】使用python实现2个excel文件根据主键合并生成csv文件

1 小工具说明 1.1 功能说明 一般来说&#xff0c;我们会先有一个老的文件&#xff0c;这个文件内容是定制好相关列的表格&#xff0c;作为每天的报告。 当下一天来的时候&#xff0c;需要根据新的报表文件和昨天的报表文件做一个合并&#xff0c;合并的时候就会出现有些事新增…

信息学奥赛一本通-编程启蒙3330:【例56.1】 和为给定数

3330&#xff1a;【例56.1】 和为给定数 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 625 通过数: 245 【题目描述】 现给出若干个整数&#xff0c;询问其中是否有一对数的和等于给定的数。 【输入】 共三行&#xff1a; 第一行是整数nn(0<n≤100,000)&…

指数分布优化器(EDO)(含MATLAB代码)

先做一个声明&#xff1a;文章是由我的个人公众号中的推送直接复制粘贴而来&#xff0c;因此对智能优化算法感兴趣的朋友&#xff0c;可关注我的个人公众号&#xff1a;启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法&#xff0c;经典的&#xff0c;或者是近几年…

局部放电发生的现象特点以及解决方案

局部放电发生的现象特点&#xff1a;   1、局部放电是局部过热&#xff0c;电器元件和机械元件老化的预兆&#xff1b;   2、局部放电趋势是局放随着时间的上升指数&#xff0c;这是个曲折的过程&#xff0c;某个阶段可能下降&#xff0c;但某个阶段上升&#xff1b;   3…

C# - Opencv应用(1) 之VS下环境配置详解

C# - Opencv应用&#xff08;1&#xff09; 之VS下环境配置详解 有时候&#xff0c;单纯c#做前端时会联合C实现的dll来落地某些功能由于有时候会用C - Opencv实现算法后封装成dll&#xff0c;但是有时候会感觉麻烦&#xff0c;不如直接通过C#直接调用Opencv在此慢慢总结下C# -…

练[极客大挑战 2019]RCE ME

[极客大挑战 2019]RCE ME 文章目录 [极客大挑战 2019]RCE ME掌握知识解题思路关键paylaod 掌握知识 ​ RCE无数字和字母的bypass&#xff0c;取反 异或 递增 解题思路 打开题目链接&#xff0c;发现是代码审计的题目&#xff0c;而且代码比较简单&#xff0c;似乎关键就是RC…

一个很愚蠢的游戏(中)!!!

系列文章目录 c小游戏_睡觉觉觉得的博客-CSDN博客一个很愚蠢的游戏(上)&#xff01;&#xff01;&#xff01;_睡觉觉觉得的博客-CSDN博客 文章目录 系列文章目录前言一、个人名片二、描述三、代码1.代码 总结 前言 无 &#xff08;嘻嘻&#xff09; 一、个人名片 个人主页&a…

[NewStarCTF 2023 公开赛道] week1

最近没什么正式比赛&#xff0c;都是入门赛&#xff0c;有moectf,newstar,SHCTF,0xGame都是漫长的比赛。一周一堆制。 这周newstar第1周结束了&#xff0c;据说py得很厉害&#xff0c;第2周延期了&#xff0c;什么时候开始还不一定&#xff0c;不过第一周已经结束提交了&#…

python --在2x2的子图中绘制三个子图,并使第三个子图居中

python – 在2x2的子图中绘制三个子图&#xff0c;并使第三个子图居中 基于python&#xff0c;绘制一个2x2的子图范围&#xff0c;但是只显示3个子图&#xff0c;并使得第三个子图居中显示’ 思路&#xff1a; 建立一个2x2的子图前两个正常画&#xff0c;其中第三个子图跨越两…

[开源项目推荐]privateGPT使用体验和修改

文章目录 一.跑通简述二.解读ingest.py1.导入库和读取环境变量2.文档加载3.文档处理&#xff08;调用文件加载函数和文本分割函数&#xff09; 三.injest.py效果演示1.main函数解读2.测试 四.修改代码&#xff0c;使之适配多知识库需求1.修改配置文件&#xff1a;constants.py2…

H桥级联型五电平三相逆变器Simulink仿真模型

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…