数据库MySQL(1)

news2024/12/27 6:30:15


一、数据库简介

数据库是一类软件,其作用就是更加高效的组织数据,我们要讲的数据库软件是MySQL,MySQL所使用的是sql语句,SQL语句就是专门操作数据库的编程语言

数据库组织形式为:数据库→表→行→列

每一个数据库里面包含若干个表,每个表里包含若干个列

二、数据库操作

1. 显示所有数据库

show databases;

2. 创建数据库

create database [if not exists] 数据库名 [character set utf8mb4][collate utf8mb4_general_ci];

中括号中的内容为可选项:

  • if not exists:加上这句话后,如果创建的数据库名已经有了,就不再创建这个数据库
  • character set utf8mb4:指定字符集为 utf8mb4
  • collate utf8mb4_general_ci:字符集 utf8mb4 的校对规则,ci表示大小写不敏感,这意味着在比较字符串时,大小写字母视为相同

3. 选中数据库

use 数据库名;

4. 删除数据库

drop database [if exists] 数据库名;

当该数据库存在时,将其删除

三、常用数据类型

数据类型大小说明对应Java类型
int4字节Integer
tinyint1字节Byte
smallint2字节

Short

bigint8字节Long
decimal(M,D)M与D的最大值+ 2双精度,M指定位数,D表示小数点后有保留几位BigDecimal
varchar(size)0~65535个字节size的单位为字符,表示字符串的最大字符数String
text0~65535个字节长文本数据,长度自适应,依赖自动扩容String
datetime8字节日期类型java.util.Date
  • decimal(3, 2),12.34→不合法,12.3→不合法,2.34→合法
  • varchar(6),hello→合法,abcdef→合法,abcdefghi→不合法

四、表的操作

每个数据库里都包含若干个表,因此在操作表之前,要先选中数据库

use 数据库名;

1. 查看表的结构

desc 表名;

2. 创建表

注意要先选中数据库,创建表语法示例:

create table 表名 (
    字段 类型,
    字段 类型,
    字段 类型
);

可以使用 comment 增加字段说明

create table t_student (
    id int,
    name varchar(20) comment '姓名',
    password varchar(50) comment '密码',
    age int
);

3. 删除表

drop table [if exists] 表名;

如果指定的表存在,则将其删除

五、表的增删查改

首先创建一个学生表,为后续讲解提供一个示例表

use test_db; //选中数据库 test_db

drop database if exists t_student;
create table t_student (
	id int,
	sn int comment '学号',
	name varchar(20) comment '姓名',
	qq_mail varchar(20) comment 'QQ邮箱'
);

5.1 新增

1. 单行数据+全列插入

insert into t_student values (100, 10000, '唐三藏', '22222');
insert into t_student values (101, 10001, '孙悟空', '11111');

2. 多行数据+指定列插入

INSERT INTO student (id, sn, name) VALUES
	(102, 20001, '曹孟德'),
	(103, 20002, '孙仲谋');

5.2 查询

注意:查询某个表之前,都要先选定数据库
use test_db;

首先创建一个表,以便后续演示

use test_db;

drop table if exists exam_result;
create table exam_result (
	id int,
	name varchar(20),
	chinese decimal(3,1),
	math decimal(3,1),
	english decimal(3,1)
);
-- 插入测试数据
insert into exam_result (id, name, chinese, math, english) values
	(1,'唐三藏', 67, 98, 56),
	(2,'孙悟空', 87.5, 78, 77),
	(3,'猪悟能', 88, 98.5, 90),
	(4,'曹孟德', 82, 84, 67),
	(5,'刘玄德', 55.5, 85, 45),
	(6,'孙权', 70, 73, 78.5),
	(7,'宋公明', 75, 65, 30);

5.2.1 全列查询

select * from 表名;

5.2.2 指定列查询

select 字段, 字段,..., 字段 from 表名

5.2.3 指定查询字段为表达式

-- 表达式不包含字段
select id, name, 10 from exam_result;
-- 表达式包含一个字段
select id, name, english + 10 from exam_result;
-- 表达式包含多个字段
select id, name, chinese + math + english from exam_result;

5.2.4 别名

将查询结果的列指定别名

select id, name, chinese + math + english [as] 总分 from exam_result;

as 可以加也可以不加

5.2.5 去重:distinct

先查询数学成绩:

select math from exam_result;

98重复了,加上distinct:

select distinct math from exam_result;

注意:distinct可以用在一个或多个列上,当用在多个列时,只有这些列的组合完全相同才会进行去重,比如对名字和数学成绩去重,只有名字和数学成绩都相同时才会去重

5.2.6 排序:order by

不加order by 的查询,其返回结果都是未知的;

  • 对NULL数据排序视为比任何数据都小,如果为升序,则排在最前面,如果为降序,则排在最后面
    asc→升序,不加则默认为asc;desc→降序
select name, qq_mail from t_student order by qq_mail;
select name, qq_mail from t_student order by qq_mail desc;

  • 使用表达式及别名排序
select name, chinese + english + math total from exam_result
order by total DESC;

5.2.7 条件查询:where

运算符说明
>,>=,<,<=
=等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=,<>不等于
between a0 and a1如果 a0 <= value <= a1,返回 TRUE(1)
in(option, …)如果是 option 中的任意一个,返回 TRUE(1)
like% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符
is null查询某一列为 NULL 的数据
is not null查询某一列不为 NULL 的数据
AND多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT查询某一列不为...的数据

注意:
1. where 条件可以使用表达式,但不能使用别名
2. and 优先级高于 or,必要时可以使用小括号

  • in
select name, english from exam_result where english in (56, 77, 30, 99);

  • 模糊查询:like
-- % 匹配任意多个(包括 0 个)字符
select name from exam_result where name like '孙%';-- 匹配到孙悟空、孙权
-- _ 匹配严格的一个任意字符
select name from exam_result where name like '孙_';-- 匹配到孙权

5.2.8 分页查询

语法:

-- 起始下标为 0
-- 从 0 开始,筛选 n 条结果
select ... from table_name [where ...] [order by ...] limit n;
-- 从 s 开始,筛选 n 条结果
select ... from table_name [where ...] [order by ...] limit s, n;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
select ... from table_name [where ...] [order by ...] limit n offset s;

按 id 进行分页,每页 3 条记录,分别显示 第 1、2、3 页
 

-- 第 1 页
select id, name, math, english, chinese from exam_result order by id limit 3
offset 0;
-- 第 2 页
select id, name, math, english, chinese from exam_result order by id limit 3
offset 3;
-- 第 3 页,如果结果不足 3 个,不会有影响
select id, name, math, english, chinese from exam_result order by id limit 3
offset 6;

5.3 修改

update 表名 set 字段 = expr [, 字段 = expr ...]
    [where ...] [order by ...] [limit...]

1. 将孙悟空的数学成绩改为80

update exam_result set math = 80 where name = '孙悟空';

2. 将总成绩倒数前三的 3 位同学的数学成绩减 30 分

update exam_result set math = math - 30 
order by chinese + math + english limit 3;

5.4 删除

delete from 表名 [where ...] [order by ...] [limit ...]

1. 删除整个表

delete from exam_result

2. 删除孙悟空的成绩

delete from exam_result where name = '孙悟空';

🙉本篇文章到此结束

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

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

相关文章

启动动效流程梳理(二)

performSurfacePlacementNoTrace() 这一段从performSurfacePlacement()开始讲起&#xff0c;因为在trace中可以看到在SystemServer中&#xff0c;动效会从performSurfacePlacement这个tag点触发。这里的流程就是在窗口状态改变之后&#xff0c;会触发performSurfacePlacement流…

js-000000000000

1、js书写的位置 - 内部 <body> <!-- 习惯把 js 放到 /body 的后面 --> <script> console.log(这是内部 js 的书写位置) alert(内部js) </script> </body> <body><!-- 习惯把 js 放到 /body 的后面 --><script>console.log(这…

深度学习工作:从追求 SoTA 到揭示新现象

TLDR&#xff1a;主要讨论了从追求模型 SoTA 到揭示新现象的转变。通过几个例子&#xff0c;包括ACNet到RepVGG的发展&#xff0c;RIFE插帧、Film插帧&#xff0c;以及OpenAI的近期工作&#xff0c;阐述了这种转变的重要性。 知乎&#xff1a;黄哲威 hzwer链接&#xff1a;http…

USB Hub 检测设备

系列文章目录 xHCI 简单分析 USB Root Hub 分析 USB Hub 检测设备 文章目录 系列文章目录一、引言二、hub_eventshub_port_connect_changeusb_alloc_devusb_set_device_statehub_port_initusb_new_device 一、引言 USB Hub 检测设备 一文中讲到&#xff0c;当有 USB 插入时&…

upload-labs关卡记录13

这里和关卡12非常类似&#xff0c;唯一不同就是12关用到get方法&#xff0c;这里用到post方法。因此对应的截断方式也不一样&#xff0c;依旧是使用我们的bp进行抓包&#xff0c; 然后依旧是在upload后加上shell.php&#xff0c;这里用是为了hex时好区别我们要在哪里更改&#…

鸿蒙UI开发——使用WidthTheme实现局部深浅色

1、场景描述 在实际的应用开发中&#xff0c;我们可能需要在界面中局部应用深色或者浅色的界面样式&#xff0c;与全局的深色、亮色同时生效。场景例如&#xff1a;深/亮色预览。此时&#xff0c;我们可以使用WithTheme能力来达到我们的效果。 2、WithTheme WithTheme组件可…

骑砍2霸主MOD开发(26)-Mono脚本系统

一.游戏启动流程 <1.启动器Launcher 运行TaleWorlds.MountAndBlade.Launcher.exe启动C#程序Program,完成MOD列表页面的加载. public class Program {public static void Main(string[] args){#加载启动器GUI界面ResourceDepot resourceDepot new ResourceDepot();resource…

Gmsh有限元网格剖分(Python)---点、直线、平面的移动

Gmsh有限元网格剖分(Python)—点、直线、平面的移动和旋转 最近在学习有限元的网格剖分算法&#xff0c;主要还是要参考老外的开源Gmsh库进行&#xff0c;写一些博客记录下学习过程&#xff0c;方便以后回忆嘞。 Gmsh的官方英文文档可以参考&#xff1a;gmsh.pdf 但咋就说&a…

代码随想录Day39 198.打家劫舍,213.打家劫舍II,337.打家劫舍 III。

1.打家劫舍 力扣题目链接(opens new window) 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统…

01-linux基础命令

一、linux命令概述 命令 选项 参数命令 &#xff1a;就是命令名&#xff1b;选项&#xff1a;一般以 - 开头 比如&#xff1a;-a -p -r 等扩展命令的功能&#xff1b;参数&#xff1a;描述命令的目标&#xff0c;如我们要打开一个文件的话&#xff0c;参数就是要打开的文件名…

MATLAB符号计算-初步认识符号对象

1.1自顶向下的程序设计方法 【例1-1】列主元Guass消去法解方程组 a[2 -3 5 -1;1 4 2 -3;-2 4 -3 -7;8 0 -2 1]; b[3 7 -1 8]; sLZYguass(a,b) 代码还有问题&#xff0c;x11.1913,x21.1157,x30.8114,x40.0923 学长帮忙修改过&#xff1a; 反思&#xff1a; length()、size(…

支持向量机入门指南:从原理到实践

目录 1 支持向量机的基本概念 1.2 数学表达 2 间隔与支持向量 2.1 几何间隔 2.2 支持向量的概念 2.3 规范化超平面 2.4 支持向量的深入分析 2.4.1 支持向量的特征 2.4.2 支持向量的作用 2.4.3 支持向量的代数表示 2.5 KKT条件 3 最优化问题 3.1 问题的形成 3.2 规…

快速汇总Word表格

示例需求&#xff1a;Word文档中的有多个表格&#xff0c;其中最后一个表格为汇总表格&#xff0c;其他的为数据表格&#xff0c;如下图中左侧所示。 现在需要根据Category1和Category2&#xff0c;在数据表格中查找&#xff0c;如果找到匹配行&#xff0c;那么 为数据表中改…

OSCP课后练习-tcpdump

本篇文章旨在为网络安全渗透测试行业OSCP考证教学。通过阅读本文&#xff0c;读者将能够对tcpdump日志分析关键信息过滤有一定了解 1、下载练习分析文件 wget https://www.offensive-security.com/pwk-online/password_cracking_filtered.pcap2、查看分析文件所有内容 sudo t…

Linux快速入门-Linux的常用命令

Linux的常用命令 1. Linux的终端与工作区1.1 终端概述1.2 切换终端 2. Shell语言解释器2.1 Shell概述 3. 用户登录与身份切换3.1 su 命令3.2 sudo 命令 4. 文件、目录操作命令4.1 pwd 命令4.2 cd 命令4.3 ls 命令4.3.1 ls 指令叠加使用 4.4 mkdir 命令4.5 rmdir 命令4.6 cp 命令…

ASP.NET Web应用程序出现Maximum request length exceeded报错

一、问题描述 在ASP.NET的web应用中&#xff0c;导出数据时出现500 - Internal server error.Maximum request length exceeded。 二、原因分析 这个错误通常出现在Web应用程序中&#xff0c;表示客户端发送的HTTP请求的长度超过了服务器配置的最大请求长度限制。这可能是因为…

【JDBC】使用原生JDBC,数据量很大且内存空间较小的情况下,JavaHeap溢出

文章目录 使用原生JDBC&#xff0c;数据量很大且内存空间较小的情况下&#xff0c;JavaHeap非常容易溢出问题背景java.lang.OutOfMemoryError: Java heap space错误分析解决方案1. **优化数据库查询**2. **调整 JVM 堆内存**3. **批量处理数据**4. **线程池优化** 总结**Result…

uniapp 微信小程序 数据空白展示组件

效果图 html <template><view class"nodata"><view class""><image class"nodataimg":src"$publicfun.locaAndHttp()?localUrl:$publicfun.httpUrlImg(httUrl)"mode"aspectFit"></image>&l…

12.26 学习卷积神经网路(CNN)

完全是基于下面这个博客来进行学习的&#xff0c;感谢&#xff01; ​​【深度学习基础】详解Pytorch搭建CNN卷积神经网络LeNet-5实现手写数字识别_pytorch cnn-CSDN博客 基于深度神经网络DNN实现的手写数字识别&#xff0c;将灰度图像转换后的二维数组展平到一维&#xff0c;…

【团标】《信息工程造价政务信息化项目造价评估方法》(TCQAE11021-2023)-费用标准解读系列33

《信息工程造价政务信息化项目造价评估方法》&#xff08;TCQAE11021-2023&#xff09;是中国电子质量管理协会2023年发布&#xff0c;2023年12月16日开始实施的标准&#xff08;了解更多可直接关注我们咨询&#xff09;。该标准适用于政务信息化项目的造价评估&#xff0c;政务…