mysql前缀索引使用
,不再需要回表查整行记录,减少语句的执行时间。索引字段的维护是有代价的,所以在建立冗余索引来支持覆盖索引时就需要权衡业务的需求,不能盲目来。1 前缀索引如果为每一种查询都设计一个索引,索引也就太多了,...
2024.11.13如何使用MySQL数据库
前言:前面我们已经了解了如何搭建MySQL数据库,那么接下来我们就一起来了解一下,如何使用MySQL数据库。
MySQL数据库系统也是一个典型的C/S(客户端/服务器)架构应用,要访问MySQL数据库需要使用专门的客户端软件。在linux系统中,最简单、易用的MySQL客户端软件是其自带的MySQL命令工具。
一、访问MySQL数据库
1.登录到MySQL服务器
经过安装后的初始化,MySQL数据库默认管理员用户名为root,密码为空。若要以未设置密码的root用户登录本机的MySQL数据库,可执行以下操作:
上面是没密码登录,那么如何设置数据库用户的密码呢?在linux命令环境中,一般使用mysqladmin工具来设置密码。命令格式为"mysqladmin -u root -p ‘旧密码‘ password ‘新密码‘"。如下图:
在有密码的情况下,使用"-p"选项来进行密码校验。如下图:
注:进入"mysql>"的数据库操作环境后,用户可以输入各种操作语句对数据库进行管理。每条MySQL操作语句以分号";"表示结束,输入时可以区分大小写,但习惯上将MySQL语句中的关键字部分大写。
示例:查看当前数据库服务的基本信息。如下图:
2.查看数据库结构
MySQL是一套数据库管理系统,在每台MySQL服务器中,均支持运行多个库,每个库相当于一个容器,其中存放着许多表,表中的每行包含一条具体的数据关系信息,这些信息称为数据记录。
1)查看当前服务器中有哪些库
"show databases语句":用于查看当前MySQL服务器中包含的库,经初始化后的MySQL服务器,默认建立了四个库:test、mysql、information_schema和performance_schema(其中mysql库是mysql正常运行所需的库,其中包含了用户认证相关的表)。如下图:
2)查看当前使用的库中有哪些表
"show tables语句":用于查看当前所在的库中包含的表。在操作之前,需要先使用"use语句"切换到所使用的库。
如下图:查看mysql库中包含的所有表。
MySQL数据库的数据文件存放在/usr/local/mysql/data目录下,每个数据库对应一个子目录,用于存储数据表文件。每个数据表对应三个文件,扩展名分别为".frm"、".myd"和".myi"。(这里就不细说了)
3)查看表的结构
"describe语句":用于显示表的结构,即组成表的各字段(列)的信息。需要指定"库名.表名"作为参数;若只指定表名参数,则需要先通过"use语句"切换到目标库。如下图:查看mysql库中的user表的结构。
3.创建及删除库和表
1)创建新的库
"create database语句":用于创建一个新的库,需指定数据库名称作为参数。如下图:
刚刚创建的库是空的,其中不包含任何表,在/usr/local/mysql/data目录下会自动生成一个与新建的库名相同的文件夹。
2)创建新的表
"create table语句":用于在当前库中创建新的表,需指定数据表名称作为参数,并定义该表格所使用的各字段。基本格式为:
"create table 表名 (字段1名称 类型,字段2名称 类型, ... , primary key (主键名))"
创建表之前,应先明确数据表格的结构、各字段的名称和类型等信息。数据类型是数据的一种属性,用于指定对象可保存的数据的类型,如整数数据、字符数据、货币数据、日期和时间数据、字符串等。下面列举几个常用的数据类型:
int:整型,绝大多数数值型的数据都可以使用这种数据类型,存储-231到231之间的整数。占4字节空间bit:整型,取值0、1或NULL。存储只有两种可能值的数据,如Yes或Nomoney:表示钱和货币值。存储从-922 337 203 685 477.5808 到 922 337 203 685 477.5807之间的数据,精确到货币单位的万分之一。占8 字节空间char:存储固定长度,非 Unicode 字符数据。须指定列长,最多包含 8000 个字符varchar:存储可变长度,非 Unicode 字符数据。需要指定该列的最大长度,最多包含231个字符text:存储大量的非 Unicode字符数据。最多可以有231-1或大约20亿个字符date:日期,存储从公元元年1月1日到公元9999年 12月31日间所有的日期数据。占3字节空间time:表示一天中某个时间,不能感知时区且基于 24 小时制。占5字节空间datetime:表示日期和时间。存储从1753年1月1日到9999年12月31日间所有的日期和时间数据。占8个字节空间了解了数据类型之后,我们来创建一个用户及密码的表。如下图:
在创建表的字段定义部分,"not null"表示不为空,"default"用于设置默认的密码字符串,"primary"用于设置主键。
3)删除一个数据表
"drop table语句":用于删除库中的表,需要指定"库名.表名"作为参数;若只指定表名参数,则需要先通过执行use语句切换到目标库。示例:
4)删除一个数据库
"drop database语句":用于删除指定的库,需要指定库名作为参数。如上图。
4.管理表中的数据记录
1)插入数据记录
"insert into语句":用于向表中插入新的数据记录。语句格式为:"insert into 表名(字段1,字段2,...) values(字段1的值,字段2的值,...)"。
示例:向auth库中的users表插入一条记录,用户名为"zhangsan",对应的密码为"123456"。如下图:
注:values部分的值应与前面指定的各字段逐一对应;如果这条记录完整的包括了表中所有字段的值,则插入语句中指定字段的部分可以省略,可以如上图中插入"lisi"这条记录一样。
2)查询数据记录
"select语句":用于从指定的表中查找符合条件的数据记录。语句格式为:"select 字段名1,字段名2,... from 表名 where 条件表达式"。当要查询所有字段时,可以使用通配符"*",若要显示所有的数据记录,则可以省略where条件语句。如下图:
3)修改数据记录
"update语句":用于修改、更新表中的数据记录。语句格式为:"update 表名 set 字段名1=字段值1,字段名2=字段值2,... where 条件表达式"。
示例:修改"lisi"用户的密码字段为"123.abc"。如下图:
在MySQL数据库服务器中,用于访问数据库的各种用户(如root)信息都保存在mysql库中的user表中,熟练的管理员除了可以使用mysqladmin工具更改密码外,还可以直接修改该表中的数据记录来更改密码。如:"update mysql.user set password=password(‘123.abc‘) where user=‘root‘;"(可以试着做一下)
4)删除数据记录
"delete语句":用于删除表中的数据记录。语句格式为:"delete from 表名 where 条件表达式"。
示例:删除"lisi"记录。如下图:
特别注意:在执行update、delete语句时,通常都带where条件,不带条件的update语句和delete语句会修改或删除所有的记录,是非常危险的操作。
5.数据库用户授权
MySQL数据库的root用户账号拥有对所有库、表的全部权限,频繁的使用root账号会给数据库服务器带来一定的安全隐患。实际工作中,通常会建立一些低权限的用户,只负责一部分库、表的管理和维护操作,甚至可以对查询、修改、删除记录等各种操作做进一步的细化限制,从而降低数据库的安全风险。
1)授予权限
"grant语句":专门用来设置数据库用户的访问权限。当指定的用户名不存在时,grant语句将会创建新的用户,否则,grant语句用于修改用户信息。
语句格式为:"grant 权限列表 on 库名.表名 to 用户名@来源地址 [ identified by ‘密码‘]"
注意事项:
权限列表:用于授权使用的各种数据库操作,以逗号进行分隔,如"select,insert,update"。使用"all"表示所有权限,可以授权执行任何操作库名.表名:用于指定授权操作的库和表的名称,其中可以使用通配符"*"。例如:使用"auth.*"表示授权操作的对象为auth库中的所有表。用户名@来源地址:用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP地址,还可以使用通配符"%",表示某个区域或网段内的所有地址,如:"%.benet.com""192.168.1.%"等。identified by:用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略"identified by"部分,则用户的密码为空。示例:添加一个名为"wangwu"的数据库用户,并允许其从本机访问,对auth库中的所有表具有查询权限,验证密码为"123456",并验证。如下图:
2)查看权限
"show grants语句":专门用来查看数据库用户的授权信息,通过for子句可以指定查看的用户对象(必须与授权时使用的对象名称一致)。语句格式为:"show grants for 用户名@来源地址"。
示例:查询"wangwu"的权限。如下图:
3)撤销权限
"revoke 语句":用于撤销指定用户的数据库权限,撤销权限后的用户任然可以连接到mysql服务器,但将被禁止执行对应的数据库操作。语句格式为:"revoke 权限列表 on 数据库名.表名 from 用户名@来源地址"
示例:撤销"wangwu"对auth库的所有权限。如下图:
——————— 本节完 ———————
若希望了解更多关于MySQL语句的知识,可以参阅MySQL的在线手册。
,不再需要回表查整行记录,减少语句的执行时间。索引字段的维护是有代价的,所以在建立冗余索引来支持覆盖索引时就需要权衡业务的需求,不能盲目来。1 前缀索引如果为每一种查询都设计一个索引,索引也就太多了,...
2024.11.13概述今天介绍下mysql视图方面的内容,通俗的讲,视图就是一条select语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。01特性视图是对若干张基本表的引用...
2024.11.15概述我们都知道where条件如果在字段上带了函数就不会去走索引,不好优化,无意间了解到mysql一个新特性--虚拟列,专门处理这块问题的,下面一起来了解下吧~Generated Column在MySQ...
2024.11.15概述之所以做这个实验,也是有个朋友误删了某张表的frm和ibd文件,然后要导入数据的时候一直提示无法重新创建这张表,这时候应该怎么解决呢?我们用一个实验来看看。。一、环境准备CREATE TABLE ...
2024.11.15用户变量,可以定义在命令行、函数、存储过程中,断开连接时,变量消失,使用起来十分方便。用户变量的定义用户变量的定义,直接使用@标识符。下面的语句定义一个变量count,并进行赋值。set @count...
2024.11.15