当前位置: 首页 > news >正文

[ MySQL 数据库 ] 环境安装配置和使用

       

目录

一. 数据库(DataBase)

     1.定义:

     2. 常见的数据库产品:

     3. MySQL数据库

        (1). 介绍 :

        (2). cmd命令行方式连接 MySQL

        (3). MySQL的常用命令

二. MySQL数据库 环境安装及配置

三. SQL

      1.定义 : 

      2. DDL

     (1)数据库

     (2)数据表

       1. 字段(列)和记录(行)

       2. 表特征

       3. 数据类型

       4. 创建 删除 修改 表数据

       5. 约束和其他

    3.DML

    4. DQL

(1). 基础查询

(2). 函数处理

        1.单行函数:

a. 字符函数 

b. 逻辑处理

c.  数学函数

d. 日期函数

2.分组函数:

(3). 条件查询

(4). 查询合并

(5). 查询排序

(6). 数量限制


       在程序开发时,为了解决数据存储问题,我们使用专业的数据存储软件(数据库软件)进行存储,

数据库软件专门提供了一种编程语言 来管理数据库中的数据                                                                                                                                                                 

一. 数据库(DataBase)

     1.定义:

     为了方便数据的存储和管理,将数据按照特定的规则存储在磁盘,是一个存储和管理数据的仓库

     2. 常见的数据库产品:

     3. MySQL数据库

         (1). 介绍 :

           MySQL是一个关系型数据库管理系统由瑞典MySQL AB公司开发 , 现被 Oracle公司收购 MySQL数据库服务器具有快速   可靠易于使用的特点 且 使用标准的sql语言 , 并且支持多种操作系统,支持多种语言连接. 具有商业版(收费 受维护)与社区版(免费 不受维护)

        (2). cmd命令行方式连接 MySQL

             登录:mysql [-h127.0.0.1 -P3306](本机可省略) -uroot -p密码

             -h:主机名    -P:端口号    -u:用户名     -p:密码     退出:exit

        (3). MySQL的常用命令

              查看当前所有的数据库:show databases;

              选择指定的库:use 库名

              查看当前的所有表:show tables;

              查看其他库的所有表:show tables from 库名;

              查看mysql版本:    select version()

       

二. MySQL数据库 环境安装及配置

       1. 下载数据库地址

https://dev.mysql.com/downloads/mysql/

       2. 下载到指定目录

           一般下载到 development 

       3. 配置环境变量

           复制mysql安装包下的bin目录地址( D:\development\mysql-8.0.22-winx64\bin )  

   此电脑右击---属性---高级系统设置---环境变量---Path---编辑---新建---粘贴bin目录地址---确定

4. 初始化MySQL

在管理员命令提示符中输入

mysqld  --initialize-insecure

5. 安装MySQL服务

   cmd输入指令:

mysqld install

6. 启动MySQL服务

   cmd输入指令:

net start mysql

7. 为root账号设置密码

   cmd输入指令:

mysql -uroot -p

 注意 : 初次设置 默认密码为空 , 直接回车就行 

   cmd输入指令:

alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

注意 : (1) 此处设置的密码为 root , 可以自愿更改

          (2) 由于在cmd命令行中进行数据库编写不方便,我们可以安装可视化的客户端工具

               (以SQLyog为例,详细的下载流程可以参考其他大佬的博客)

          (3) 如果下载时出现问题,有可能是因为电脑系统中缺少东西,需要下载下面软件  (自行下载)

三. SQL

      1.定义 : 

        结构化查询语言SQL(Structured Query Language)是一种数据库程序设计语言,用于存取数据以及查询更新管理关系数据库系统. 几乎所有关系型数据库都支持SQL , 简单易学,灵活使用可以进行复杂和高级的数据库操作

      2. DDL

      数据(结构)定义语言DDL(Data Definition Language) : 用于创建修改数据库表结构的语言

      常用的语句:create , alter , drop , rename

     (1)数据库

         创建数据库并设置编码格式

         CREATE DATABASE [if not exists] 数据库名 [ CHARSET utf8]

         删除数据库

         DROP DATABASE 数据库名 / [IF EXISTS数据库名];

         修改字符集

         ALTER DATABASE 数据库名 CHARSET gbk;

-- 创建数据库
create database if not exists schooldb charset utf8
-- 删除数据库
drop database schooldb
-- 修改数据库字符编码
alter database schooldb charset utf8
-- 注意:MySQL数据库名字创建后不支持修改
       (2)数据表

         表(table) : 构成关系型数据库的基本元素 , 是由行和列组成 .

        1. 字段(列)和记录(行)

            字段 : 是表里的一列(column),用于保存每条记录的特定信息。

            例如 : 学生表的字段包括  学号, 姓名, 性别, 生日 , 电话 , 身高, 注册时间等

            记录 : 是表里的一行(row)数据 

       2. 表特征

          表名----表中的字段(列)----字段的数据类型和长度----约束

       3. 数据类型

  4. 创建 删除 修改 表数据
-- 创建数据表student(表名)
create table student(
num int,
name varchar(8),
gender char(1),
phone char(11),
birthday date,
height decimal(3,2),
regtime datetime
)-- 删除数据表
drop table student-- 修改数据表名
rename table student to stu
   5. 约束和其他

       约束: 主键约束----唯一约束----非空约束----检查约束----外键约束

       主键约束:  primary key  一个表中只能有一个主键约束 , 不能为空 , 不能重复

       唯一约束:  unique

       非空约束:  not null

       检查约束: 值需要满足设置的条件

       外键约束:

       其他: 

       默认值:  default'男'

       字段注释:  comment'学号'

       自动增长:  auto_increment  (只有整数类型可以自动增长)

-- 创建添加约束的表
create table student(
id int primary key auto_increment ,
num int comment'学号',
name varchar(8) not null,
gender char(1) default'男',
phone char(11) unique not null,
birthday date,
height decimal(3,2) check(height<2.55),
regtime datetime not null
)

   3.DML

       数据操纵语言DMLData Manipulation Language) 常用语句: insert , delete , update

-- DML 数据操纵语言-- insert
-- 方式1: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n);
INSERT INTO student(num,NAME,gender,phone,birthday,height,regtime)VALUE(100,'张三',"男",'152222222','2005-03-05',1.88,NOW())
-- 方式2: INSERT INTO 表名 set 列名1=值1,..列名n=值n;       
INSERT INTO student SET num=101,NAME='李四',gender='女',phone='1522222223',regtime=NOW()  
-- 方式3(批量插入): INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n),(值1,值2…..,值n);
INSERT INTO student(num,NAME,phone,regtime)VALUES(102,'jim','11111',NOW()),(103,'tom','222',NOW()),(104,'jery','3333',NOW())-- delete 
DELETE FROM student WHERE id = 8
DELETE FROM student -- update
UPDATE student SET birthday='2008-8-8',height=1.89  -- 这是没有条件的修改,没有条件会修改表中所有数据
UPDATE student SET birthday='2008-9-8',height=1.79  WHERE id=8 -- 这是有条件的修改 

4. DQL

    DQL(Data Query Language)数据查询语言 , 可以从单个表中查询数据,也可以从多个表中查询

    注意: 查询语句是不会影响数据库中的数据的,查询的结果是临时备份

    基本语法结构 :   selet  要查询的列  from  表名  where  条件   排序  分组  数量限制...

   (1). 基础查询

        查询指定列 所有列 和    设置别名---as

-- 基础查询
SELECT num,NAME,gender FROM  student
-- 条件查询
SELECT num,NAME,gender FROM  student WHERE gender = '男'
-- 查询所有列的数据
SELECT * FROM student WHERE gender = '男'
-- as 别名
SELECT num,NAME AS na FROM student
(2). 函数处理
      1.单行函数:

         函数会对每行查询的数据进行处理  (注意: sql + - * / 只能用作算术运算)  

        a. 字符函数 
-- 字符函数-- length(列名) 返回字节长度,一个中文占3个字节,英文字符一个占一个字节
-- CHAR_LENGTH(列名) 返回字符长度
SELECT NAME,LENGTH(NAME)AS nl,CHAR_LENGTH(NAME)AS nll FROM student-- concat(....)  连接多个字符串
SELECT CONCAT(num,':',NAME)AS NAME FROM student-- UPPER(NAME)转大写 , LOWER(NAME)转小写
SELECT UPPER(NAME),LOWER(NAME) FROM student-- substring(列,开始的位置,截取长度)   注意开始的位置从1开始SELECT SUBSTRING(NAME,1,1)  FROM student-- trim(列) 默认是取出前后的空格
SELECT NAME,CHAR_LENGTH(TRIM(NAME)) FROM student -- TRIM('#' FROM NAME) 去掉前后指定的子串
SELECT TRIM('#' FROM NAME)FROM student -- replace(列,old,new)
SELECT REPLACE(NAME,'i','I')FROM student 
        b. 逻辑处理

         case when 条件 then 条件成立执行 else 条件不成立 end  (注意:可以有多个when)

-- 逻辑处理
-- case when 条件 then 条件成立执行 else 条件不成立 end  (注意:可以有多个when)
SELECT  num,NAME,(CASE WHEN height>=1.80 THEN '高个子' ELSE '非高个子' END)AS heightFROM studentSELECT  num,NAME,(CASE WHEN height>=1.80 THEN '高个子'WHEN height>=1.60 THEN '正常' ELSE '低个子' END)AS heightFROM student-- ifnull(列,'默认值') 检测指定列的值是否为空,如果为空显示默认值
SELECT num,NAME,IFNULL(birthday,'暂未录入信息')AS birthday FROM student-- if(条件,结果1,结果2)
SELECT num,NAME,IF(height>=1.80,'高个子','非高个子')AS height FROM student
      c.  数学函数

          round(数值):四舍五入  返回整数
          ceil(数值):向上取整,返回>=该参数的最小整数
          floor(数值):向下取整,返回<=该参数的最大整数
          truncate(数值,保留小数的位数):截断,小数点后截断到几位 ,不会进行四舍五入
          mod(被除数,除数):取余,被除数为正,则为正;被除数为负,则为负

-- 数学函数
SELECT  num,NAME,ROUND(height),TRUNCATE(height,1) FROM student
     d. 日期函数

        now(): 返回当前系统时间(年月日时分秒)
        curdate(): 返回当前系统日期(年月日)
        date_format(日期列,格式): 将日期转换为指定格式
        datediff(big,small): 返回两个日期相差的天数

-- now():返回当前系统时间(年月日时分秒)
-- curdate():返回当前系统日期(年月日)
SELECT num,NAME,NOW(),CURDATE() FROM student-- date_format(日期列,格式):将日期转换为指定格式
SELECT num,NAME,DATE_FORMAT(birthday,'%Y') FROM student 
SELECT num,NAME FROM student WHERE DATE_FORMAT(birthday,'%Y-%m') = '2005-03'-- datediff(big,small):返回两个日期相差的天数
SELECT num,NAME,DATEDIFF(CURDATE(),birthday) FROM student
select datediff(curdate(),'2025-03-20') from student

  日期格式:

2.分组函数:

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

   多行查询完之后,变为一行结果 . 分组函数一般和group by语句组合使用 , 分组统计

   常用函数 : sum()   avg()   max()   min()   count()

-- sum(列,只能对数值类型求和)
SELECT SUM(height) FROM student-- avg(列) 求平均值
SELECT AVG(height) FROM student-- max(列) 返回该列中最大值  min(列) 返回该列最小值
SELECT MAX(height),MIN(height) FROM student-- count(列) 统计该列总数  值如果为null,不计算
SELECT COUNT(birthday) FROM student-- 如果统计所有的数据,一般用主键列, *
SELECT COUNT(*) FROM student
SELECT COUNT(id) FROM student
 -- 查询出学生中身高最高的学信息
SELECT num,NAME FROM student WHERE height = (SELECT MAX(height) FROM student)-- 查询身高大于平均身高的学生
SELECT num,NAME FROM student WHERE height > (SELECT AVG(height) FROM student)
 (3). 条件查询
1.定义: 使用where,将不满足条件的行过滤掉    结构 : select <结果> from <表名> where <条件>

2.常用方法: 

     a. 比较 : = , !=  , > , < , >= , <=     (between and 两者之间,包含临界值)

     b. 逻辑运算 : and与----or或----- not非

-- and 并且  与
SELECT *  FROM student WHERE gender = '男' AND height>=1.80 
-- or 或
SELECT *  FROM student WHERE gender = '男' OR height>=1.80
SELECT * FROM student WHERE num=101 OR num =103 OR num = 105 SELECT * FROM student WHERE height>=1.70 AND height <=2.0
SELECT * FROM student WHERE height>1.70 AND height <2.0-- 在两个值之间, 包含边界值
SELECT * FROM student WHERE  height BETWEEN 1.70 AND 2.0

    c.模糊查询

      模糊查询  like '张%' 以张开头,向右匹配任意位字符  

-- 模糊查询  like '张%' 以张开头,向右匹配任意位字符
SELECT * FROM student WHERE NAME LIKE '张%'
SELECT * FROM student WHERE NAME LIKE '%丰%'

     in 判断某字段的值是否属于in列表中的某一项

     not in判断某字段的值是否不属于in列表中的某一项

     IS NULL(为空的)

     IS NOT NULL(不为空的)

-- in 在给定的数据集中的
SELECT * FROM student WHERE num IN(101,103,105)
SELECT * FROM student WHERE num=101 OR num =103 OR num = 105 -- not in 不在给定的数据集中的
SELECT * FROM student WHERE num NOT IN(101,103,105)-- is null 为空的
SELECT * FROM student WHERE birthday IS NULL-- is not null 不为空的
SELECT * FROM student WHERE birthday IS NOT NULL
(4). 查询合并

   UNION ,UNION ALL 合并多个查询的结果, 合并时,多条sql列的数量和类型需要一致

-- union 合并时,可以去除多条语句查询出的重复数据
SELECT num,NAME,gender FROM student UNION
SELECT num,NAME,height FROM student WHERE gender = '女'-- UNION ALL 只是简单的合并,不能去除重复数据
SELECT num,NAME,gender FROM student  UNION ALL
SELECT num,NAME,gender FROM student WHERE gender = '女'
(5). 查询排序

      order by 列名 asc(升序) / desc(降序)

-- 排序 order by 列名 asc(升序)/desc(降序)
SELECT * FROM student WHERE num>1 ORDER BY height ASCSELECT * FROM student ORDER BY height ASCSELECT * FROM student ORDER BY regtime DESCSELECT * FROM student ORDER BY height DESC,regtime ASC
(6). 数量限制
-- 数量限制  limit  开始的位置,每次查询的数量  
SELECT * FROM student WHERE num>1 ORDER BY id ASC LIMIT 0,2  -- 第一页SELECT * FROM student WHERE num>1  LIMIT 2,2  -- 第二页SELECT * FROM student  LIMIT 4,2  -- 第三页-- mysql分页公式   limit  (n-1)*每页大小,每页大小

(7)分组查询

    group by 分组的列 , 用哪个列作为分组条件, 会把该列中相同的数据分到一组处理

    where 是对原始表中的数据进行筛选 , 而 HAVING 是对分组后的结果进行筛选  

-- 分组查询
-- 统计男女人数 统计出男生各有多少人
-- group by 分组的列 , 用哪个列作为分组条件, 会把该列中相同的数据分到一组处理SELECT  gender,COUNT(*) FROM student WHERE num>1  GROUP BY gender-- 统计姓名重复的学生  只显示重复的数据-- where 是对原始表中的数据进行筛选-- HAVING 是对分组后的结果进行筛选  SELECT NAME,COUNT(*)AS c FROM student WHERE num>1 GROUP BY NAME HAVING c>1SELECT NAME,COUNT(*)AS c FROM student WHERE num>1 GROUP BY NAME HAVING c=1

http://www.dtcms.com/a/321270.html

相关文章:

  • Rocky Linux 安装 Google Chrome 浏览器
  • (附源码)基于SpringBoot的高校爱心捐助平台的设计与实现
  • USB (Universal Serial Bus,通用串行总线)
  • K次取反后最大化的数组和
  • [案例十] NX二次开发批量替换组件功能(装配环境)
  • 【Open3D】基础操作之三维数据结构的高效组织和管理
  • 【FreeRTOS】任务间通讯3:互斥量- Mutex
  • ctrl+alt+方向键导致屏幕旋转的解决方法
  • 基于双块轻量级神经网络的无人机拍摄的风力涡轮机图像去雾方法
  • No time to train! Training-Free Reference-Based Instance Segmentation之论文阅读
  • 机场风云:AI 云厂商的暗战,广告大战一触即发
  • 【实战】Dify从0到100进阶--中药科普助手(2)
  • 用browse实现菜单功能的方法
  • 快速上手 Ollama:强大的开源语言模型框架
  • Docker的安装使用以及常见的网络问题
  • 数据库恢复技术:保障数据安全的关键
  • DeepSeek辅助编写的带缓存检查的数据库查询缓存系统
  • Odoo 18 → Odoo 19 功能改动对比表
  • 基于Web的交互式坐标系变换矩阵计算工具
  • 时间复杂度计算(以for循环为例)
  • BBH详解:面向大模型的高阶推理评估基准与数据集分析
  • 轻松实现浏览器自动化——AI浏览器自动化框架Stagehand
  • 力扣 hot100 Day69
  • 使用 PicGo 与 GitHub 搭建高效图床,并结合 Local Images Plus 备份原图
  • 杂谈 001 · VScode / Copilot 25.08 更新
  • 供电架构之供电构型分类
  • 浪漫沙迦2|浪漫沙加2 七英雄的复仇 送修改器(Romancing SaGa 2)免安装中文版
  • 机器视觉任务(目标检测、实例分割、姿态估计、多目标跟踪、单目标跟踪、图像分类、单目深度估计)常用算法及公开数据集分享
  • excel 导出
  • 【vue】Vue 重要基础知识清单