目录

一. 数据库(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) 如果下载时出现问题,有可能是因为电脑系统中缺少东西,需要下载下面软件  (自行下载)

         (4)如果启动时出现问题,可能是由于MySQL没有启动 按照下列方式启动

三. 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.pswp.cn/diannao/94848.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94848.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/94848.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Numpy科学计算与数据分析:Numpy布尔索引与花式索引实战

Numpy高级索引 学习目标 通过本课程&#xff0c;学员将掌握Numpy中布尔索引和花式索引的使用方法&#xff0c;能够灵活运用这些高级索引技术进行复杂的数据操作和处理。 相关知识点 Numpy高级索引 学习内容 1 Numpy高级索引 1.1 布尔索引 布尔索引是Numpy中一种非常强大…

【Linux】patch补丁的生成与使用方法总结

引言 在 Linux 和开源世界中&#xff0c;patch 是一个极其强大且常用的工具。它允许开发者和系统管理员以增量方式修改文件&#xff0c;特别适用于源代码的更新、错误修复、功能补丁的分发与应用。 目录 引言 一、patch介绍 二、生成补丁文件 三、补丁文件内容解析 四、p…

杂谈 001 · VScode / Copilot 25.08 更新

原文链接https://www.castamerego.com/blog/talk-001 2025.08.08 , VS code 发布八月更新&#xff0c;同一天 Copilot 也更新了 GPT-5, 浅体验一下 VS code 更新 发行说明更新页面内跳转显示 AI 比例页面内跳转 Copilot 更新 对话回溯 checkpoints页面内跳转进度列表页面内…

微软发布Project Ire项目:可自主检测恶意软件的人工智能系统

微软Project Ire项目利用AI自主逆向工程并分类软件性质微软近日公布了Project Ire项目&#xff0c;这是一个能够自主进行逆向工程并分类软件性质的人工智能&#xff08;AI&#xff09;系统。该系统由大型语言模型&#xff08;LLM&#xff09;驱动&#xff0c;通过使用反编译器等…

k8s核心组件——kubelet详解

&#x1f680;Kubernetes 核心组件解析&#xff1a;什么是 Kubelet&#xff1f;它的作用是什么&#xff1f; 在 Kubernetes&#xff08;K8s&#xff09;集群中&#xff0c;Kubelet 是最重要的 Node 组件之一&#xff0c;它负责管理和维护 Pod 的生命周期&#xff0c;确保容器在…

C++ 部署LSTM(.onnx)

0、 背景 在工业自动化控制领域&#xff0c;预测某些变量是否关键。根据工厂的数据&#xff0c;训练好模型之后&#xff0c;将其转我通用的onnx 模型&#xff0c;并实现高效的推理。 模型训练 import numpy as np from para import * from data_utils import MyDataset from da…

深度学习-卷积神经网络CNN-1×1卷积层

1x1卷积核&#xff0c;又称为网中网&#xff08;Network in Network&#xff09;&#xff1a;NIN卷积的本质是有效提取相邻像素间的相关特征&#xff0c;而11的卷积显然没有此作用。它失去了卷积层的特有能力——在高度和宽度维度上&#xff0c;识别相邻元素间相互作用的能力。…

使用 Python 异步爬虫抓取豆瓣电影Top250排行榜

导读 在现代网络爬虫开发中,面对 海量网页数据、慢速响应的网络接口,传统的同步爬虫方式已经不能满足高效抓取需求。本文将手把手带你构建一个 基于 aiohttp + asyncio 的异步爬虫系统,实战目标是抓取豆瓣电影 Top250 排行榜中的电影名称、评分和详情页地址。 目录 导读 …

云原生开发全面解析:从核心理念到实践挑战与解决方案

1. 云原生开发的核心理念与定义 云原生&#xff08;Cloud Native&#xff09;是一种基于云计算环境设计和运行应用程序的方法论&#xff0c;其三大技术支柱为容器化、微服务和声明式API。根据CNCF定义&#xff0c;云原生技术通过标准化接口和自动化管理&#xff0c;使应用具备…

WebForms 实例

WebForms 实例 引言 WebForms 是 ASP.NET 技术中的一种重要技术,它允许开发者以表单的形式创建动态网页。本文将通过具体的实例,深入探讨 WebForms 的基本概念、实现方法以及在实际项目中的应用。 WebForms 简介 WebForms 是一种用于创建动态网页的框架,它允许开发者以类…

Java 之 多态

一、多态 多态故名思义&#xff0c;多种状态。比如Animal 这个类中&#xff0c;eat 方法是 公共的方法&#xff0c;但是当 People&#xff0c;Dog , Cat,继承时&#xff0c;我们知道人要吃的是米饭&#xff0c;狗要吃的是狗粮&#xff0c;猫要吃的是猫粮。所以当不同类型的引用…

文件结构树的├、└、─ 符号

目录一、├、└、─符号的背景二、├、└、─ 符号的含义2.1 ├ 带竖线的分支符号2.2 └不带竖线的分支符号2.3 ─横线符号三、Windows系统中生成目录树一、├、└、─符号的背景 我们在编程中&#xff0c;可能会经常遇到一些特殊符号├、└、─。这并非偶然&#xff0c;二十由…

微软XBOX游戏部门大裁员

近日有报道称&#xff0c;微软正计划对Xbox游戏部门进行另外一次裁员&#xff0c;影响的将是整个团队&#xff0c;而不是特定岗位或者部门&#xff0c;大概10%至20%的Xbox团队成员受到影响&#xff0c;这是微软这次对Xbox业务重组的一部分。 据报道&#xff0c;微软已经开始新…

【关于Java 8 的新特性】

问&#xff1a;“Java 8 有啥新东西&#xff1f;” 你憋了半天&#xff0c;只说出一句&#xff1a;“嗯……有 Lambda 表达式。”别慌&#xff01;Java 8 可不只是“语法糖”那么简单。它是一次真正让 Java 从“老派”走向“现代” 的大升级&#xff01;一、Lambda 表达式&…

《嵌入式数据结构笔记(六):二叉树》

1. ​​树数据结构的基本定义和属性​​树是一种重要的非线性数据结构&#xff0c;用于表示层次关系。​​基本定义​​&#xff1a;树是由 n&#xff08;n ≥ 0&#xff09;个结点组成的有限集合。当 n 0 时&#xff0c;称为空树&#xff1b;当 n > 0 时&#xff0c;树必须…

sqlite的sql语法与技术架构研究

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 参考&#xff1a;参考提示词与豆包AI交互输出内容。 sqlite作为最常用的本地数据库&#xff0c;其支持的sql语法也比较全面&#xff0c;历经了二十多年经久不衰&#xff0c;其技术架构设计也是非常优秀的。 一&#xff1a…

Javascript中的一些常见设计模式

1. 单例模式&#xff08;Singleton Pattern&#xff09; 核心思想 一个类只能有一个实例&#xff0c;并提供一个全局访问点。 场景 全局缓存Vuex / Redux 中的 store浏览器中的 localStorage 管理类 示例 const Singleton (function () {let instance;function createInstance…

2025 年最佳 AI 代理:工具、框架和平台比较

目录 什么是 AI Agents 应用 最佳 AI Agents&#xff1a;综合列表 LangGraph AutoGen CrewAI OpenAI Agents SDK Google Agent Development Kit (ADK) 最佳no-code和open-source AI Agents Dify AutoGPT n8n Rasa BotPress 最佳预构建企业 AI agents Devin AI …

Linux 学习 ------Linux 入门(上)

Linux 是一种自由和开放源代码的类 Unix 操作系统。它诞生于 1991 年&#xff0c;由芬兰程序员林纳斯・托瓦兹&#xff08;Linus Torvalds&#xff09;发起并开发。与 Windows 等闭源操作系统不同&#xff0c;Linux 的源代码是公开的&#xff0c;任何人都可以查看、修改和传播&…

[202403-E]春日

[202403-E]春日 题目背景 春水初至&#xff0c; 文笔亦似花开。 题目描述 坐看万紫千红&#xff0c; 提笔洋洋洒洒&#xff0c; 便成篇文章。 现在给你这篇文章&#xff0c; 这篇文章由若干个单词组成&#xff0c; 没有标点符号&#xff0c; 两两单词之间由一个空格隔开。 为了…