如何使用MySQL数据库
前言:前面我们已经了解了如何搭建MySQL数据库,那么接下来我们就一起来了解一下,如何使用MySQL数据库。
MySQL数据库系统也是一个典型的C/S(客户端/服务器)架构应用,要访问MySQL数据库需要使用专门的客户端软件。在linux系统中,最简单、易用的MySQL客户端软件是其自带的MySQL命令工具。
一、访问MySQL数据库
1.登录到MySQL服务器
经过安装后的初始化,MySQL数据库默认管理员用户名为root,密码为空。若要以未设置密码的root用户登录本机的MySQL数据库,可执行以下操作:
上面是没密码登录,那么如何设置数据库用户的密码呢?在linux命令环境中,一般使用mysqladmin工具来设置密码。命令格式为“mysqladmin-uroot-p‘旧密码’password‘新密码’”。如下图:
在有密码的情况下,使用“-p”选项来进行密码校验。如下图:
注:进入“mysql”的数据库操作环境后,用户可以输入各种操作语句对数据库进行管理。每条MySQL操作语句以分号“;”表示结束,输入时可以区分大小写,但习惯上将MySQL语句中的关键字部分大写。
示例:查看当前数据库服务的基本信息。如下图:
2.查看数据库结构
MySQL是一套数据库管理系统,在每台MySQL服务器中,均支持运行多个库,每个库相当于一个容器,其中存放着许多表,表中的每行包含一条具体的数据关系信息,这些信息称为数据记录。
1)查看当前服务器中有哪些库
“showdatabases语句”:用于查看当前MySQL服务器中包含的库,经初始化后的MySQL服务器,默认建立了四个库:test、mysql、information_schema和performance_schema(其中mysql库是mysql正常运行所需的库,其中包含了用户认证相关的表)。如下图:
2)查看当前使用的库中有哪些表
“showtables语句”:用于查看当前所在的库中包含的表。在操作之前,需要先使用“use语句”切换到所使用的库。
如下图:查看mysql库中包含的所有表。
MySQL数据库的数据文件存放在/usr/local/mysql/data目录下,每个数据库对应一个子目录,用于存储数据表文件。每个数据表对应三个文件,扩展名分别为“.frm”、“.myd”和“.myi”。(这里就不细说了)
3)查看表的结构
“describe语句”:用于显示表的结构,即组成表的各字段(列)的信息。需要指定“库名.表名”作为参数;若只指定表名参数,则需要先通过“use语句”切换到目标库。如下图:查看mysql库中的user表的结构。
3.创建及删除库和表
1)创建新的库
“createdatabase语句”:用于创建一个新的库,需指定数据库名称作为参数。如下图:
刚刚创建的库是空的,其中不包含任何表,在/usr/local/mysql/data目录下会自动生成一个与新建的库名相同的文件夹。
2)创建新的表
“createtable语句”:用于在当前库中创建新的表,需指定数据表名称作为参数,并定义该表格所使用的各字段。基本格式为:
“createtable表名(字段1名称类型,字段2名称类型,...,primarykey(主键名))”
创建表之前,应先明确数据表格的结构、各字段的名称和类型等信息。数据类型是数据的一种属性,用于指定对象可保存的数据的类型,如整数数据、字符数据、货币数据、日期和时间数据、字符串等。下面列举几个常用的数据类型:
int:整型,绝大多数数值型的数据都可以使用这种数据类型,存储-到之间的整数。占4字节空间bit:整型,取值0、1或NULL。存储只有两种可能值的数据,如Yes或Nomoney:表示钱和货币值。存储从-.到.之间的数据,精确到货币单位的万分之一。占8字节空间char:存储固定长度,非Unicode字符数据。须指定列长,最多包含个字符varchar:存储可变长度,非Unicode字符数据。需要指定该列的最大长度,最多包含个字符text:存储大量的非Unicode字符数据。最多可以有-1或大约20亿个字符date:日期,存储从公元元年1月1日到公元年12月31日间所有的日期数据。占3字节空间time:表示一天中某个时间,不能感知时区且基于24小时制。占5字节空间datetime:表示日期和时间。存储从年1月1日到年12月31日间所有的日期和时间数据。占8个字节空间了解了数据类型之后,我们来创建一个用户及密码的表。如下图:
在创建表的字段定义部分,“notnull”表示不为空,“default”用于设置默认的密码字符串,“primary”用于设置主键。
3)删除一个数据表
“droptable语句”:用于删除库中的表,需要指定“库名.表名”作为参数;若只指定表名参数,则需要先通过执行use语句切换到目标库。示例:
4)删除一个数据库
“dropdatabase语句”:用于删除指定的库,需要指定库名作为参数。如上图。
4.管理表中的数据记录
1)插入数据记录
“insertinto语句”:用于向表中插入新的数据记录。语句格式为:“insertinto表名(字段1,字段2,...)values(字段1的值,字段2的值,...)”。
示例:向auth库中的users表插入一条记录,用户名为“zhangsan”,对应的密码为“”。如下图:
注:values部分的值应与前面指定的各字段逐一对应;如果这条记录完整的包括了表中所有字段的值,则插入语句中指定字段的部分可以省略,可以如上图中插入“lisi”这条记录一样。
2)查询数据记录
“select语句”:用于从指定的表中查找符合条件的数据记录。语句格式为:“select字段名1,字段名2,...from表名where条件表达式”。当要查询所有字段时,可以使用通配符“*”,若要显示所有的数据记录,则可以省略where条件语句。如下图:
3)修改数据记录
“update语句”:用于修改、更新表中的数据记录。语句格式为:“update表名set字段名1=字段值1,字段名2=字段值2,...where条件表达式”。
示例:修改“lisi”用户的密码字段为“.abc”。如下图:
在MySQL数据库服务器中,用于访问数据库的各种用户(如root)信息都保存在mysql库中的user表中,熟练的管理员除了可以使用mysqladmin工具更改密码外,还可以直接修改该表中的数据记录来更改密码。如:“updatemysql.usersetpassword=password(‘.abc’)whereuser=’root’;”(可以试着做一下)
4)删除数据记录
“delete语句”:用于删除表中的数据记录。语句格式为:“deletefrom表名where条件表达式”。
示例:删除“lisi”记录。如下图:
特别注意:在执行update、delete语句时,通常都带where条件,不带条件的update语句和delete语句会修改或删除所有的记录,是非常危险的操作。
5.数据库用户授权
MySQL数据库的root用户账号拥有对所有库、表的全部权限,频繁的使用root账号会给数据库服务器带来一定的安全隐患。实际工作中,通常会建立一些低权限的用户,只负责一部分库、表的管理和维护操作,甚至可以对查询、修改、删除记录等各种操作做进一步的细化限制,从而降低数据库的安全风险。
1)授予权限
“grant语句”:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,grant语句将会创建新的用户,否则,grant语句用于修改用户信息。
语句格式为:“grant权限列表on库名.表名to用户名
来源地址[identifiedby‘密码’]”注意事项:
权限列表:用于授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update”。使用“all”表示所有权限,可以授权执行任何操作库名.表名:用于指定授权操作的库和表的名称,其中可以使用通配符“*”。例如:使用“auth.*”表示授权操作的对象为auth库中的所有表。用户名
来源