MySQL数据库(二)

一 DDL

(一 数据库操作

1 查询-数据库(所有/当前)

1 所有数据库:

show databases;

2 查询当前数据库:

select database();

2 创建-数据库

可以定义数据库的编码方式

create database if not exists ax1;

create database ax2;

3 删除-数据库

drop database ax1;

4 使用-数据库

use ax1;
select database();

切换当前数据库位置并验证是否为当前数据库:

(二 表操作

1 创建-表结构

2 查询-所有表结构名称

show tables;

图形化展示

3 查询-表结构内容

desc myfirst_tb;

图形化展示:

4 查询-建表语句

show create table first_tb;

图形化展示:

5 添加-字段名+数据类型

alter table 表名 add 字段名 类型 注释;

alter table emp add nickname varchar(10) comment '昵称';

图形化展示:

6 修改-字段数据类型

alter table 表名 modify 字段名 新数据类型;

alter table emp modify IDcard char(19);

图形化展示

7 修改-字段+字段数据类型

alter table 表名 change 旧字段名 新字段名 类型 comment 注释;

alter table emp change IDcard idcard char(18) comment '身份证';

图形化展示:

8 删除-字段

alter table 表名 drop 字段名;

alter table emp drop ax2;

图形化展示:

9 修改-表名

alter table 表名 rename to 新表名;

alter table emp rename to newemp;

图形化展示:

10 删除-表

drop table if exists 表名;

drop table if exists 表名;

图形化展示:

11 删除-表中数据

表结构保留TRUNCATE TABLE 只会删除表中的所有数据但不会删除表本身或其结构定义。因此,使用 DESCSHOW COLUMNS FROM myfirst_tbl1; 时,您仍然可以看到表的字段定义。

truncate table 表名;

truncate table myfirst_tb1;

图形化展示:

(三 Datagrip图形化界面激活码使用

网址:

2025 最新Jetbrains激活服务器 全部产品均适用 | ahhhhfs - A姐分享

二 DML-表-增删改数据

1 概念:DML全称Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增删改。

  • 添加数据:(INSERT)
  • 修改数据:(UPDATE)
  • 删除数据:(DELETE)

(一 添加数据

1 给指定字段添加数据

insert into 表名 (字段名1,字段名2...)values (值1,值2...);

2 给全部字段添加数据(逐个)

insert into 表名 values (值1,值2);

3 批量添加数据

insert into 表名(字段名1,字段名2...)values (值1,值2...),(值1,值2)...;

insert into 表名  values(值1,值2...);

# 逐个添加
insert into first_tb (id, name, age, gender) values (2,'超哥',100,'男');insert into first_tb values (3,'小明',100,'女');# 批量添加
insert into first_tb (id, name, age, gender) values (4,'张三',100,'男'),(5,'李四',100,'男'),(6,'刘六',21,'男');insert into first_tb values (7,'王五',32,'男'),(8,'he',12,'男'),(9,'ok',22,'女');# 查看table 数据
select * from first_tb;

注意事项:

  • 插入数据时,指定的字段顺序需要与值的顺序一一对应。
  • 字符串和日期类型应该包含在引号中。
  • 插入的数据大小,应该在字段的规定范围内。

(二 修改数据

1 修改表中的数据

updata 表名 set 字段名1 = 值1 ,字段名2 = 值2 ,.......where 条件;

注意事项

  • 修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
# 将first_tb表当中的id为1的数据项的name修改为it
update first_tb set name = 'it' where id = 1;# 将first_tb表当中的name为it的数据项的id修改为0,name修改为it_er
update first_tb set id = 0,name='it_er' where name = 'it';

2 删除表中的数据

delete from 表名 where 条件;

注意事项

  • 修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
  • 可以使用and or 进行范围判定。
# 删除id为0的数据项
delete from first_tb where id = 0;
# 删除id为3并且姓名为小明的数据项
delete from first_tb where id = 3 and name='小明';# 删除id为3或姓名为小明的数据项
delete from first_tb where id = 3 or name='小明';


三 DQL-表-查数据

1 概念:DQL全称Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。

  • 查询数据关键字:(SELECT) 

 查询数据

(一 基础查询

1 查询多个字段

select 字段1,字段2...from 表名;

# 返回first_tb表中字段name和id字段列表
select name,id from first_tb;

2 查询所有字段

select  * from 表名;

# 返回first_tb表中的所有字段列表
select * from first_tb;

3 设置别名并查询

select 字段1 as 别名1 ,字段2 as 别名2 ...from 表名;

# 设置别名(as可省略)作用是将表中的字段显示给我们时更加容易区分
select id as ID , name as NAME from first_tb;

4 去除重复项

select distinct 字段列表 from 表名;

# 删除id重复项
select distinct id from first_tb;

5 代码实现

insert into user_pro (id, worker, gender, age, idcard, workaddress, entrydate, name)
values (1, '1000000101', '男', 18, '123456789123456781', '安徽合肥', '2000-01-01', '超哥'),(2, '1000000102', '男', 28, '123456789123456782', '安徽阜阳', '2000-11-01', '张三'),(3, '1000000103', '男', 38, '123456789123456783', '安徽六安', '2000-02-01', '李四'),(4, '1000000104', '女', 48, '123456789123456784', '安徽淮北', '2000-03-01', '王五'),(5, '1000000105', '女', 58, '123456789123456785', '安徽亳州', '2000-04-01', '刘六'),(6, '1000000106', '女', 68, '123456789123456786', '安徽马鞍山', '2000-05-01', '周七'),(7, '1000000107', '女', 78, '123456789123456787', '安徽黄山', '2000-01-11', '安八'),(8, '1000000108', '女', 88, '123456789123456788', '安徽滁州', '2000-01-31', '老八'),(9, '1000000109', '男', 98, '123456789123456789', '安徽安庆', '2000-01-21', '李白'),(10, '1000000110', '男', 18, '12345678912345678X', '安徽芜湖', '2000-01-21', '杜甫'),(11, '1000000111', '男', 28, '123456789123456711', '安徽宿州', '2000-01-11', '骆宾王'),(12, '1000000112', '女', 38, '123456789123456722', '安徽蚌埠', '2000-03-01', '齐白石'),(13, '1000000113', '女', 48, '123456789123456733', '安徽宣称', '2000-06-01', '薛之谦'),(14, '1000000114', '女', 58, '123456789123456744', '安徽池州', '2000-08-01', '小白'),(15, '1000000115', '男', 68, '123456789123456755', '安徽铜陵', '2000-05-01', '小黑'),(16, '1000000116', '男', 78, '123456789123456766', '安徽合肥', '2000-03-01', '小蓝'),(17, '1000000117', '男', 88, '123456789123456777', '安徽合肥', '2000-07-01', '小一'),(18, '1000000118', '男', 98, '123456789123456788', '安徽合肥', '2000-08-01', '小儿'),(19, '1000000119', '男', 18, '123456789123456799', '安徽合肥', '2000-09-01', '小三'),(20, '1000000120', '男', 28, '12345678912345679X', '安徽合肥', '2000-10-01', '小四'),(21, '1000000121', '男', 38, '12345678912345677X', '安徽合肥', '2000-01-01', '小五');
update user_pro set workaddress='安徽淮南' where id=16;# 1 查询name age worker字段列表
select name,age,worker from user_pro;
# 2 查询所有字段
select name,id,worker,workaddress,gender,idcard,entrydate,age from user_pro;
select * from user_pro;
# 3 查询所有员工的工作地址(将列表名显示为工作地址 as 可省略)
select workaddress as '工作地址' from user_pro;
# 4 查询员工的工作地址(去重)
select distinct workaddress from user_pro;

(二 条件查询 - where

1 语法

select 字段列表 from 表名 where 条件列表;

2 条件符号

3 代码实现:

# 1 查询年龄等于88的员工信息
select * from users where age = 88;# 2 查询年龄小于30的员工信息
select * from users where age <= 30;# 3 查询没有身份证的员工信息
select * from users where idcard is null ;# 4 查询有身份证的员工信息
select * from users where idcard is not null;# 5 查询年龄不等于88和78的员工信息
select * from users where age != 88 and age != 78;
select * from users where age <> 88 and age <> 78;# 6 查询在28至58之间的员工信息(左右都包括)
select * from users where age between 28 and 58;
select * from users where age >= 28 && age <= 58;# 7 查询性别为女且年龄小于58的员工信息
select * from users where gender = '女' and age < 58;# 8 查询姓名为三个字的员工信息 <--> _ 单个字符  % 任意数个
select * from users where name like '___';# 9 查询年龄为18 28 38 的员工信息
select * from users where age = 18 or age = 28 or age = 38;
select * from users where age in (18,28,38);# 10查询身份证号最后一位是X的员工信息
select * from users where idcard like '%X';
select * from users where idcard like '_________________X'

(三 聚合查询 - count/max/min/sum/avg

1  语法

select 聚合函数 (字段列表)from 表名;

2 聚合函数:将一列数据作为一个整体,进行纵向计算。

  • count:  统计数量
  • max  :最大值
  • min : 最小值
  • avg : 平均值
  • sum : 求和

3 注意事项

  • null不参与计算

4 代码实现:

# 求员工最大年龄
select max(age) from users;# 统计员工数量
select count(name) from users;# 求平均年龄
select sum(age)/count(name) from users;
select avg(age) from users;# 求最小年龄
select min(age) from users;# 统计安徽合肥地区员工的年龄之和
select * from users where workaddress = '安徽合肥';
select sum(age) from users where workaddress = '安徽合肥';

(四 分组查询 - group by ... having

1 语法

select  字段列表 from 表名 where 条件 group by 字段分组名 having 分组后过滤条件 ;

2 where 与 having 的区别

  1. 执行时机不同:where 是分组之前进行过滤,不满足where ,不参与分组;二having 是分组之后对结果进行过滤。
  2. 判断条件不同:where 不能对聚合函数进行判断,而having 可以。

3 注意事项:

  1. where先判断,在进行聚合函数的处理,再进行having 的判断处理。
  2. 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无意义。

4 代码实现:

# 1 根据性别分组,统计男性员工 和 女性员工的数量
select gender,count(*) from users group by gender;# 2 根据性别分组,统计男性员工和女性员工的平均年龄
select gender,avg(age) from users group by gender;# 3 查询年龄小于等于58的员工,根据共组地址分组获取员工数量大于等于2的地址
select workaddress,count(*) from users where age <= 58 group by workaddress having count(*)>=2;

(五 排序查询 - order by

1 语法

select 字段列表 from 表名 order by 字段1  排序方式1 ,字段2  排序方式2;

2 排序方式

  • ASC:升序(默认值)
  • DESC:降序

3 注意事项:

  • 如果是多段字段排序,当地一个字段值相同时,会按第二个字段排序规则。

4 代码实现:

# 1 根据年龄对公司的员工进行升序排序
select * from users order by age ASC ;# 2 根据入职时间对公司员工进行降序排序
select * from users order by entrydate DESC ;# 3 根据年龄对公司员工进行升序排序,年龄相同在按照入职时间进行降序排序
select * from users order by age ASC , entrydate DESC;

(六 分页查询 - limit

1 语法

select 字段列表 from 表名 limit 起始索引,查询次数;

2 注意事项:

  1. 起始索引从0开始,其实索引 = (查询页码 - 1)* 每页显示记录数。
  2. 分页查询时数据库的方言,不同数据库有不同的实现,MySQL是limit。
  3. 如果查询的是第一页的数据,其实索引可以省略,之间简写为limit 10;

3 代码实现:

# 1 从第1个开始展示,展示10个
select * from users limit 0,10;# 2 从第5个开始展示,展示5个
select * from users limit 4,5;

(七 补充

练习:

# 1 查询年龄为28,18,38的员工信息
select * from users where age in (28,18,38);# 2 查询姓名两个字性别为男并且年龄为38至68之间的员工信息
select * from users where age between 38 and 68 && name like '__';# 3 统计员工表中奈年龄小于等于68,男性和女性分别的人数(age统计的是非空,如果想包含null则最好使用*)
select gender,count(age) from users where age <= 68 group by gender;# 4 查询所有年龄小于68岁的员工的姓名和年龄,并对查询结果按照年龄升序排序,如果年龄相同按入职时间降序排序
select name,age from users where age <= 68 order by age ASC ,entrydate DESC ;# 5 查询性别为男,并且年龄在28-68之间的前五个员工信息,对查询结果按年龄升序排序,年龄相同的按入职时间升序排序
select * from users where age between 28 and 68 and gender='男' order by age ASC , entrydate DESC limit 0,5;

编写顺序与执行顺序

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

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

相关文章

步入响应式编程篇(三)之spring webFlux与R2DBC

spring webFlux与R2DBC 前言Spring webFlux与spring mvc的对比spring mvcspring webFluxSSE的demo R2DBC 前言 前面介绍响应式编程主要用到基于Stream API的Reactor API的方式&#xff0c;但如今业务操作需结合springboot&#xff0c;所以spring webFlux使用的更多&#xff0c…

19.Word:小马-校园科技文化节❗【36】

目录 题目​ NO1.2.3 NO4.5.6 NO7.8.9 NO10.11.12索引 题目 NO1.2.3 布局→纸张大小→页边距&#xff1a;上下左右插入→封面&#xff1a;镶边→将文档开头的“黑客技术”文本移入到封面的“标题”控件中&#xff0c;删除其他控件 NO4.5.6 标题→原文原文→标题 正文→手…

redis数据安全与性能保障

数据安全与性能保障 1、持久化1.1 快照持久化1.2 AOF持久化1.3 重写/压缩AOF文件 2、复制2.1 Redis复制的启动过程2.2 主从链 3、处理系统故障3.1 验证快照文件和AOF文件 4、事务4.1 java中的redis事务使用 如有侵权&#xff0c;请联系&#xff5e; 如有错误&#xff0c;也欢迎…

【AI非常道】二零二五年一月(二),AI非常道

经常在社区看到一些非常有启发或者有收获的话语&#xff0c;但是&#xff0c;往往看过就成为过眼云烟&#xff0c;有时再想去找又找不到。索性&#xff0c;今年开始&#xff0c;看到好的言语&#xff0c;就记录下来&#xff0c;一月一发布&#xff0c;亦供大家参考。 有关AI非…

从巫师求雨说起

树上停着一只猫头鹰&#xff1a; 你相信吗&#xff1f;这不是一般的鸟&#xff0c;猫头鹰其实是一个人&#xff0c;它是一个巫师变的。 你不相信&#xff1f;那我问你&#xff0c;为什么猫头鹰和乌鸦一样&#xff0c;那叫声&#xff0c;常常让人瘆得慌&#xff1f;(owl&#x…

【C++】类和对象

面向对象编程 学习过C语言的小伙伴知道&#xff1a;C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 面向过程编程也叫结构化编程。虽然结构化编程的理念提高了程序的清晰度&#xff0c;可靠性&#xff0c…

21.3-启动流程、编码风格(了解) 第21章-FreeRTOS项目实战--基础知识之新建任务、启动流程、编码风格、系统配置 文件组成和编码风格(了解)

21.3-启动流程、编码风格(了解) 启动流程 第一种启动流程(我们就使用这个): 在main函数中将硬件初始化、RTOS系统初始化&#xff0c;同时创建所有任务&#xff0c;再启动RTOS调度器。 第二种启动流程&#xff1a; 在main函数中将硬件初始化、RTOS系统初始化&#xff0c;只…

富文本 tinyMCE Vue2 组件使用简易教程

参考官方教程 TinyMCE Vue.js integration technical reference Vue2 项目需要使用 tinyMCE Vue2 组件(tinymce/tinymce-vue)的第 3 版 安装组件 npm install --save "tinymce/tinymce-vue^3" 编写组件调用 <template><Editorref"editor"v-m…

vue框架技术相关概述以及前端框架整合

vue框架技术概述及前端框架整合 1 node.js 介绍&#xff1a;什么是node.js Node.js就是运行在服务端的JavaScript。 Node.js是一个事件驱动I/O服务端JavaScript环境&#xff0c;基于Google的V8引擎。 作用 1 运行java需要安装JDK&#xff0c;而Node.js是JavaScript的运行环…

【AI】Deepseek本地部署探索,尝试联网搜索

前言 1月下旬&#xff0c;Deepseek-R1横空出世&#xff0c;其依靠堪比GPT-o1的推理能力&#xff0c;训练成本及使用成本均只有gpt几十分之一甚至百分之一的超高性价比&#xff0c;以及它足够“OPEN”的特性直接暴打人工智能的资本行业&#xff0c;本着求实求新的精神&#xff…

DeepSeek介绍

目录 前言 1.介绍一下你自己 2.什么是CUDA CUDA的核心特点&#xff1a; CUDA的工作原理&#xff1a; CUDA的应用场景&#xff1a; CUDA的开发工具&#xff1a; CUDA的局限性&#xff1a; 3.在AI领域&#xff0c;PTX是指什么 1. PTX 的作用 2. PTX 与 AI 的关系 3. …

WGCLOUD服务器资源监控软件使用笔记 - Token is error是什么错误

[wgcloud-agent]2025/01/30 10:41:30 WgcloudAgent.go:90: 主机监控信息上报server开始 [wgcloud-agent]2025/01/30 10:41:30 WgcloudAgent.go:99: 主机监控信息上报server返回信息: {"result":"Token is error"} 这个错误是因为agent配置的wgToken和serv…

OpenAI-Edge-TTS:本地化 OpenAI 兼容的文本转语音 API,免费高效!

文本转语音&#xff08;TTS&#xff09;技术已经成为人工智能领域的重要一环&#xff0c;无论是语音助手、教育内容生成&#xff0c;还是音频文章创作&#xff0c;TTS 工具都能显著提高效率。今天要为大家介绍的是 OpenAI-Edge-TTS&#xff0c;一款基于 Microsoft Edge 在线文本…

Leetcode 131 分割回文串(纯DFS)

131. 分割回文串https://leetcode.cn/problems/palindrome-partitioning/https://leetcode.cn/problems/palindrome-partitioning/ 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 示例 1&#xff1a…

服务器虚拟化技术详解与实战:架构、部署与优化

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 引言 在现代 IT 基础架构中&#xff0c;服务器虚拟化已成为提高资源利用率、降低运维成本、提升系统灵活性的重要手段。通过服务…

记录一次,PyQT的报错,多线程Udp失效,使用工具如netstat来检查端口使用情况。

1.问题 报错Exception in thread Thread-1: Traceback (most recent call last): File "threading.py", line 932, in _bootstrap_inner File "threading.py", line 870, in run File "main.py", line 456, in udp_recv IndexError: list…

【PyTorch】6.张量运算函数:一键开启!PyTorch 张量函数的宝藏工厂

目录 1. 常见运算函数 个人主页&#xff1a;Icomi 专栏地址&#xff1a;PyTorch入门 在深度学习蓬勃发展的当下&#xff0c;PyTorch 是不可或缺的工具。它作为强大的深度学习框架&#xff0c;为构建和训练神经网络提供了高效且灵活的平台。神经网络作为人工智能的核心技术&…

线段树 算法

文章目录 基础知识适用场景小结 题目概述题目详解300.最长递增子序列2407.最长递增子序列 II 基础知识 线段树和树状数组都只是一个工具来的&#xff0c;题目并不会一下子就告诉你这个题目用到线段树和树状数组&#xff0c;这个取决于你想使用的数据结构以及所要优化的方向 线…

JVM_类的加载、链接、初始化、卸载、主动使用、被动使用

①. 说说类加载分几步&#xff1f; ①. 按照Java虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如下7个阶段: 第一过程的加载(loading)也称为装载验证、准备、解析3个部分统称为链接(Linking)在Java中数据类型分为基本数据类型和引用数据…

SpringBoot+Vue的理解(含axios/ajax)-前后端交互前端篇

文章目录 引言SpringBootThymeleafVueSpringBootSpringBootVue&#xff08;前端&#xff09;axios/ajaxVue作用响应式动态绑定单页面应用SPA前端路由 前端路由URL和后端API URL的区别前端路由的数据从哪里来的 Vue和只用三件套axios区别 关于地址栏url和axios请求不一致VueJSPS…