Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL | 基础语法介绍

MySQL | 基础语法介绍

作者头像
Java小技巧
发布于 2022-05-23 05:11:17
发布于 2022-05-23 05:11:17
97200
代码可运行
举报
文章被收录于专栏:Java小技巧Java小技巧
运行总次数:0
代码可运行

一、SQL基础

数据定义语言(DDL):对数据库、表、字段的操作

数据操作语言(DML):对数据的操作

数据查询语言(DQL):数据查询

DDL

1、对数据库的操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(1)show databases;显示所有数据库
(2)show database();查询当前数据库
(3)create database [if not exists] 数据库名 [default charset 字符集][collate 排序规则];创建数据库,utf8存储一个字符占3个字节,utf8mb4存储一个字符占4个字节
(4)drop database [if exists] 数据库名;删除数据库
(5)use 数据库名;进入数据库

2、对表和字段的操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(1)show tables;查询当前数据库所有表
(2)desc 表名;查询表结构
(3)show create table 表名;查询指定表的建表语句
(4)CREATE TABLE table_name (
   字段1 字段1类型 [comment 字段1注释],
   字段2 字段2类型 [comment 字段2注释],
   ....
   字段n 字段n类型 [comment 字段n注释]
   )[comment 表注释];建表语句,最后一个字段后面没有逗号
(5)CREATE TABLE new_table_name AS
SELECT column1, column2,...
FROM existing_table_name
WHERE ....; 使用另一个表创建
(6)ALTER TABLE 表名 ADD 字段名 类型 [comment 注释] [约束]; 添加字段
(7)ALTER TABLE 表名 MODIFY 字段名 新数据类型; 修改字段类型
(8)ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型; 修改字段名和字段类型
(9)ALTER TABLE 表名 DROP COLUMN 字段名; 删除字段
(10)ALTER TABLE 表名 RENAME TO 新表名; 修改表名
(11)DROP table [if exists] 表名;删除表
(12)truncate table 表名;删除指定表并重新创建该表

3、数据库备份

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(1)BACKUP DATABASE 数据库名 TO DISK = 'filepath';
(2)BACKUP DATABASE 数据库名 TO DISK = 'filepath' WITH DIFFERENTIAL; 差异备份仅备份自上次完全数据库备份以来已更改的数据库部分

DML

1、添加数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(1)INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); 指定列名和要插入的值
(2)INSERT INTO table_name VALUES (value1, value2, value3, ...); 所有列添加值
(3)INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...),(value1, value2, value3, ...),(value1, value2, value3, ...)...;批量添加
注:插入的时候,字符串和日期类型应该放在引号中

2、修改数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

3、删除数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DELETE FROM table_name WHERE condition;

DQL

1、基本查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(1)SELECT column1 [as 别名1], column2 [as 别名2], ... FROM table_name; as可省略
(2)SELECT DISTINCT column1, column2, ... FROM table_name; 去除重复记录

2、条件查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(1)SELECT column1, column2, ... FROM table_name WHERE condition;
(2)SELECT column1, column2, ... FROM table_name WHERE condition1 AND condition2 AND condition3 ...; 如果第一个条件与第二个条件都为TRUE,则AND运算符显示一条记录
(3)SELECT column1, column2, ... FROM table_name WHERE condition1 OR condition2 OR condition3 ...; 如果第一个条件与第二个条件任何一个条件为TRUE,则OR运算符显示一条记录
(4)SELECT column1, column2, ... FROM table_name WHERE NOT condition; 如果条件前加NOT,则将不显示记录
(5)SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2; BETWEEN运算符是包含的:包括开始值和结束值
(6)SELECT column_name(s) FROM table_name WHERE column_name like value1;
下划线(_)代表单个字符,百分号(%)代表任意个字符

3、聚合函数:作用于某一列数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
count、max、min、avg、sum:null值不参与聚合函数的运算,count(*)代表表中有多少行

4、分组查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(1)select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组过滤条件];
注:where和having的区别:where是分组之前的过滤,不满足where条件则不参与分组,having是分组之后对结果进行过滤,having可以使用聚合函数,where不可以

5、排序查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASC|DESC; 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

6、分页查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(1)select 字段列表 from 表名 limit 起始索引,查询记录数; 第一页数据,起始索引可省略

二、函数

字符串函数、数值函数、日期函数、流程函数

1、字符串函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(1)concat:字符串拼接
(2)lower:将字符串转换为小写
(3)upper:将字符串转换为大写
(4)lpad:左边用另一个字符串填充一个字符串到一定长度
(5)rpad:右边用另一个字符串填充一个字符串到一定长度
(6)trim:去除字符串首尾空格
(7)substring:从字符串中提取子字符串(从任何位置开始)

2、数值函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(1)ceil:向上取整
(2)floor:向下取整
(3)mod:取余
(4)rand():返回0-1内的随机数,包括0,不包括1
(5)round(x,y):求x的四舍五入值,保留y位小数
(6)format:将数字格式化为“#,###,###。##”等格式,舍入到指定的小数位数

3、日期函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(1)curdate();当前日期
(2)curtime();当前时间
(3)now();当前日期+时间
(4)year(date);指定date的年份
(5)month(date);指定date的月份
(6)day(date);指定date的日
(7)date_add(date,interval expr type);一个时间上加上指定的时间
(8)datediff(date1,date2);date1和date2相差多少天

4、流程函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(1)if(value,t,f);如果value为true,则返回t,否则返回f
(2)ifNull(value1,value2);如果value1不为空,返回value1,否则返回value2
(3)case when [val1] then [res1] ... else [default] end;如果val1为true,返回res1,否则返回default默认值
(4)case [expr] when [val1] then [res1] ... else [default] end;如果expr的值等于val1,返回res1,否则返回default默认值

三、约束

SQL约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(1)NOT NULL:约束强制列不接受NULL(2)UNIQUE:约束确保列中的所有值都不同
(3)PRIMARY KEY:约束唯一标识表中的每条记录,主键必须包含UNIQUE值,并且不能包含NULL,一个表只能有一个主键
(4)FOREIGN KEY 是用于将两个表链接在一起的键
(5)CHECK:约束用于限制列中的值范围
(6)DEFAULT:约束用于为列提供默认值
(7)CREATE INDEX index_name ON table_name (column1, column2, ...);用于创建索引
(8)ALTER TABLE table_name DROP INDEX index_name;删除表中的索引
(9)AUTO INCREMENT:在插入表新记录中时自动生成唯一编号

四、多表查询

多表查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(1)INNER JOIN:选择两个表中具有匹配值的记录
(2)SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name; LEFT JOIN关键字返回左表(table1)中的所有记录,以及右表(table2)中的匹配记录。如果没有匹配,则结果从右侧为NULL
(3)RIGHT JOIN:同上相反
(4)SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2; UNION运算符用于组合两个或多个SELECT语句的结果集,每个SELECT语句必须具有相同的列数及顺序,列还必须具有类似的数据类型,union查询结果会去重,union all不会

五、存储过程

存储过程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(1)CREATE PROCEDURE procedure_name [@参数1 参数类型,@参数2 参数类型]
AS
 sql_statement
GO; 
执行存储过程
EXEC procedure_name [参数1值,参数2];

六、存储引擎

存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,不是基于数据库,存储引擎可被称为表类型,默认InnoDB。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show engines;查看都有哪些存储引擎
存储引擎特点
1、InnoDB:支持事务;行级锁;支持外键foreign key约束,保证数据的完整性和正确性
2、MyISAM:不支持事务、不支持外键;支持表锁;不支持行锁;访问速度快(实际中被MongoDB取代)
3、Memory:存储在内存中,受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。默认Hash索引(实际中被Redis取代)

七、索引

帮助mysql高效获取数据的数据结构(有序)。无索引的时候需要进行全表扫描

索引结构:

Mysql的索引是在存储引擎层实现的,不同的存储引擎有不同的结构。常用的Btree索引、B+tree索引和Hash索引。详解:https://blog.csdn.net/weixin_46451496/article/details/105136122

索引分类:

聚集索引、二级索引。聚集索引一般为主键id,id直接对应一行数据;二级索引指向id,需要将id通过聚集索引才可以得到一行数据(此操作称之为回表操作)。

索引语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE [UNIQUE|FULLTEXT] INDEX index_name ON table_name;创建索引,UNIQUE要求该列没有重复数据
SHOW INDEX FROM table_name;查看索引
DROP INDEX index_name ON table_name;删除索引
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java小技巧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【MySQL】MySQL知识总结
随着,应用程序的功能越来越复杂,数据量越来越大,如何管理这些数据就成了一个 大问题。
半生瓜的blog
2023/05/13
7.4K1
【MySQL】MySQL知识总结
Oracle基本语法:操作表结构与表数据
创建表 CREATE TABLE table_name ( column_name datatype,... ); 复制表数据 在建表时复制: create table table_new as select column1,...|* from table_old; 在添加数据时复制: insert into table_new [(column1,...)] select column1,...|* from table_old; 向表中添加字段 alter table table_nam
chenchenchen
2023/01/30
2370
肝通宵写了三万字把SQL数据库的所有命令,函数,运算符讲得明明白白讲解,内容实在丰富,建议收藏+三连好评!
大家可能不习惯SQL大写的习惯,但是真正的规范就是要大写,所以大家要慢慢习惯我用大写的方式讲解。在下面所有的讲解中,我将会以基本语法,案例,联系形式讲解,从而加强对每一个语句的使用和认识。本篇文章是笔者整理了整整一个通宵才写出,希望大家三连好评,谢谢。当然,拥有本篇文章,你将会完全掌握mysql的所有命令使用,不再用去购买或者杂乱学习。本篇内容暂时讲解数据库的筛选部分,因为数据库的最初入门如创建,备份等都有讲过,魔法传送:传送门 该传送门内容有:
全栈程序员站长
2022/08/10
10.1K0
肝通宵写了三万字把SQL数据库的所有命令,函数,运算符讲得明明白白讲解,内容实在丰富,建议收藏+三连好评!
python处理SQLite数据库
数据库非常重要,程序的数据增删改查需要数据库支持。python处理数据库非常简单。而且不同类型的数据库处理逻辑方式大同小异。本文以sqlite数据库为例,介绍一下python操作数据库的方法。
Crayon鑫
2023/10/10
4240
学习MySQL的基础学习步骤——纯理论篇,实操前必看
MySQL是一种流行的开源关系型数据库管理系统,它可以在多种操作系统上运行。下面是MySQL的安装和配置步骤:
红目香薰
2023/10/11
2340
玩转SQLite4:SQLite数据插入与查看
点击插入数据的图标,依次输出几条数据。注意id这一项在点击插入数据时,是自动填充的,这是因为之前在创建表时,对id字段勾选了“自增”。
xxpcb
2021/12/16
1.6K0
玩转SQLite4:SQLite数据插入与查看
第11章_数据处理之增删改
值列表中需要为表的每一个字段指定值,并且值的顺序必须和数据表中字段定义时的顺序相同。
程序员Leo
2023/08/07
2690
第11章_数据处理之增删改
MySQL从入门到实战:解锁数据库的无限可能
在当今数字化时代,数据无疑是企业和组织的核心资产之一。而数据库管理系统则是存储、管理和处理这些数据的关键工具。在众多的数据库管理系统中,MySQL 凭借其卓越的性能、广泛的应用和强大的功能,成为了数据库领域的中流砥柱。
用户11396661
2025/02/26
2490
MySQL学习笔记-基础介绍
支持:CSV、ARCHIVE、BLACKHOLE、MRG_MYISAM、MYISAM、PERFORMANCE_SCHEMA、InnoDB、MEMORY
李市
2023/12/01
3890
MySQL数据库的增删改查
select 查询结果是元组的集合,可用union进行结果的集合操作,相当于把多个查询结果进行连接起来输出
用户11062199
2024/08/28
2660
MySQL基础 — 常用命令
使用select对列进行查询时,不仅可以直接以列的原始值作为结果,而且还可以将列值进行计算后所得值作为查询结果,即select子句可以查询表达式的值,表达式可由列名、常量及算术运算符组成。 查询结果计算列显示“无列名”,一般要给计算列加列标题。 其中:表达式中可以使用的运算符有:加+、减-、乘*、除/、取余%
全栈程序员站长
2022/07/02
2.1K0
MySQL基础 — 常用命令
0 基础MYSQL自学之路
SQL(Structured Query Language)是结构化查询语言的缩写,用于管理和操作关系型数据库。它是一种标准化的语言,通过使用语句描述数据库中数据的定义、操作和控制。
疯狂的KK
2023/06/26
2400
0 基础MYSQL自学之路
sql 语言
静默虚空
2018/01/05
1.3K0
SQL语言的基本语法和数据类型(一)
SQL(Structured Query Language)是一种用于管理关系型数据库的标准化语言。在本文中,我们将介绍SQL语言的基本语法和数据类型,包括SELECT语句、CREATE语句、数据类型等,并提供相应的示例。
玖叁叁
2023/04/11
5580
SQL命令记录
所有 MySQL 命令的列表:注意,所有文本命令必须在一行的开头,并且以分号“;”结束
郭顺发
2023/07/06
3100
MySQL从安装到使用
Columns 列;Indexes 索引;Views 视图;Events 事件;Fields 字段;
慕白
2018/08/03
6860
PostgreSQL基础知识整理
ALTER TABLE用来添加,删除或修改现有表中的列,也可以用来添加和删除现有表上的各种制约因素。语法如下:
Abalone
2022/07/14
3.7K0
【MySQL数据库】详细讲解MySQL的函数和约束作用
由于业务需求变化,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0 (比如1好员工的工号应该是00001)
在下小吉.
2023/09/13
2390
【MySQL数据库】详细讲解MySQL的函数和约束作用
SQL学习笔记(基础部分)
SQL开发,在创建SQL表时要确定每个列要存储的数据类型,每一列都需要一个列名和确定的数据类型 常见数据类型自行查询 一些重要的SQL命令
全栈程序员站长
2022/09/23
9010
【MySQL学习】基础指令全解:构建你的数据库技能
下面的操作都是在windows 的操作,此时MySQL在Windows下不区分大小写,但在Linux下默认是区分大小写的。 SQL通用语法:
IsLand1314
2024/10/15
2240
【MySQL学习】基础指令全解:构建你的数据库技能
相关推荐
【MySQL】MySQL知识总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验