首页 > 数据库 >MySQL必知必会

MySQL必知必会

时间:2023-10-23 22:12:36浏览次数:53  
标签:语句 必知 MySQL 使用 搜索 必会 全文 select

概述

MySQL是一种数据库管理系统(DBMS),所管理的都是关系型数据库,特点就是以表的形式来存储数据,一个数据库中可以有多张表,表中划分为行和列,可以将一行对应于一个对象,而每一列所表示的就是对象的各个属性。在MySQL中用主键(Primary Key)来唯一的标识某一行,主键是一个列也可以是一组列,它通常还可以用以建立表之间的关联关系。在该书中,主要目的是介绍如何使用SQL语句来实现高效的表处理。

1 检索数据 select

在使用数据库的大部分时间里,使用者都是在做查询操作,select用于从表中获取列并输出出来,它通常搭配多个子句来使用,这里按照子句顺序来列出常用的:

子句 说明 是否必须使用
select 要返回的列或表达式
from 从中检索的表 仅在从表中选择数据时使用
where 行级过滤
group by 分组说明 在按组聚集时使用
having 组级过滤
order by 输出排序顺序
limit 要检索的行数

2 数据过滤

我们通常是不需要返回所有行的,而是根据指定的搜索条件来返回,通常可用的方法是:

  • 使用where子句,IN操作符,NOT操作符
  • 用通配符进行过滤
  • 用正则表达式进行过滤
  • 使用子查询
    此外,还可以对检索出来的数据进行计算,得到一个新的列,称之为计算字段,可以把它理解为计算结果列。

3 联结表

联结操作(Join)是一种用于将多个表的数据组合在一起以进行复杂查询的方法。联结操作通过共享一个或多个共同列(通常是关联列)来合并不同表的数据,以创建新的虚拟表格,供查询使用。
关联列: 联结操作通常需要指定连接两个表的关联列。这些列在两个表中具有相同的值,以便于我们可以同时在俩个表中搜索

4 组合查询

用union来组合多条select语句进行查询

5 全文本索引

通过某一单词或部分文本找匹配项时,可以通过通配符和正则表达式来实现,但是它们需要搜索所有的行,效率比较低,因此引入全文本搜索,在全文本搜索时不需要查看所有行。在使用全文本搜索之前,MySQL创建指定列中各词的一个索引,搜索可以针对这些词来进行,之后在更新行时,索引会随之自动更新。
全文本索引通常搭配match()和against使用,MyISM引擎支持,mysql引擎是不支持的

6 数据插入、更新和删除

插入:insert into 表名(列名) values(每一列的值);
更新:update 表名 set ...
删除:delete

7 表操作

创建、更新、删除、重命名

8 视图

可以理解为一个封装的select语句,目的是重用sql语句而不必关注该sql语句的具体细节

create view 视图名 as ...

9 存储过程

封装多个sql语句,用call和()来调用它,内部可以用IN、OUT设置变量,定义函数调用符内的参数(用@打头来定义)来接收返回值

10 触发器

每个表最多可以定义6个触发器,分别针对delete,insert,update的使用前后

11 事务

事务处理是为了保障一组sql语句执行时不会被打断,它依赖于回退机制和提交机制,当某一操作失败时进行rollback或者不commit

12 引擎

对于MyISAM:

  • 支持全文本搜索,不支持事务处理
    对于Innodb:
  • 支持事务处理但不支持全文本搜索。

标签:语句,必知,MySQL,使用,搜索,必会,全文,select
From: https://www.cnblogs.com/dreamer-q/p/17783606.html

相关文章

  • MYSQL 5.6.40基本操作
    MYSQL5.6.40基本操作基本语句进入数据库(记得输入密码)mysql-uroot-p查看所有库showdatabases;打开库use库名创建库createdatabase库名;删除库dropdatabase库名;表打开库use库名;查看库里的表 showtables;创建表createtablet1(idint,name......
  • mysql
    一、存取数据的演变史1、文本文件使用文本文件存储数据的时候路径不固定数据格式不统一,一旦更换设备就容易出现无法使用的情况。 文件路径不固定:C:\aaa.txtD:\bbb.txtE:\ccc.txt 数据格式不统一:jason|123 jason$123 jason1232、软件开发目录规范规定了数据应该保存......
  • 复习一下mysql
    mysql复习:修改密码setpassowrd="123456";数据库创建:showdatabases;显示数据库createdatabasename;创建dropdatabasesname;删除usename;选中数据库操作表:createtablestudy(`id`int(5),`name`varchar(10));创建表showtables;显示所有表descname;显示表信息altert......
  • mysql的时间函数
    mysql中的时间函数一、EXTRACT(typeFROMdate)EXTRACT(typeFROMdate)表示从日期时间数据“date”中抽取“type”指定的部分。eg:1--按小时统计销售金额和销售数量2SELECTEXTRACT(HOURFROMb.transdate)AS时段,SUM(a.quantity)AS数量,3SUM(a.sale......
  • Mysql新增分区-Python版
    importdatetimeimportsysimportpandasaspdimportpymysqlimportsqlalchemy.engine.urlasengineUrlfromsqlalchemyimportcreate_engineDB_INFO={"host":"IP","port":3306,"username":"ro......
  • mysql 自定义函数的调用及赋值
    函数调用:select函数名(参数);函数返回值赋值:set变量名=(select函数名(参数));select函数名(参数)into变量名;示例:自定义函数内容 selecttest4(5)intoaa;setbb=(selecttest4(10));selectaa,bb; ......
  • mysql log_bin_trust_function_creators
    原文链接:https://blog.csdn.net/ayqy42602/article/details/98770328在本地Mysql中创建函数时,报错如下:thisfunctionhasnoneofdeterministic,nosql,orreadssqldatainitsdeclarationandbinaryloggingisenabled(you*might*wanttousethelesssafelog_bin_......
  • Mysql隔离事务
    1.四大隔离事务 类型一:RU(READ-UNCOMMITTED表示读未提交)可以读取到事务未提交的数据,隔离性差,会出现脏读(当前内存读),不可重复读,幻读问题;类型二:RC(READ-COMMITTED表示读已提交)可以读取到事务已提交的数据,隔离性一般,不会出现脏读问题,但是会出现不可重复读,幻读问题;类型......
  • MySQL CTE递归查询 Data too long for colum‘xxx‘ at row 1
    在mysql8使用 CTE递归查询时,出现了这个报错WITHrecursiveareaAS(SELECTarea_name,area_codeFROMsys_area_treeWHEREarea_category='1'ANDparent_codeISNULLUNIONALLSELECTconcat(t1.area_name,'/',t.area_name),t.area_code......
  • mysql,sqlserver,oracle各自的存在更新不存在添加写法
    mysql,sqlserver,oracle各自的存在更新不存在添加写法在向表中插入数据的时候,经常遇到这样的情况:首先判断数据是否存在;如果不存在,则插入:如果存在,则更新。SQLserver脚本先查询,没有数据再进行数据插入,有数据就走更新ifnotexists(select1fromtwhereid=1)ins......