当前位置: 首页 > 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.lryc.cn/news/614180.html

相关文章:

  • 零基础深度学习规划路线:从数学公式到AI大模型的系统进阶指南
  • IPC总结
  • 【接口自动化测试】
  • FastAPI的BackgroundTasks如何玩转生产者-消费者模式?
  • 关于 Rust 异步底层实现中 waker 的猜测
  • #C语言——刷题攻略:牛客编程入门训练(六):运算(三)-- 涉及 辗转相除法求最大公约数
  • GPT OSS 双模型上线,百度百舸全面支持快速部署
  • 创建MyBatis-Plus版的后端查询项目
  • SQL Server 2019搭建AlwaysOn高可用集群
  • 模块 PCB 技术在未来通信领域的创新突破方向
  • Cisco 2018-2023年度互联网报告深度解析:数字化转型时代的网络发展趋势与战略洞察
  • kafka 为什么需要分区?分区的引入带来了哪些好处
  • SpringMVC(四)
  • 前后端日期交互方案|前端要传时间戳还是字符串?后端接收时是用Long还是Date还是String?
  • 机器学习 SVM支持向量机
  • 虚幻基础:场景actor与角色的碰撞
  • (0️⃣基础)程序控制语句(初学者)(第3天)
  • Javase-异常
  • Idea配置——build system的选项区别
  • SpringBoot激活指定profile的方式
  • 灰狼算法+四模型对比!GWO-CNN-LSTM-Attention系列四模型多变量时序预测
  • 《汇编语言:基于X86处理器》第12章 浮点数处理与指令编码(2)
  • 准确----SFTP新增用户
  • 三步完成,A100本地vLLM部署gpt-oss,并启动远程可访问api
  • 串口转以太网实战:S7-200驱动大棚温湿度监控、HMI与通风设备
  • Vue框架进阶
  • FPGA实现Aurora 64B66B数据回环传输,基于GTX高速收发器,提供2套工程源码和技术支持
  • 机器学习支持向量机(SVM)
  • 论文精读(二)| 开源软件漏洞感知技术综述
  • 深度学习·MAFT