MySQL入门教程-函数,索引

4MySQL函数

常用函数

 -- 数学运算SELECT ABS(-8); -- 绝对值SELECT CEIL(5.1); -- 向上取整SELECT CEILING(5.1); -- 向上取整SELECT RAND(); -- 返回0~1之间的一个随机数SELECT SIGN(-10); -- 返回一个数的符号;0返回0;正数返回1;负数返回-1​-- 字符串函数SELECT CHAR_LENGTH('我喜欢你'); -- 字符串长度SELECT CONCAT('我','喜欢','你'); -- 拼接字符串SELECT INSERT('我喜欢',1,1,'超级') -- INSERT(str,pos,len,newstr) 从str的pos位置开始替换为长度为len的newstrSELECT UPPER('zsr'); -- 转大写SELECT LOWER('ZSR'); -- 转小写SELECT INSTR('zsrs','s'); -- 返回第一次出现字串索引的位置SELECT REPLACE('加油就能胜利','加油','坚持'); -- 替换出现的指定字符串SELECT SUBSTR('坚持就是胜利',3,6); -- 返回指定的字符串(源字符串,截取位置,截取长度)SELECT REVERSE('rsz'); -- 反转字符串​-- 时间日期函数SELECT CURRENT_DATE(); -- 获取当前日期SELECT CURDATE(); -- 获取当前日期SELECT now(); -- 获取当前时间SELECT LOCALTIME(); -- 本地时间SELECT SYSDATE(); -- 系统时间​SELECT YEAR(NOW());SELECT MONTH(NOW());SELECT DAY(NOW());SELECT HOUR(NOW());SELECT MINUTE(NOW());SELECT SECOND(NOW());​-- 系统信息SELECT SYSTEM_USER();SELECT USER();SELECT VERSION();

聚合函数

img

 SELECT COUNT(StudentName) FROM student; SELECT COUNT(*) FROM student;SELECT COUNT(1) FROM student;​SELECT SUM(`StudentResult`) FROM result;SELECT AVG(`StudentResult`) FROM result;SELECT MAX(`StudentResult`) FROM result;SELECT MIN(`StudentResult`) FROM result;

数据库级别的MD5加密

MD5信息摘要算法(MD5 Message-Digest Algorithm)

  • MD5由MD4、MD3、MD2改进而来,主要增强算法复杂度和不可逆性

  • MD5破解网站的原理,背后有一个字典,MD5加密后的值,加密前的值

 CREATE TABLE `testMD5`(`id` INT(4) NOT NULL,`name` VARCHAR(20) NOT NULL,`pwd` VARCHAR(50) NOT NULL,PRIMARY KEY(`id`))ENGINE=INNODB DEFAULT CHARSET =utf8;​-- 明文密码INSERT INTO `testMD5` VALUES(1,'zsr','200024'),(2,'gcc','000421'),(3,'bareth','123456');​-- 加密UPDATE `testMD5` SET `pwd`=MD5(pwd) WHE RE id=1;UPDATE `testMD5` SET `pwd`=MD5(pwd); -- 加密全部的密码​-- 插入的时候加密INSERT INTO `testMD5` VALUES(4,'barry',MD5('654321'));​-- 如何校验:将用户传递进来的密码,进行MD5加密,然后对比加密后的值SELECT * FROM `testMD5` WHERE `name`='barry' AND `pwd`=MD5('654321');

5.事务

要么都成功,要么都失败

 SQL执行:A转账给BSQL执行:B收到A的钱

将一组SQL放在一个批次中去执行

  • 例如银行转账:只有A转账成功且B成功到账,该事件才算结束,如果一方不成功,则该事务不成功

事务原则:ACID

事务并发导致的问题

隔离级别

在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别

读未提交:一个事务读取到其他事务未提交的数据;这种隔离级别下,查询不会加锁,一致性最差,会产生脏读、不可重复读、幻读的问题

读已提交:一个事务只能读取到其他事务已经提交的数据;该隔离级别避免了脏读问题的产生,但是不可重复读和幻读的问题仍然存在;

读提交事务隔离级别是大多数流行数据库的默认事务隔离级别,比如 Oracle,但是不是 MySQL 的默认隔离界别

可重复读:事务在执行过程中可以读取到其他事务已提交的新插入的数据,但是不能读取其他事务对数据的修改,也就是说多次读取同一记录的结果相同;该个里级别避免了脏读、不可重复度的问题,但是仍然无法避免幻读的问题

可重复读是MySQL默认的隔离级别

串行化:事务串行化执行,事务只能一个接着一个地执行,、,并且在执行过程中完全看不到其他事务对数据所做的更新;缺点是并发能力差,最严格的事务隔离,完全符合ACID原则,但是对性能影响比较大

img

执行事务的过程

1️⃣ 关闭自动提交

 SET autocommit=0;

2️⃣ 事务开启

 START TRANSACTION -- 标记一个事务的开始,从这个之后的sql都在同一个事务内

3️⃣ 成功则提交,失败则回滚

 -- 提交:持久化(成功)COMMIT-- 回滚:回到原来的样子(失败)ROLLBACK

4️⃣ 事务结束

 SET autocommit=1; -- 开启自动提交

5️⃣ 其他操作

 SAVEPOINT 保存点名; -- 设置一个事务的保存点ROLLBACK TO SAVEPOINT 保存点名; -- 回滚到保存点RELEASE SAVEPOINT 保存点名; -- 撤销保存点

6、索引

索引(`Index`)是帮助MySQL高效获取数据的**数据结构**。

- 提高查询速度
- 确保数据的唯一性
- 可以加速表和表之间的连接 , 实现表与表之间的参照完整性
- 使用分组和排序子句进行数据检索时 , 可以显著减少分组和排序的时间
- 全文检索字段进行搜索优化

索引的分类

 -- 创建学生表studentCREATE TABLE `student`( `StudentNo` INT(4) NOT NULL COMMENT '学号',`LoginPwd` VARCHAR(20) DEFAULT NULL,`StudentName` VARCHAR(20) DEFAULT NULL COMMENT '学生姓名',`Sex` TINYINT(1) DEFAULT NULL COMMENT '性别,取值0或1',`GradeID` INT(11) DEFAULT NULL COMMENT '年级编号',`Phone` VARCHAR(50) NOT NULL COMMENT '联系电话,允许为空,即可选输入',`Adress` VARCHAR(255) NOT NULL COMMENT '地址,允许为空,即可选输入',`BornDate` DATETIME DEFAULT NULL COMMENT '出生时间',`Email` VARCHAR(50) NOT NULL COMMENT '邮箱账号,允许为空,即可选输入',`IdentityCard` VARCHAR(18) DEFAULT NULL COMMENT '身份证号',PRIMARY KEY (`StudentNo`),UNIQUE KEY `IdentityCard` (`IdentityCard`),KEY `Email` (`Email`))ENGINE=MYISAM DEFAULT CHARSET=utf8;

主键索引(PRIMARY KEY)

唯一的标识,主键不可重复,只有一个列作为主键

  • 最常见的索引类型,不允许为空值

  • 确保数据记录的唯一性

  • 确定特定数据记录在数据库中的位置

 -- 创建表的时候指定主键索引CREATE TABLE tableName(......PRIMARY INDEX (columeName))​-- 修改表结构添加主键索引ALTER TABLE tableName ADD PRIMARY INDEX (columnName)

普通索引(KEY / INDEX)

默认的,快速定位特定数据

  • index 和 key 关键字都可以设置常规索引

  • 应加在查询找条件的字段

  • 不宜添加太多常规索引,影响数据的插入,删除和修改操作

 -- 直接创建普通索引CREATE INDEX indexName ON tableName (columnName)​-- 创建表的时候指定普通索引CREATE TABLE tableName(......INDEX [indexName] (columeName))​-- 修改表结构添加普通索引ALTER TABLE tableName ADD INDEX indexName(columnName)

唯一索引(UNIQUE KEY)

它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值

与主键索引的区别:主键索引只能有一个、唯一索引可以有多个

 -- 直接创建唯一索引CREATE UNIQUE INDEX indexName ON tableName(columnName)​-- 创建表的时候指定唯一索引CREATE TABLE tableName(  ......UNIQUE INDEX [indexName] (columeName)  );  ​-- 修改表结构添加唯一索引ALTER TABLE tableName ADD UNIQUE INDEX [indexName] (columnName)

全文索引(FULLText)

快速定位特定数据(百度搜索就是全文索引)

  • 在特定的数据库引擎下才有:MyISAM

  • 只能用于CHAR , VARCHAR , TEXT数据列类型

  • 适合大型数据集

 -- 增加一个全文索引ALTER TABLE `student` ADD FULLTEXT INDEX `StudentName`(`StudentName`);​-- EXPLAIN 分析sql执行的情况EXPLAIN SELECT * FROM student; -- 非全文索引EXPLAIN SELECT * FROM student WHERE MATCH(StudentName) AGAINST('d'); -- 全文索引

索引的使用

索引的创建

  • 在创建表的时候给字段增加索引

 CREATE TABLE 表名 (字段名1 数据类型 [完整性约束条件…],字段名2 数据类型 [完整性约束条件…],[UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY [索引名] (字段名[(长度)] [ASC |DESC]));

创建完毕后,增加索引

 -- 方法一:CREATE在已存在的表上创建索引CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名ON 表名 (字段名[(长度)] [ASC |DESC]) ;​-- 方法二:ALTER TABLE在已存在的表上创建索引ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 (字段名[(长度)] [ASC |DESC]) ;

索引的删除

 -- 删除索引DROP INDEX 索引名 ON 表名;-- 删除主键索引ALTER TABLE 表名 DROP PRIMARY KEY;

显示索引信息

 SHOW INDEX FROM 表名;

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

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

相关文章

推荐系统中的 业务指标 覆盖率

覆盖率(Coverage)是推荐系统评估指标之一,用于衡量推荐系统是否能够覆盖物品空间中的多样性,即是否能够推荐系统中的每个物品都能够被推荐给用户。覆盖率通常是一个百分比,表示被推荐的物品占总物品集合的比例。 覆盖…

设计模式-调停者模式

设计模式专栏 模式介绍模式特点应用场景调停者模式与命令模式的比较代码示例Java实现调停者模式Python实现调停者模式 调停者模式在spring中的应用 模式介绍 调停者模式是一种软件设计模式,主要用于模块间的解耦,通过避免对象之间显式的互相指向&#x…

使用软件解决T490笔记本57摄氏度温度墙的问题

项目场景: 提示:这里简述项目相关背景: 客户使用LenovoT490跑GQRX SDR,接入SDR在5MHz采样率下,机器卡顿。这对于10代i7CPU显然是不正常的。后续发现上网页也卡,卸载杀毒、重装系统、BIOS电源设置、系统最…

#if #ifdef和#ifndef的综合应用。

#include<stdio.h> #define MAX #define MAXIMUM(x,y)(x>y)?x:y #define MINIMUM(x,y) (x>y)?y:x int main() { int a10,b20; #ifdef MAX printf("更大的数字是 %d\n",MAXIMUM(a,b)); #else printf("更小的数字是 %d\n",MINIMUM…

24、Web攻防-通用漏洞SQL注入MYSQL跨库ACCESS偏移

文章目录 一、SQL注入原理   脚本代码在与数据库进行数据通讯时&#xff08;从数据库取出相关数据进行页面显示&#xff09;&#xff0c;使用预定义的SQL查询语句进行数据查询。能通过参数传递自定义值来实现SQL语句的控制&#xff0c;执行恶意的查询操作&#xff0c;例如查询…

【BERT】深入BERT模型2——模型中的重点内容,两个任务

前言 BERT出自论文&#xff1a;《BERT&#xff1a;Pre-training of Deep Bidirectional Transformers for Language Understanding》 2019年 近年来&#xff0c;在自然语言处理领域&#xff0c;BERT模型受到了极为广泛的关注&#xff0c;很多模型中都用到了BERT-base或者是BE…

nginx介绍、配置和使用

nginx介绍、配置和使用 1、nginx介绍2、nginx安装、配置3、nginx使用 1、nginx介绍 Nginx&#xff08;发音为"engine-x"&#xff09;是一个开源的高性能、高可靠性的HTTP服务器和反向代理服务器&#xff0c;也可以用作邮件代理服务器。它最初由Igor Sysoev于2004年创…

vscode文章汇总

Visual Studio Code (VSCode)&#xff0c;快速跳转到指定行的代码 vscode 搜索界面的files to include files to exclude 是什么功能&#xff1f; vscode 添加 ros头文件 VS Code的tasks.json配置文件如何编写? VS Code的launch.json配置文件如何编写? c_cpp_properties.js…

拓展操作(二) nginx 反向代理mysql 和redis操作

让清单成为一种习惯 互联网时代的变革,不再是简单的开发部署上线,持续,正确,安全地把事情做好尤其重要;把事情做好的前提是做一个可量化可执行的清单,让工程师就可以操作的清单而不是专家才能操作: 设定检查点 根据节点执行检查程序操作确认或边读边做 二者选其一不要太…

C++ 类打包LIB方法,创建 C 接口函数方法

起因&#xff1a;建立lib文件时&#xff0c;尽量提供最简单的接口参数及函数。不暴露内部数据结构&#xff01; 解&#xff1a; lib 源文件 Test.h #ifndef __TEST_H__ #define __TEST_H__#ifndef BOOL typedef unsigned char BOOL; #endifclass CTray { public: Ge…

Stable Diffusion WebUI制作光影文字效果

在huggingface上下载control_v1p_sd15_brightness模型。 将模型放在stable-diffusion-webui\extensions\sd-webui-controlnet\models目录下。 SD参数配置 正向提示词&#xff1a; city,Building,tall building,Neon Light, gentle light shines through, anime style, paint…

美团后端Java实习一面面经

说一下AOP&#xff1f; 面向切面编程&#xff0c;通过预编译方式和运行期动态代理实现程序功能的统一维护的技术。可以减少程序中相同代码的编写&#xff0c;简化开发&#xff0c;使得接口更加专注于业务 相关概念 Aspect&#xff08;切面&#xff09;&#xff1a; Aspect 声…

Python中property特性属性是什么

在Java中&#xff0c;通常在类中定义的成员变量为私有变量&#xff0c;在类的实例中不能直接通过对象.属性直接操作&#xff0c;而是要通过getter和setter来操作私有变量。 而在Python中&#xff0c;因为有property这个概念&#xff0c;所以不需要写getter和setter一堆重复的代…

当你遇到这些情况的时候,发版到白了少年头,代码还是不会更新...

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 一、问题描述&#xff1a; 之前遇到过几次这种情况&#xff1a;研发将代码提交之后&#xff0c;通过打包部署&#xff0c;发现部…

关于java循环终止breakcontinue

关于java循环终止break&continue 前面的文章中我们了解了循环的几种类型&#xff0c;本篇文章中我们来了解一下循环的终止&#xff0c;相对前面的文章来说比较易懂&#x1f600; break break我们在选择结构中有了解到&#xff0c;switch中&#xff0c;每个case后都要跟一…

K8S容器的一则故障记录

一、故障现象 XXX反馈说某某业务服务异常&#xff0c;无法启动&#xff0c;需要进行协助排查。经常会接到这样一个需求&#xff0c;一开始无法清楚知道具体什么问题&#xff0c;需要跟一线运维人员详细做沟通&#xff0c;了解故障问题的细节。 根据一线运维人员的反馈&#xff…

听GPT 讲Rust源代码--src/tools(36)

File: rust/src/tools/clippy/clippy_lints/src/loops/empty_loop.rs 在Rust源代码中&#xff0c;empty_loop.rs文件位于src/tools/clippy/clippy_lints/src/loops/目录下&#xff0c;它的作用是实现并提供一个名为EMPTY_LOOP的Lint规则。Clippy是一个Rust的静态分析工具&#…

个人财务管理软件Money Pro mac功能特点

Money Pro mac是一款专为Mac用户设计的个人财务管理软件&#xff0c;具有全面的账户管理、智能的预算规划、强大的投资分析、丰富的报表和图表、安全的数据保护以及易于使用的界面设计等特点。 Money Pro mac功能和特点 全面的账户管理&#xff1a;支持多种账户类型&#xff0…

Spring Boot 基于Redisson实现注解式分布式锁

依赖版本 JDK 17 Spring Boot 3.2.0 Redisson 3.25.0 源码地址&#xff1a;Gitee 导入依赖 <properties><redisson.version>3.25.0</redisson.version> </properties><dependencies><dependency><groupId>org.projectlombok</…

CLion中使用C/C++ Single File Execution插件编译和运行单个文件

在开发C/C程序时&#xff0c;尽管项目通常以组织良好的结构进行管理&#xff0c;但有时我们可能只需要快速测试或运行单个C或C源文件。对于这种情况&#xff0c;JetBrains CLion IDE提供了一个便捷的解决方案——通过安装名为“C/C Single File Execution”的插件来实现对单个源…