首页 > 数据库 >MySQL学习笔记

MySQL学习笔记

时间:2024-10-22 21:24:13浏览次数:1  
标签:-- 笔记 查询 学习 索引 MySQL WHERE Id SELECT

目录

基础篇:

通用语法:

1.SQL语句以分号结尾 [^1]
2.MySQL数据库的SQL语句不区分大小写
3.单行注释:-- 或 # ;多行注释:/* */

基础操作:

DDL-数据库操作:

基本指令:

指令 作用
SHOW DATABASES 查询所有数据库
SELECT DATABASE() 查询当前数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则] [^2] 创建指定数据库
DROP DATABASE [IF EXISTS] 数据库名 删除指定数据库
USE 数据库名 切换到指定数据库
SHOW TABLES 查询当前数据库中所有表
DESC 表名 查询表结构
SHOW CREATE TABLE 表名 查询指定表的建表语句
-- 表结构创建
CREATE TABLE 表名
(
    字段1 字段1类型[COMMENT 字段1注释],
    字段2 字段2类型[COMMENT 字段2注释],
    字段3 字段3类型[COMMENT 字段3注释],   
    ...    
    字段4 字段4类型[COMMENT 字段4注释]
)[COMMENT 表注释];
-- []中内容可忽略

数据类型:

数值类型:
类型 (无符号UNSIGNED)范围 描述
TINYINT [0,255] 极短整数值
SMALLINT [0,65535] 短整数值
MEDIUMINT [0,216-1] 整数值
INT [0,232-1] 整数值
BIGINT [0,264-1] 长整数值
FLOAT - 单精度浮点型
DOUBLE - 双精度浮点型
DECIMAL 取决于M(精度)和D(标度) 小数值(精确定点数)
字符串类型:
类型 描述
CHAR 定长字符串
VARCHAR 变长字符串
TINYBLOB 不超于255字符的二进制数据
TINYTEXT 短文本字符串
BLOB 二进制形式的长文本数据
TEXT 长文本数据
MEDIUMBLOB 二进制形式的中等长文本数据
MEDIUMTEXT 中等长文本数据
LONGBLOB 二进制形式的极大文本数据
LONGTEXT 极大文本数据
日期时间类型:
类型 格式 描述
DATE YYYY-MM-DD 日期值
TIME HH:MM:SS 时间值或持续时间
YEAR YYYY 年份值
DATETIME YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP YYYY-MM-DD HH:MM:SS 混合日期和时间值,时间戳
CREATE TABLE Emp
(
    Id INT COMMENT '编号',
    WorkNum VARCHAR(10) COMMENT '工号',
    Name VARCHAR(10) COMMENT '姓名',
    Gender CHAR(1) COMMENT '性别',
    Age TINYINT UNSIGNED COMMENT '年龄',
    Idcard CHAR(18) COMMENT '身份证号',   
    EntryDate DATE COMMENT '入职时间' 
) COMMENT '员工表';

表结构修改:

指令 作用
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束] 添加字段
ALTER TABLE 表名 MODIFY 字段名 数据类型(长度) 修改字段数据类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束] 修改字段名与字段类型
ALTER TABLE 表名 DROP 字段名 删除字段
ALTER TABLE 表名 RENAME TO 新表名 修改表名
DROP TABLE [IF EXISTS] 表名 删除表
TRUNCATE TABLE 表名 格式化表
-- 添加字段
ALTER TABLE Emp ADD NickName VARCHAR(10) COMMENT '昵称';
-- 修改字段
ALTER TABLE Emp CHANGE NickName UserName VARCHAR(30) COMMENT '用户名';

DML-增、删、改操作:

插入操作:

指令 作用
INSERT INTO 表名 (字段1,字段2...) VALUES (值1,值2...) 为指定字段添加数据
INSERT INTO 表名 VALUES (值1,值2...) 为所有字段添加数据
INSERT INTO 表名(字段1,字段2...) VALUES(值1,值2...),(值1,值2...),(值1,值2...)
INSERT INTO 表名 VALUES(值1,值2...),(值1,值2...),(值1,值2...)
为指定字段批量添加数据
为所有字段批量添加数据
-- 指定字段添加数据
INSERT INTO Employee(Id, Name, Gender, EntryDate) VALUES (1,'流苏','男','2024-10-14');
-- 所有字段添加数据
INSERT INTO Employee VALUES (1,'10086','流苏','男',18,'301772','2024-10-14');
-- 指定字段批量添加数据
INSERT INTO Employee(Id, Name, Gender, EntryDate) VALUES (1,'流苏','男','2024-10-14'),(2,'Tassel','男','2024-10-24');
-- 所有字段批量添加数据
INSERT INTO Employee VALUES (1,'10086','流苏','男',18,'301772','2024-10-14'),(2,'10085','Tassel','男',34,'301723','2024-12-14');
# 注意插入数据互不影响,对于字符串类型数据以及日期类型数据需要使用单引号引用

修改、删除操作:

指令 作用
UPDATE 表名 SET 字段1 = 值1,字段2 = 值2,... [WHERE 条件] 修改数据
DELETE FROM 表名 [WHERE 条件] 删除数据
-- 修改数据
UPDATE Employee SET Name = '张无忌',Gender = '女' WHERE Id = 1;
# 无 WHERE 条件,将修改表中所有对应数据
UPDATE Employee SET EntryDate = '2004-10-14';
-- 删除数据
DELETE FROM Employee WHERE Gender = '女';
# 删除表中所有数据
DELETE FROM Employee;

DQL-查询操作:

DQL-编写顺序:

SELECT
	字段列表
FROM
	表名列表
WHERE
	条件列表
GROUP BY
	字段分组列表
HAVING
	分组后条件查询
ORDER BY
	排序字段列表
LIMIT
	分页参数

基础查询:

指令 作用
SELECT 字段1,字段2,字段3... FROM 表名 查询指定字段
SELECT * FROM 表名 查询所有字段
SELECT 字段1 [AS 别名1],字段2 [AS 别名2]... FROM 表名 查询并设置别名
SELECT DISTINCT 字段列表 FROM 表名 对返回数据执行去重操作
-- 查询指定字段
SELECT Name,WorkNum,Age FROM Employee;
-- 查询所有字段
SELECT * FROM Employee;
-- 设置别名
SELECT EntryDate AS '入职日期' FROM Employee;
-- 对返回数据执行去重操作
SELECT DISTINCT EntryDate FROM Employee;

条件查询:

指令 作用
SELECT 字段列表 FROM 表名 WHERE 条件列表 条件查询

image-20240912182010868

-- 条件查询
SELECT * FROM Employee WHERE Age <= 18;
SELECT * FROM Employee WHERE Age != 18;
SELECT * FROM Employee WHERE Age >= 18 && Age <= 40;
SELECT * FROM Employee WHERE Age BETWEEN 18 AND 40;

SELECT * FROM Employee WHERE Idcard IS NULL;
SELECT * FROM Employee WHERE Idcard IS NOT NULL;

SELECT * FROM Employee WHERE Age = 18 OR Age = 20 OR Age = 40;
SELECT * FROM Employee WHERE Age IN(18,20,40);

SELECT * FROM Employee WHERE Name LIKE '__'; # 查询Name长度为2的数据
SELECT * FROM Employee WHERE Name LIKE '%L'; # 查询Name末尾为L的数据

分组查询:

聚合函数:
函数 作用
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和
语法:
指令 作用
SELECT 聚合函数(字段列表) FROM 表名 调用聚合函数统计表信息
SELECT 字段列表 FROM 表名 [WHERE 条件列表] GROUP BY 分组字段名 [HAVING 分组后过滤条件] 分组查询[^ 3]

标签:--,笔记,查询,学习,索引,MySQL,WHERE,Id,SELECT
From: https://www.cnblogs.com/code-yiyi/p/18493757

相关文章

  • 如何实现聚水潭·奇门销售数据与MySQL的高效对接
    聚水潭·奇门数据集成到MySQL的技术案例分享在现代企业的数据管理中,如何高效、准确地实现不同系统之间的数据对接和集成是一个重要的课题。本文将聚焦于一个具体的系统对接案例:将聚水潭·奇门平台上的销售出库单数据集成到MySQL数据库中的BI智选-销售出库表。为了确保数据集成......
  • 10.21学习记录
    注意程序的书写他是步骤而不是描述关系例子判断数值的位数当我们判断大于的时候从高到低判断但当数字很大的时候,ifelse的书写就会无穷无尽那我们怎么样才能摆脱无穷无尽呢?循环 以类似的语句对输入的数字进行运算通过不断/10的操作可以不断从右边划掉数字如352......
  • FreeRTOS学习——临界段代码保护及调度器挂起与恢复及其API函数内部实现详解
    FreeRTOS临界段代码保护及调度器挂起与恢复FreeRTOS临界段代码保护及调度器挂起与恢复临界保护区任务调度器挂起与恢复使用格式特点函数内部实现**vTaskSuspendAll();****==总结==**:xTaskResumeAll();FreeRTOS临界段代码保护及调度器挂起与恢复临界保护区什么......
  • Maven的学习
    Maven安装与配置今天我们来学习一下Maven,Maven就相当于一个管理的工具,原理就是使用一个插件,这个插件由多个jar包构成。在一个公司的项目开发过程中,一个大的项目通常被分为好几个小的模块,由不同的人去完成,但是不同的人在开发的过程中,使用的组件,jar包难免会有不同,所以在整合的时......
  • 程序员修炼之道——从小工到专家读书笔记1
    第一章:注重实效的哲学这一章总结为一句话就是态度决定一切。本章主要强调了专业主义、承担责任、终身学习和实践的重要性。专业程序员应该具备敬业精神,要对工作认真负责,不断提升自己的专业技能。书中第一个重点强调的词就是责任。提出注重实效的程序员对他或她自己的职业生涯负......
  • 【数字化转型到底转了啥?】学习华为HCIP认证后谈谈华为的数字化转型
     背景: 最近正在学习华为HCIP认证相关课程,其中第一讲就是关于企业架构和数字化转型的课程。谈一谈总结和感想,华为的数字化转型,真的就像是一次华丽的蜕变,他们通过数字化转型,把业务都重新梳理了一遍,让效率变得超级高,客户体验也变得超级棒。这种变革,真的让人感受到了数字化转型......
  • 黑马程序员Java进阶学习(三)
    异常Java的异常体系异常的基本处理异常的作用异常是什么?异常是代码在编译或者执行的过程中可能出现的错误。异常的代表是谁?分为几类?Exception,分为两类:编译时异常、运行时异常。编译时异常:没有继承RuntimeExcpetion的异常,编译阶段就会出错。运行时异常:继承自Runtim......
  • Python——脚本实现datax全量同步mysql到hive
    文章目录前言一、展示脚本二、使用准备1、安装python环境2、安装EPEL3、安装脚本执行需要的第三方模块三、脚本使用方法1、配置脚本2、创建.py文件3、执行脚本4、测试生成json文件是否可用前言在我们构建离线数仓时或者迁移数据时,通常选用sqoop和datax等工具进行......
  • 【Elasticsearch】分布式搜索引擎技术学习[上]
    目录一.认识与了解搜索引擎1.介绍2.安装二.初步了解Elasticsearch1.倒排索引2.IK分词器3.基础概念三.Elasticsearch基础操作1.索引库操作1.1.常见映射属性1.2.索引库的·CRUD操作2.文档操作1.1.文档的CRUD操作1.2.批量处理四.ES的Java客户端1.客户端的......
  • 「Day-4 提高笔记-LCA最近公共祖先」
    #include<iostream>usingnamespacestd;constintMAXN=5*1e5+5;structnode{ intto,next;}e[MAXN*2];intf[MAXN][20],dp[MAXN];//f[x][i]表示x的第2^i个节点的编号inth[MAXN*2],tot=0;intn,m,s;voidadd(intx,inty){ e[++tot]={y,h[x]}; h......