首页 > 数据库 >五天搞定Mysql基础知识-Day05

五天搞定Mysql基础知识-Day05

时间:2024-06-21 14:00:07浏览次数:3  
标签:搞定 abc stu students Day05 索引 str Mysql SELECT

学习目标:

        1、MySQL常用内置函数

        2、了解存储过程

        3、了解视图

        4、了解事务

        5、了解索引

        6、掌握基于命令行的SQL使用

第一章 MySQL内置函数

一、字符串函数

1、拼接字符串 concat(str1, str2...)

例1:把12,34,‘ab’拼接位一个字符串‘1234ab’

select concat(12, 34, 'ab');

2、包含字符个数 length(str)

如果字符串中包含 utf-8 格式的汉字,一个汉字 length 返回 3

例2:计算字符串'abc'的长度

SELECT LENGTH('abc');

例3:计算字符串'我和你'的长度

SELECT LENGTH('我和你');

例4:查询表 students 中 name 长度等于9(三个 UTF-8 格式的汉字)的学生信息

SELECT * FROM students WHERE LENGTH(name) = 9;

3、截取字符串

left(str,len) 返回字符串 str 的左端 len 个字符,中文和英文字母个数 len 一致;

例5:截取‘我和你 abc’的左端三个字符

select LEFT('我和你abc', 3);

right(str,len) 返回字符串 str 的右端 len 个字符,中文和英文字母个数 len 一致;

例6:截取‘我和你 abc’的右端三个字符

select RIGHT('我和你abc', 3);

substring(str,pos,len) 返回字符串 str 的位置 pos起 len 个字符,pos从1开始计数;

例7:截取‘我和你 abc’从第2个字符开始的3个字符

select SUBSTRING('我和你abc', 2,3);

例8:截取 students 表中所有学生的姓

select LEFT(name,1) from students;

练习:

练习1:查询 students 表的card字段,截取出生年月日,显示李白的生日

SELECT SUBSTRING(card,7,8) FROM students WHERE name = '李白';

练习2:查询 students 表的所有学生信息,按照生日从大到小排序(注意:不能用age排序,因为年龄相同的学生生日可能不同)

SELECT * from students ORDER BY SUBSTRING(card,7,8);

4、去除空格

ltrim(str) 返回删除左侧空格的字符串 str;

例1:去除字符串' abc '左侧空格

SELECT LTRIM(' abc ');

rtrim(str) 返回删除右侧空格的字符串 str;

例2:去除字符串' abc '右侧空格

SELECT RTRIM(' abc ');

trim(str) 返回删除两侧空格的字符串 str;

例3:去除字符串' abc '两侧空格

SELECT TRIM(' abc ');

二、数学函数

1、四舍五入值 round(n ,d)

n 表示原数,d表示小数位置,默认为 0

例1:1.653 四舍五入,保留整数位

SELECT ROUND(1.653)

例2:1.653 四舍五入,保留小数点后2位

SELECT ROUND(1.653,2)

例3:查询 students 表中学生的平均年龄,并四舍五入

SELECT ROUND(AVG(age)) from students;

练习:查询 students 表中学生的平均年龄,并从小数点后2位开始四舍五入

SELECT ROUND(AVG(age),2) from students;

2、随机数 rand()

值为 0-1.0 的浮点数

例1:返回一个 0到1.0 的小数

SELECT rand();

小技巧:从学生表中随机抽出一个学生

SELECT * FROM students ORDER BY RAND() LIMIT 1;

三、日期时间函数

1、当前日期 current_date()

例1:返回当前日期

SELECT CURRENT_DATE();

2、当前时间 current_time()

例2:返回当前时间

SELECT CURRENT_time();

3、当前日期和时间 now()

例3:返回当前日期和时间

SELECT now();

第二章 存储过程

一、定义

存储过程 PROCEDURE,也翻译为存储程序,是一条或者多条 SQL 语句的集合

二、创建存储过程

语法:

create procedure 存储过程名称(参数列表)

begin

sql 语句

end

-- 例1:创建存储过程 stu() 查询 students 表所有学生信息

CREATE PROCEDURE stu()

BEGIN

SELECT * FROM students;

END

-- 调用存储过程

CALL stu();

-- 删除存储过程

DROP PROCEDURE stu;

DROP PROCEDURE if EXISTS stu;

第三章 视图

一、定义

1、对于复杂的查询,在多个地方被使用,如果需求发生了改变,需要更改 sql 语句,则需要在多个地方进行修改,维护起来非常麻烦;

2、解决:定义视图;

3、视图本质就是对查询的封装;

二、创建视图

语法:

create view 视图名称 as select 语句;

例1:创建视图,名叫 stu_nan, 查询所有男生信息

CREATE VIEW stu_nan as

SELECT * FROM students WHERE sex = '男';

三、使用视图

SELECT * FROM stu_nan INNER JOIN scores

on stu_nan.studentNo = scores.studentNo;

SELECT * FROM stu_nan WHERE age > 30;

四、删除视图

语法:

drop view 视图名称;

drop view if exists 视图名称;

例1:删除视图 stu_nan

drop VIEW stu_nan;

drop VIEW if EXISTS stu_nan;

第四章 事务

一、为什么要有事务

事务广泛的应用于订单系统、银行系统等多种场景。

二、什么是事务

所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。

事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。

三、事务命令

1、开启事务

命令

说明

begin;

开启事务后执行修改UPDATE或删除DELETE记录语句,变更会写到缓存中,而不会立刻生效

2、回滚事务

命令

说明

rollback;

放弃修改

3、提交事务

命令

说明

commit;

将修改的数据写入实际的表中

没有写 begin 代表没有事务,没有事务的表操作都是实时生效的。

如果只写了begin,没有rollback,也没有commit,系统推出是rollback

例1:开启事务,删除 students 表中 studentNo 为 001 的记录,同时删除 scores 表中 studentNo 为 001 的记录,回滚事务,两个表的删除同时放弃

BEGIN;

DELETE FROM students WHERE studentNo = '001';

DELETE FROM scores WHERE studentNo = '001';

rollback;

SELECT * FROM students;

SELECT * FROM scores;

第五章 索引

一、思考

当表中数据量很大的时候,查找数据会变得很慢;

可以给表建立一个类似书籍中的目录,从而加快数据查询效率,这在数据库中叫索引(index);

二、创建索引

语法:

create index 索引名称 on 表名(字段名称(长度));

如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致;

字段类型如果不是字符串,可以不填写长度部分。

例1:为表 students 的 age 字段创建索引,名为 age_index

CREATE INDEX age_index ON students(age);

例2:为表 students 的 name 字段创建索引,名为 name_index

CREATE INDEX name_index ON students(name(10));

不需要显示的写调用索引的语句,只要where条件后面用到的字段建立了索引,那么系统会自动调用

-- where条件后面的字段,数据库系统会自动查找是否有索引

-- 这里会自动调用age_index

SELECT * FROM students WHERE age = 30;

-- 自动调用name_index

SELECT * FROM students WHERE name = '李白';

-- 不会调用任何索引,因为sex字段没有索引

SELECT* FROM students WHERE sex = '女';

三、查看索引

语法:

show index from 表名;

例1:查看 students 表的所有索引;

SHOW INDEX FROM students;

四、删除索引

语法:

drop index 索引名称 on 表名;

例1:删除 students 表的索引 age_index

DROP INDEX age_index ON students;

五、索引优缺点

1、优点:

索引大大提高了 select 语句的查询速度;

2、缺点:

虽然索引提高了查询速度,同时却会降低更新表的速度,例如对表进行INSERT、UPDATE和DELETE操作,因为更新表时,不仅要保存数据,换药保存索引文件。

3、在实际应用中,执行SELECT语句的次数远远大于执行INSERT、UPDATE和DELETE语句的次数,甚至可以占到80%~90%,所以为表建立索引是必要的。

4、在大量数据插入时,可以先删除索引,再批量插入数据,最后再添加索引,这样就可以提高数据插入的效率。

标签:搞定,abc,stu,students,Day05,索引,str,Mysql,SELECT
From: https://blog.csdn.net/weixin_46095822/article/details/139795377

相关文章

  • MySQL触发器基本结构
    1修改分隔符符号delimiter$$可以修改成$$//都行2创建触发器函数名称createtrigger函数名3什么样的操作触发,操作那个表after:....之后触发before:....之前触发inser:插入被触发uodate:修改被触发delete:删除被触发on表名实例:在users表被添加信息后触发af......
  • JavaWeb——Mysql的启动/登录/卸载
    目录1.Mysql服务器2.Mysql的简单使用2.1启动Mysql:2.2登录Mysql2.3退出3.连接别人的数据库4.卸载mqsql1.Mysql服务器安装了Mysql的计算机都成为Mysql服务器 2.Mysql的简单使用2.1启动Mysql:第一种方法:搜索服务,找到Mysql80,右击打开;第二种方法:输入cmd,右击命......
  • Mysql渗透及提权,命令执行
    查询用户selectuser()查询数据库版本selectversion()查询当前操作系统select@@version_compile_os查询读取数据库路径select@@datadir查询MYSQL安装路径select@@basedir查询plugin的路径select@@plugin_dirMysql-UDF提权https://blog.csdn.net/qq_48201589/......
  • MySQL存储引擎
    一、存储引擎定义存储引擎是MySQL数据库的组件,负责执行实际的数据IO操作(数据的存储和提取)。工作在文件系统之上,数据库的数据会先传输到存储引擎,再按照存储引擎的存储格式保存到文件系统。常用的存储引擎:InnoDB MyISAM二、MyISAM和InnoDBMyISAM1、MyISAM相关特性MyISA......
  • 免费远程关机的方法,下载ToDesk轻松搞定
    当你用完远程控制软件后,想要远程给被控电脑关机,或是到点下班离开公司,但电脑还需要开机完成剩余的工作,那要如何才能身在远处,简单快速的让电脑关机?小社长最近发现ToDesk远控软件就能解决这个难题,远程关机超级方便!这个功能可以让你远程控制结束后直接进行远程关机,在手机电脑上都可......
  • linux上安装MySQL的详细教程
    一、检查是否安装过mysql   rpm-qa|grepmysql(ps:输入命令没内容就是没有安装)二、安装mysql包yum-yinstallmysql57-community-release-el7-10.noarch.rpm出现下边这个就表示成功了三、安装mysql1.首先要进行的工作就是:(该命令作用就是导入MySQL官方的......
  • Mysql慢查询及优化(全网最详细!!!)
    一、定位慢SQL1.首先确认是否开启了慢查询2.设置慢查询的时间限制3.查询慢查询日志可定位具体的慢sql4.相关sql查询5.用Explain分析具体的sql语句6.用Explain字段介绍二、慢SQL优化1.不使用子查询2.读取适当的记录LIMITM,N3.分组统计可以禁止排序4.禁止不必要......
  • [Mysql] 的基础知识和sql 语句.教你速成(上)——逻辑清晰,涵盖完整
    目录前言上篇的内容概况下篇的内容概况 数据库的分类关系型数据库常见的关系型数据库系统非关系型数据库1.键值对数据库(Key-ValueStores)特点:常见的键值对数据库:2.文档数据库(DocumentStores)特点:常见的文档数据库:3.列族数据库(Column-FamilyStores)特点:常......
  • windows安装MySQL
    windows安装MySQL1.下载MySQL的安装包这里以mysql5.7.35为例进行安装演示用安装包放在下面mysql-5.7.35-winx64.zip2.解压安装包到需要安装的路径3.在解压的文件中创建my.ini[mysqld]basedir=MySQL路径\datadir=MySQL路径\data\port=3306skip-grant-tables4.安装My......
  • keepalived实现Mysql的双机热备自动故障切换,看这一篇就够了!
    目录一、什么是双热备份?二、什么是Mysql的双热备份? 三、什么是keepalived?四、实现Mysql的双机热备1、配置双主复制参数2、创建用于复制的MySQL用户3、将A节点的数据拷贝到B节点4、B节点上开启复制五、 安装配置keepalived,完成故障自动切换1、keepalived的安装2、......