B026-MySQL基础

news2024/12/26 12:59:16

目录

      • 数据库概述
        • 数据库概念
        • 数据库的由来和发展
        • 常见的关系型数据库服务器(DBMS)
        • SQL概述
        • 表的概念
      • 数据库的安装与配置
        • 安装
        • 启动和连接MySQL
          • 启动MySQL服务
          • 连接MySQL
        • MySQL图形化管理软件-Navicat
        • 数据库安装失败解决方案
      • MySQL数据库操作
        • 数据库操作和存储引擎
        • MySQL常用列类型[Mysql数据类型---Java数据类型]
        • 表的操作
      • 查询操作

数据库概述

在这里插入图片描述

数据库概念

在这里插入图片描述
1.数据库(Database,简称DB)
是按照数据结构来组织、存储和管理数据的仓库.保存有组织的数据的容器(通常是一个文件或一组文件)
【算法+IO+文件】

2.数据库管理系统(Database Management System,简称DBMS) — mysql
① 专门用于管理数据库的计算机系统软件;
② 能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并对数据完整性、安全性进行控制;
③ 我们一般说的数据库,就是指的DBMS,例如我们马上学习的MySQL就是其中之一;

3.数据库应用系统(Database Application System)
使用数据库技术的系统,基本上所有的信息系统都是数据库应用系统,它通常由软件、数据库和数据管理员组成。我们开发一款软件,然后这款软件能使用到数据库(和数据库有关系,有通信),那么,这一款软件我们就可以称之为数据库应用系统。

数据库的由来和发展

见文档

常见的关系型数据库服务器(DBMS)
数据库公司特点
OracleOracle(甲骨文/神域)运行稳定,可移植性高,功能齐全,性能超群!适用于大型企业领域。
DB2IBM速度快、可靠性好,适于海量数据,恢复性极强。适用于大中型企业领域。
SQL SERVER微软全面,效率高,界面友好,操作容易,但是不跨平台。适用于于中小型企业领域。
MYSQLAB–>SUN–>Oracle开源,体积小,速度快。适用于于中小型企业领域。
SQL概述

SQL:结构化查询语言(Structured Query Language),是关系数据库的标准语言,它的特点是:简单、灵活、功能强大,包含6个部分

一、数据查询语言(DQL):query查询[掌握]–用的多
其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。

二、数据操作语言(DML):【掌握】–用的多
其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。

三、事务处理语言(TPL):java概念
它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。

四、数据控制语言(DCL):
它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。

五、数据定义语言(DDL):
其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。

六、指针控制语言(CCL):Sql编程!..
它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。

表的概念

表的特点和常用术语:
表具有固定的列和任意的行,在数学上称为”关系”;
二维表是同类实体的各种属性的集合,每个实体对应于表中的一行,在关系中称为元组,相当于通常的一条记录;表中的列表示属性,称为Field,相当于通常记录中的一个数据项,也叫列/字段
在这里插入图片描述

数据库的安装与配置

安装

见文档

启动和连接MySQL
启动MySQL服务

查看是否启动:
方式一:控制面板 - 管理工具 - 服务 - 查找mysql
方式二:任务管理器 - 服务 - 打开服务 - 查找mysql
方式三:win+r 输入 services.msc - 查找mysql

关闭mysql方式:
1.在服务里右键mysql可以停止mysql
2.win+R - net stop MySQL

启动方式:
方式一:在服务里右键mysql可以启动mysql
方式二:win+R - net start mysql

连接MySQL

win+r - mysql -u(用户名) -p(密码) -h(host) -P(端口)
如输入 mysql -uroot -proot -hlocalhost -P3306 回车

在运行窗口或cmd窗口输入都可以
密码可防窥输入,-p后回车再输入将以*号显示

MySQL图形化管理软件-Navicat

直接安装

连接mysql
在这里插入图片描述

数据库安装失败解决方案

控制面板 - 程序和功能 - 卸载程序 - 卸载mysql

查看Navicat连接不上代表卸载成功

卸载残留文件:
C盘 - Program Files 里搜索 mysql文件夹 删除掉
C盘 - Program Files (x86) 里搜索 mysql文件夹 删除掉
C盘 - ProgramData(这是个隐藏文件夹) 里搜索 mysql数据文件 删除掉

重启电脑

重新安装

MySQL数据库操作

数据库操作和存储引擎

见文档

MySQL常用列类型[Mysql数据类型—Java数据类型]

常用对照
在这里插入图片描述
其他见文档

表的操作

两种创建表的方式,查看表结构和删除表,表的约束
见文档

查询操作

见文档和sql文件

-- 对表的查看 - 数据库查询语句
	SELECT 列名1,列名2,列名3,...(*) FROM 表名(视图 子查询)-->数据源; -- 不建议写 * (效率慢) 数据库优化方法
	SELECT * FROM product;  
 
    -- 查询所有货品(product) 信息
	SELECT * FROM product;

    -- 查询所有货品的id,productName,salePrice
	SELECT id,productName,salePrice  FROM product;

-- 消除重复的数据
	SELECT DISTINCT  brand FROM product
	
-- 实现数学运算
    -- 查询所有货品的id,名称和批发价(批发价=卖价*折扣)
    SELECT id, productName, salePrice*costPrice FROM product
	-- 查询所有货品的id,名称,和各进50个的成本价(成本=costPrice)
    SELECT id, productName, 50*costPrice FROM product;
	-- 查询所有货品的id,名称,各进50个,并且每个运费1元的成
	SELECT id, productName, 50*(costPrice+1) FROM product;

-- 别名的使用
    -- 查询所有货品的id,名称,各进50个,并且每个运费1元的成本(使用别名)
	SELECT id, productName, 50*(costPrice+1) as 成本 FROM product;  -- 使用别名的第一种方式
	SELECT id, productName, 50*(costPrice+1) 成本 FROM product;  -- 使用别名的第二种方式

-- 设置显示格式 CONCAT 函数		ex:列名:productSalePrice,行内容:罗技M90商品的零售价为:90.00
	SELECT CONCAT(productName,'商品的零售价为:',salePrice) AS productSalePrice FROM product;

-- 过滤查询 比较运算符 ------------- 公式
	SELECT 列名1,列名2,... FROM 表名  WHERE  条件;  单条件
	SELECT 列名1,列名2,... FROM 表名  WHERE  条件1 AND 条件2;  多条件  AND () 
	SELECT 列名1,列名2,... FROM 表名  WHERE  条件1 OR 条件2;  多条件  or ()

    -- 练习 
	-- 查询货品零售价为119的所有货品信息.
    SELECT * FROM product  WHERE salePrice=119;
	-- 查询货品名为罗技G9X的所有货品信息.
	SELECT * FROM product WHERE productName='罗技G9X';
	-- 查询货品名 不为 罗技G9X的所有货品信息.
	SELECT * FROM product WHERE productName<>'罗技G9X';
	-- 查询分类编号不等于2的货品信息
	SELECT * FROM product WHERE dir_id!=2;
	-- 查询货品名称,零售价,对于零售价小于等于200的货品
	SELECT productName,salePrice FROM product WHERE salePrice<=200;

	-- 查询id,货品名称,批发价,对于批发价大于350的货品
	SELECT id,productName,salePrice*cutoff AS pfj FROM product WHERE salePrice*cutoff>350;
	-- 思考:使用where后面使用别名不行,总结select和where的执行顺序
     SQL 的执行顺序  (面试题)
     from -> where -> SELECT 

-- 字符串大小写的区分 BINARY
	SELECT * FROM product WHERE  BINARY productName='罗技g9x'


-- 逻辑运算  and or NOT(....)
	-- 选择id,货品名称,批发价在300-400之间的货品
    SELECT id,productName, salePrice*cutoff as pfj from product where salePrice*cutoff>=300 and  salePrice*cutoff<=400   
	-- 选择id,货品名称,分类编号为2,4的所有货品
	SELECT id,productName ,dir_id FROM product where dir_id=2 OR dir_id=4;
	-- 选择id,货品名词,分类编号不为2的所有商品
	SELECT id, productName ,dir_id FROM product where dir_id != 2;
	-- 选择id,货品名称,分类编号的货品零售价大于等于250或者是成本大于等于200
	select id,productName ,dir_id ,salePrice,costPrice from product where salePrice>=250 OR costPrice>=200;

	SELECT 列名1,列名2,... FROM 表名 WHERE 条件;  单条件

	select 列名1,列名2,... from 表名 where 条件1 and (or) 条件2; -- ============================= 特重要


-- 范围查询  BETWEEN AND  between and 
	SELECT 列名1,列名2,(*) FROM 表名  WHERE 列名  between 最小值  and 最大值 ----

	-- 选择id,货品名称,批发价在300-400之间的货品
	SELECT id,productName,salePrice*cutoff pfj FROM product WHERE salePrice*cutoff>=300 AND salePrice*cutoff<=400; -- 没有用between and 的写法
	SELECT id,productName,salePrice*cutoff pfj FROM product WHERE salePrice*cutoff between 300 AND 400; -- 用between and 的写法

	-- 选择id,货品名称,批发价不在300-400之间的货品
	SELECT id,productName,salePrice*cutoff pfj FROM product WHERE salePrice*cutoff NOT between 300 AND 400;  -- not 的使用

-- 集合查询  in
	SELECT 列名1,列名2 (*) FROM 表名 WHERE 列名 in(1,2,)
   
	-- 选择id,货品名称,分类编号为2,4的所有货品
	SELECT * FROM product where dir_id=2 or dir_id=4; -- 不要in的写法
	SELECT * FROM product where dir_id IN(2,4); -- 用in的写法

	-- 选择id,货品名称,分类编号不为2,4的所有货品
	SELECT * FROM product where dir_id NOT IN(2,4);
	
-- 空值查询
	-- 查询商品名为NULL的所有商品信息
	SELECT * FROM product where productName  is  null -- 为空 

	SELECT * FROM product where productName ="";  -- 对空字符串的查询

-- 模糊查询 LIKE    % (匹配零个或多个字符串) _(匹配一个字符串)  like 
	-- 查询id,货品名称,货品名称匹配'%罗技M9_'  
	SELECT id,productName  FROM product  WHERE productName LIKE '%罗技M9_'
	-- 查询id,货品名称,分类编号,零售价大于等于200并且货品名称匹配'%罗技M1__'
	SELECT id,productName,dir_id,salePrice  FROM product  WHERE salePrice>200 AND productName LIKE '%罗技%'
	
-- 正则表达式 
	-- 查找product_name字段中包含字母的所有数据
	SELECT * FROM product WHERE  productName  REGEXP'[a-zA-Z]'
	
-- 排序  ORDER BY    DESC   ASC 
	-- 选择id,货品名称,分类编号,零售价并且按零售价降序排序
    SELECT id,productName,dir_id,salePrice FROM product ORDER BY salePrice  DESC  -- DESC 降序
    SELECT id,productName,dir_id,salePrice FROM product ORDER BY salePrice   -- ORDER BY 默认 是 ASC
     
	-- 选择id,货品名称,分类编号,零售价先按分类编号排序,再按零售价排序 
    SELECT id,productName,dir_id,salePrice FROM product ORDER BY dir_id, salePrice

	-- 查询M系列并按照批发价排序(加上别名)
	SELECT  *, salePrice*cutoff pfj FROM product WHERE productName like '%M%' ORDER BY pfj
     SQL 的执行顺序  (面试题)    
     from-> where -> SELECT -> ORDER BY
	 
	-- 查询分类为2并按照批发价排序(加上别名)      
	SELECT  *, salePrice*cutoff pfj FROM product WHERE dir_id=2 ORDER BY  pfj
     
--  分页查询 LIMIT  (重点 慢慢来掌握)
    逻辑分页-- 一次性全部查出来 ,然后把数据交给浏览器,让浏览器自己去分页
    SELECT * from product
    物理分页-- 推荐   不一次查询完   LIMIT 
	SELECT * FROM product limit ?,?  --  第一个?代表从哪一个开始查,第二个?代表查询多少条
    SELECT * FROM product limit 0,5  --  第一页
    SELECT * FROM product limit 5,5  --  第二页
--------------------------------------------------------------
   每页展示五条数据
   10,5        (1-1)*5=0
   25,5        (2-1)*5=5
   310,5       (3-1)*5=10
   4    15,5       (4-1)*5=15
 ................. (n-1)*5

-- 聚集函数
	-- 查询所有商品平均零售价
	SELECT AVG(salePrice) FROM product;
	-- 查询商品总记录数(注意在Java中必须使用long接收)
	SELECT COUNT(1) FROM product; -- 统计
	-- 查询分类为2的商品总数
	SELECT COUNT(1) FROM product WHERE dir_id =2
	-- 查询商品的最小零售价,最高零售价,以及所有商品零售价总和
	SELECT MIN(salePrice), MAX(salePrice),SUM(salePrice) FROM product;

-- 分组查询 GROUP BY  (稍难的)
	-- 查询每个商品分类编号和每个商品分类各自的平均零售价
	SELECT AVG(salePrice) FROM product  GROUP BY dir_id
	-- 查询每个商品分类编号和每个商品分类各自的商品总数。
	SELECT  count(*),dir_id  FROM product  GROUP BY dir_id
	-- 查询每个商品分类编号和每个商品分类中零售价大于100的商品总数:
	SELECT  count(*),dir_id FROM product WHERE salePrice>100 GROUP BY dir_id 
	-- 查询零售价总和大于1800的商品分类编号以及总零售价和:
	SELECT   sum(salePrice) ,dir_id FROM product  GROUP BY dir_id HAVING sum(salePrice)>1800
	-- 分组前的条件用where,分组后的条件用having

-- 存储引擎
   MyISAM  不支持事务  表锁
   InnoDB   支持事务   行锁
   memory  不支持事务  表锁    不入库
  对事务要求高我们用InnoDB,对事务要求不高我们用MyISAM,对事务要求不高 且查询修改极其频繁 且数据不用入库(重启数据库数据就消失)我们用memory

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

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

相关文章

4K-Resolution Photo Exposure Correction at 125 FPS with ~8K Parameters

MSLTNet开源 | 4K分辨率125FPS8K的参数量&#xff0c;怎养才可以拒绝这样的模型呢&#xff1f; 错误的曝光照片的校正已经被广泛使用深度卷积神经网络或Transformer进行广泛修正。尽管这些方法具有令人鼓舞的表现&#xff0c;但它们通常在高分辨率照片上具有大量的参数数量和沉…

Linux系统下Nginx的安装步骤

目录 Nginx简介Nginx的作用Nginx的安装方法方法一方法二方法三 本文主要介绍在Linux系统下&#xff0c;三种常见Nginx安装方法。 Nginx简介 Nginx是一个高性能的HTTP和反向代理服务器&#xff0c;也可以作为邮件代理服务器和通用的TCP/UDP代理服务器。它最初由Igor Sysoev创建…

JVM之垃圾回收与算法(四)

垃圾回收与算法 1.如何确定垃圾 1.1. 引用计数法 在 Java 中&#xff0c;引用和对象是有关联的。如果要操作对象则必须用引用进行。因此&#xff0c;很显然一个简单的办法是通过引用计数来判断一个对象是否可以回收。简单说&#xff0c;即一个对象如果没有任何与之关联的引用…

GPIO的使用--点亮外接小灯泡--开关控制

目录 一、确定引脚接线模式 接线时注意以下几点&#xff1a; 二、外接小灯泡引脚连接(以F12引脚为例) 1.正极接GPIOF3.3v电压引脚、负极接F12 2.正极接GPIOF3.3v电压引脚、负极接F12 三、问题检查 一、确定引脚接线模式 小灯泡有两级&#xff1a;正极、负极&#xff0c;…

春秋云镜:CVE-2022-28512

靶标介绍&#xff1a; Fantastic Blog (CMS)是一个绝对出色的博客/文章网络内容管理系统。它使您可以轻松地管理您的网站或博客&#xff0c;它为您提供了广泛的功能来定制您的博客以满足您的需求。它具有强大的功能&#xff0c;您无需接触任何代码即可启动并运行您的博客。 该…

决策树 算法原理

决策树 算法原理 决策树的原理 决策树: 从训练数据中学习得出一个树状结构的模型 决策树属于判别模型 决策树是一种树状结构&#xff0c;通过做出一系列决策 (选择) 来对数据进行划分&#xff0c;这类似于针对一系列问题进行选择。 决策树的决策过程就是从根节点开始&#…

JDK安装太麻烦?一篇文章搞定

JDK是 Java 语言的软件开发工具包&#xff0c;主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心&#xff0c;它包含了JAVA的运行环境&#xff08;JVMJava系统类库&#xff09;和JAVA工具。 JDK包含的基本组件包括&#xff1a; javac – 编译器&#xf…

资深老鸟整理,高级测试工程师应具备的能力...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、业务熟悉 熟悉…

JVM:双亲委派(未完结)

类加载 定义 一个java文件从编写代码到最终运行&#xff0c;必须要经历编译和类加载的过程&#xff0c;如下图&#xff08;图源自b站视频up主“跟着Mic学架构”&#xff09;。 编译就是把.java文件变成.class文件。类加载就是把.class文件加载到JVM内存中&#xff0c;得到一…

Android Framework 电池提醒相关Dialog熄屏消失的问题

记录一下花了三四天干一天就能完成的需求的傻事。 说在前头&#xff0c;这篇文章记录了电池提醒dialog相关&#xff0c;弹出dialog且熄屏再亮屏dialog不会消失的代码&#xff0c;这篇废话比较多&#xff0c;看正常代码直接跳到代码3。 故事背景 需求要求添加非法电池的弹窗&a…

继承 多态 拆箱装箱 128陷阱 枚举类

继承 在java里一个类只能继承一个类&#xff0c;但可以被多个类继承&#xff1b;c里一个类可以继承多个类&#xff1b; 子类可以使用父类的方法&#xff1b; 在java中&#xff0c;Object是所有类的父类&#xff1b; equals方法比较的是对象是否指向同一个地方&#xff0c;这个方…

【VTKWidgetRepresentation】第二期 vtkHandleRepresentation

很高兴在雪易的CSDN遇见你 &#xff0c;给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文系统分享vtkHandleRepresentation及其子类&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会继续努力分享&#xff0c;一起进步&am…

外包干了2个月,技术倒退2年。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;20年通过校招进入深圳某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年国庆&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

大家口口声声谈私域,到底是什么?

大家口口声声说的私域到底是什么&#xff1f; 私域不是流量&#xff0c;是留量。 那首先得知道私域和私域留量的概念。 私域是指企业或个人在自有平台上建立的用户群体和资源&#xff0c;如自己的网站、APP、微信公众号、微博账号等。这些用户群体和资源不受外部平台的控制和限…

PyQt6 QListWidget列表控件

​锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计35条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话…

不会代码(零基础)学语音开发(跟我一起开始吧)

这款语音开发板&#xff0c;性价比非常高&#xff0c;集成了多种外设&#xff0c;包括180度数码舵机、双直流电机、双继电器、电位器、红外寻迹/接近传感器等等语音开发能用到的外部设备&#xff0c;构建了最为完善的语音开发环境。这样我们通过一个小小的开发板&#xff0c;就…

KNN算法实战-健康医疗

健康医疗 算法建模 knn 算法建模构建微观数据和疾病之间的关系knn 调整超参数&#xff0c;准确率提升数据归一化、标准化&#xff0c;提升更加明显 算法实战 导入包 import numpy as np import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklea…

Python 潮流周刊#29:Rust 会比 Python 慢?!

△请给“Python猫”加星标 &#xff0c;以免错过文章推送 你好&#xff0c;我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容&#xff0c;大部分为英文。本周刊开源&#xff0c;欢迎投稿[1]。另有电报频道[2]作为副刊&#xff0c;补充发布更加丰富的资讯。 &#x1f43…

sagment-anything官方代码使用详解

文章目录 一. sagment-anything官方例程说明1. 结果显示函数说明2. SamAutomaticMaskGenerator对象(1) SamAutomaticMaskGenerator初始化参数 3. SamPredictor对象(1) 初始化参数(2) set_image()(3) predict() 二. SamPredictor流程说明1. 导入所需要的库2. 读取图像3. 加载模型…

QT之QString

QT之QString 添加容器 点击栅格布局 添加容器&#xff0c;进行栅格布局 布局总结&#xff1a;每一个模块放在一个Group中&#xff0c;排放完之后&#xff0c;进行栅格布局。多个Group进行并排时&#xff0c;先将各个模块进行栅格布局&#xff0c;然后都选中进行垂直布…