Mysql基础 01 数据与sql
文章目录一、基本概念二、mysql的常用命令三、sql规范四、数据类型五、SQL语句一、基本概念数据库(database,DB)存储数据的仓库。数据库管理系统软件(Database Management System,DBMS)是一种操作和管理数据库的大型软件。常见的DBMS有oracle、sql server、Mysql数据库系统(Data Base System,DBS)有软件、数据库和数据管理员组成。关系型数据库Relational Database 是一种把数据组织成二维表类似 Excel 表格来存储和管理的数据库。MySQL、Oracle、SQL Server、PostgreSQL 都属于这一类。关系型数据库把数据放在一张张表Table里每张表由行Row和列Column组成。行一条记录列一个字段表一类数据的集合二、mysql的常用命令1、登录mysql -h 服务器IP -P 端口号 -u 用户名 -p 密码 --prompt 命令提示符 --delimiter 指定分隔符例mysql -uroot -p2、退出quitexit\qCtrl D三、sql规范SQL是专门为数据库而建立的操作命令集现在几乎所有的数据库均支持sql1、SQL语句不区分大小写但字符串常量区分大小写。建议命令大写表名库名小写。2、SQL语句可单行或多行写以分号“;”结尾。3、可用空格和缩进来提高语句的可读性。4、注释单行注释-- (后面要加一个空格)注释内容多行注释/* 注释内容*/5、SQL语句可以折行操作。四、数据类型数值类型日期和时间类型每个时间类型有一个有效值范围和一个零值当指定不合法的MySQL不能表示的值时使用零值。字符串类型注建议字符串用单引号包裹。此外还有一个BIT类型占一个二进制位长度可以用来表示布尔类型。五、SQL语句1、显示当前的日期和时间select now();2、查看所有数据库show databases;注一个数据库相当于一个文件夹而一个文件夹中可以有若干个表。3、创建数据库在磁盘上创建一个对应的文件夹create database [if not exists] db_name [character set xxx]注①写if not exists当创建的数据库已存在也不会报错。②character set xxx表示创建xxx字符集。例create database s3;4、显示警告信息show warnings;5、显示数据库s3的创建信息show create database s36、删除数据库s4drop database [if exists] s4;7、修改数据库字符集为gbk(默认为utf8)alter database s3 character set gbk;8、切换数据库到s4use s4;9、查看当前使用的数据库select database();10、创建表(类似一个excel表)create table tab_name(field1 type [约束条件],field2 type [约束条件],…fieldn type [约束条件])约束primary key (非空且唯一) :能够唯一区分出当前记录的字段称为主键。主键字段必须是数字类型。一张表只有一个主键。uniquenot null 该字段值非空auto_increment 字段的值自增1foreign key 外键约束例CREATETABLEemployee(idTINYINTPRIMARYKEYauto_increment,nameVARCHAR(4),genderTINYINT(1),ageINT,departmentVARCHAR(20),salaryDOUBLE(7,2));注1、VARCHAR(4)表示最多4个字符value超过4个字符会报错。VARCHAR 是变长字符串类型实际占用的存储空间 实际字符数 1~2字节用于记录字符串长度。而CHAR(4)是占用固定 4字符 的空间。2、TINYINT(1)表示1个位宽。TINYINT(1) 无存储限制仅默认客户端会关联布尔语义。通常用 0 表示 FALSE1 表示 TRUE。如果值的位数超过显示宽度如 10 的位数是 2 1客户端仍会完整显示数值。3、DOUBLE(7,2)表示总共7位数字其中2位为小数。在严格模式下整数部分超过7-25位会报错。11、查看当前库下的表名show tables;12、查看employee表结构desc employee; 或 show columns from employee;13、查看表的创建信息show create table employee;14、添加一个表字段例alter table employee add is_married tinyint(1);alter table employee add entry_date date not null;alter table employee add A INT, add B VARCHAR(10);15、删除表字段alter table employee drop A,drop entry_date;16、修改一列类型alter table tab_name modify 列名 类型 [完整性约束条件]firstafter 字段名;其中first表示排字段第一个after表示排某个字段后面。例alter table employee modify age smallint not null default 18 after id;17、修改列名alter table tab_name change [column] 列名 新列名 类型 [完整性约束条件]firstafter 字段名;例alter table employee change department depart varchar(20) after salary;18、修改表名rename table 表名 to 新表名;19、删除表drop table 表名;20、插入一条表记录①insert into tab_name (field1,filed2,…) values (value1,value2,…);②insert into tab_name values (所有字段值);③insert into tab_name set 字段名值;21、插入多条表记录insert into tab_name (field1,filed2,…) values(value1,value2,…),(value3,value4,…);22、修改表记录update tab_name set field1value1,field2value2,…[where 语句];注没有WHERE子句则更新所有的行。例update employee set salarysalary200 where name“xixi”;23、删除表纪录如果不跟where语句则删除整张表中的数据。delete语句只能删除表记录不能删除表结构想要一同删除表记录和表结构用drop。delete语句是逐条删除记录而TRUNCATE也可以删除表中的所有数据它是首先摧毁表再新建表。TRUNCATE删除的数据不能在事务中恢复。delete from tab_name [where …]truncate table tab_name;24、查询表的所有记录SELECT * FROM tab_name;25、查询表的某些字段的所有记录SELECT field1,filed2 … FROM tab_name;26、查询表的所有不重复的记录select [distinct] *|field1field2… from tab_name27、select 也可以使用表达式并且可以使用: 字段 as 别名或者:字段 别名select name as na,age10 from emp;28、select语句使用where子句进行过滤查询。例select name na,age10 as a from emp where age20;如果字段值为null使用 is而不是 。例select * from emp where id3 and gender is null;where字句中可以使用①比较运算符 !②between 80 and 100 值在10到20之间包含边界值例select * from t4 where age between 11 and 12;③in(80,90,100) 值是10或20或30例select * from t4 where age in (11,100);④模糊匹配like ‘xi%’模式串中可以含有%或者_。%表示任意多字符_表示任意一个字符。例如name字段中有唐僧、唐国强两个记录则select * from t4 where name like ‘唐%’;匹配唐僧、唐国强两个记录。select * from t4 where name like ‘唐__’;匹配唐国强一个记录。⑤有多个条件直接可以使用逻辑运算符 and or not例select * from t4 where not name is null and name like ‘唐%’;29、select语句使用Order by 指定排序的列排序的列即可是表中的列名也可以是select 语句后指定的别名。select *|field1,field2… from tab_name order by field [Asc|Desc]Asc 升序、Desc 降序其中asc为默认值。 ORDER BY 子句应位于SELECT语句的结尾。例select name,age as a from t4 order by age;select name,age as a from t4 order by a desc;30、使用正则表达式查询例select * from order_menu where product_name regexp “香蕉$”;31、Mysql在执行sql语句时的执行顺序from where select group by having order by limithaving和where作用相同只是执行顺序不同。分析selectJSasJS成绩fromExamResultwhereJS成绩70;-- 不成功selectJSasJS成绩fromExamResulthavingJS成绩90;-- 成功32、group by 分组查询select * from order_menu group by 4,5;以第4和5列为基准分组相同的合并只显示每组的第一行。也可以写字段名select * from order_menu group by born_date,class;注禁用 ONLY_FULL_GROUP_BY 模式:SETsql_mode;这句命令写在分组查询sql语句前面不然会报错。因为默认是ONLY_FULL_GROUP_BY 模式。在该模式下要求非聚合列要么出现在 GROUP BY 子句中要么是被聚合函数包裹的。33、使用聚合函数例select class,sum(price) from order_menu group by class;count(列名)统计行的个数。注意:count(*)统计所有行而 count(字段)用来统计某一列中非 NULL 的行数。SUM(列名)统计满足条件的行的内容和AVG(列名)会计算列中所有非 NULL 值的平均值Max()、Min()最大、最小值34、加having过滤行select class,sum(price) from order_menu group by class having sum(price)200;35、ifnull(price,0)如果price的值为null则设置为0select class,min(ifnull(price,0)) from order_menu group by class;36、limit显示行数select * from order_menu limit 3; 显示前3行select * from order_menu limit 3,3; 跳过前3行显示接下来的3行。

相关新闻

我开源了一个 Python 工作资料整理工具:自动读取 Word、Excel 并生成 AI 周报

我开源了一个 Python 工作资料整理工具:自动读取 Word、Excel 并生成 AI 周报

工作资料经常分散在 Word、Excel、Markdown 和纯文本文件中。每周整理工作周报时,通常需要先逐个打开文件,再复制内容、归纳重点,最后手动整理成报告,过程比较耗时。 因此我写了一个小型 Python 项目:Work Inbox Agen…

2026/10/13 6:57:54 阅读更多 →
大模型扩展实战:横向、纵向与功能扩展的工程化策略

大模型扩展实战:横向、纵向与功能扩展的工程化策略

1. 模型扩展的上下文与核心挑战1.1 为什么“扩展”是一个持续性的工程命题很多人在第一次接触模型扩展时,会把它理解成一次性的操作——把参数调大、把数据加多、把层数堆深,然后就结束了。但实际做过几个项目之后你会发现,模型扩展更像是一个…

2026/10/13 6:57:54 阅读更多 →
上海酒店游泳池卫生检测-池水、附属空间与报告范围怎样对应

上海酒店游泳池卫生检测-池水、附属空间与报告范围怎样对应

上海酒店游泳池卫生检测的范围,要从实际池体、附属空间和结果项目逐项确认,不能由报告标题包办。主池水结果不自动覆盖小池,空气结果不能替代水质,停用状态也不能在不同设施间直接复制。将稳定编号、位置、采样时间和当日条件连起…

2026/10/13 6:56:54 阅读更多 →

最新新闻

SpringBoot+Vue打造装饰工程管理系统:完整实战解析

SpringBoot+Vue打造装饰工程管理系统:完整实战解析

做装饰工程项目管理的系统,很多老牌软件公司都停留在单体架构时代,界面老旧、流程僵硬,项目经理宁可自己拉Excel表格也不愿意用。而新团队上来就搞微服务分布式,对一家中小型装饰公司来说,根本就是杀鸡用牛刀&#xff…

2026/10/13 7:36:08 阅读更多 →
Dalsa Nano相机C++采集例程:从接口配置到稳定抓帧

Dalsa Nano相机C++采集例程:从接口配置到稳定抓帧

简介:面向机器视觉、自动化检测与工业现场应用的 Dalsa Nano 相机 C 使用例程,以 GigE Vision 千兆网通信协议为基础,完整演示了相机从连接初始化、参数配置到实时图像采集、显示与保存的整个流程。压缩包内含 77 个文件,主体为 C…

2026/10/13 7:36:08 阅读更多 →
Hive多DISTINCT性能优化:用COLLECT_SET替代COUNT(DISTINCT)

Hive多DISTINCT性能优化:用COLLECT_SET替代COUNT(DISTINCT)

1. 项目概述:为什么“多个DISTINCT”会成为Hive SQL里的隐形性能杀手你有没有写过这样的Hive SQL?SELECT dt,COUNT(DISTINCT user_id) AS dau,COUNT(DISTINCT CASE WHEN is_paying 1 THEN user_id END) AS paying_users,COUNT(DISTINCT CASE WHEN chann…

2026/10/13 7:36:08 阅读更多 →
Flutter鸿蒙化适配:floor_generator桥接SQLite的完整实践与踩坑记录

Flutter鸿蒙化适配:floor_generator桥接SQLite的完整实践与踩坑记录

上个月在适配一个跨平台进销存项目到鸿蒙平台时,数据库层成了第一个硬骨头。这个项目的十几个业务模块全部建立在 floor 这个 ORM 框架之上,实体类、DAO 接口、查询条件都是现成的,本来以为 Flutter 能在鸿蒙环境跑起来,floor 也能…

2026/10/13 7:36:08 阅读更多 →
虚拟机 ens33 没有 IP?ifconfig 不显示网卡地址的排查与修复

虚拟机 ens33 没有 IP?ifconfig 不显示网卡地址的排查与修复

刚装好的虚拟机,开机之后敲下 ifconfig ,屏幕上来回翻的输出里只有 lo 和那个让人无语的 ens33 ,连个 IPv4 地址都不给。这个画面我见过太多次,第一次踩坑时还以为是虚拟网卡坏了,把虚拟机删了重建两回&#xff…

2026/10/13 7:36:08 阅读更多 →
E2B沙箱实战:AI智能体代码执行失控防护与排障指南

E2B沙箱实战:AI智能体代码执行失控防护与排障指南

1. 先搞清楚:AI 智能体为什么总能把沙箱跑崩上周有个朋友找我,说他的 AI 智能体项目出事了:Agent 在沙箱里跑了一段“看似无害”的 Python 脚本,结果沙箱彻底失联,连宿主机都差点被拖挂,最后只能重启整台机…

2026/10/13 7:35:07 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →