客户端的两种使用模式:
一种叫交互式模式:直接在Mysql中输入命令
一种叫批处理模式:把那些在客户端中需要执行的指令写成一个mysql的脚本,然后一次性的送入mysql,让其直接执行
批处理模式1: 写入文件内:比如: vim test.sql 写入:
CREATE DATABASE mydb;
CREATE DATABASE testdb;
执行:
mysql -uroot -p < test.sql 使用输入重定向,直接将脚本文件中的内容写入Mysql.
批处理模式2:
在mysql命令行中使用:SOURCE /root/test.sql ,则也能直接执行一个文件中的内容。
交互式的:
每一个SQL语句需要一个结束符,明确的告诉Mysql到底这个语句什么时候执行完了,默认情况下这个结束符是分号“;”这就明确的告诉了服务器端,一般来讲只要不加分号就能执行的语句,一般都是在客户端执行的,所以对于mysql来讲命令有两类,一种是客户端命令,一种是服务器端命令,服务器端命令必须要有分号,而客户端命令可以不加分号。
比如 STATUS 这个可以不加分号,这显示了连接的信息。里面只有一条信息的获取需要送到服务器端,所以这个可以不加分号。
mysql的提示符
mysql> :标准命令行,准备接受命令
-> :表示续行服
‘> :表示单引号缺一部分
“> :双引号缺一部分
`> :反引号缺一部分
/*> :注释信息缺一部分
Mysql的其他的有用的特征:\h 可以获得帮助信息
\q 或者 exit : 退出客户端工具
\c 取消一个已经写好的命令
\d 更换行结束符,默认情况下是“;”要想使用其他的。比如
\d // 则定义使用了双斜杠作为结束符
\g 无论是什么结束符,则表示都送到服务器端执行。忽略默认的结束符直接送去执行。
\G 以列的方式来显示行(竖排显示)
启动时候加上 -E 或者 --vertical 默认就使用竖排显示
在内存当中保留命令历史,在用户的家目录下保存命令历史至一个文件中.mysql_history。
\# 或者 rehash 命令
在非windows的主机上,mysql支持基于TAB键的命令补全功能,不过要想使用补全的功能,需要在开机的时候,默认打开命令补全,但是有些安装版本在设置中给你禁用了。当你的数据库内容比较多的时候,你会发现当你进入mysql的时候会很慢才进入,这就是在读取数据库的元数据信息,生成这种命令补全机制的文件的。
mysql还支持命令行编辑的功能:
Ctrl+e/a/w/u/y : 使用的方式和linux中的命令行支持方式几乎是一样的
Mysql的客户端命令和SQL语句:
HELP keyword :查看一个命令的语法结构和使用方法
比如HELP SELECT
-e 选项,可以让你我们不用登陆到服务器端,而直接在客户端就将命令交由mysql处理并返回。
比如:mysql -e “SHOW DATABASES”
所有在mysql里支持的特性,在这里都支持。
mysql -e “SELECT User,Host,Password FROM mysql.user;”
============
跟数据库管理相关的工作:mysqladmin
命令的使用格式:
mysqladmin [option] command [arg] [command]
ping:查看当期的服务器是否正常
create db_name:用于创建数据库
drop :用于删除数据库(这个过程是不可逆的,删之前一定要小心)
debug:将mysql执行过程中产生的错误信息发送至错误信息文件,错误信息日志一般保存在 SHOW VARIABLES LIKE ‘%datadir’;来显示数据文件的目录的。而我们的debug文件就保存在这里。
extended-status:扩展的状态信息,可以显示mysql的所有的状态变量中所记录的状态变量信息。比如有多少用户进来,查询过多少次,建立过多少表,删除过多少表,指定查询缓存是有效的(Qcache_hits),当然这些信息也可以使用SHOW STATUS;在Mysql中查看。
flush-hosts:清空一个主机所记录的所有状态信息。
flush-logs:刷新日志的,手动实现日志文件的滚动操作。
flush-privileges:刷新权限方面的定义
flush-status:重置信息记录的大多数变量
flush-tables:用于关闭当前打开的所有Mysql的文件的句柄
password:定义密码
processlist:用于显示mysql当前执行的所有进程和线程,也可以使用(SHOW PROCESSLIST;)在mysql中查看,类似于Linux的ps命令。
reload:等同于flush-privileges
refresh: 等同于flush-hosts和flush-logs
start-slave:启动从服务器
status:显示全局状态的简要信息,以及长选项
--sleep:每多长时间刷新一次
--count:定义显示多少次后退出
variables:查看变量的
version:显示当前Mysql服务器的版本号(里面有一些详细信息)
============
Mysql的图形化客户端工具:
SQLyog:能够安装在windows上,并连接在linux上实现远程管理
MySQL Front:前端管理工具
phpMyAdmin:基于Web的管理工具
MySQL Query Browser 后面这三个是官方提供的工具。
MySQL Administrator
MySQL Workbench
Mysql开发相关的知识:
定义一个二维关系(表)的时候,除了定义这个字段的内容之外,还要定义这个字段的类型。对于关系型数据库来讲,每一个字段都必须定义数据类型。这个数据类型决定了:
1.这个字段中可以存储的所有字段的种类。
2.可以使用多大的存储空间
3.决定这个数值到底是一个固定长度(大家都是20个字符)还是可变长度(根据名字长短来定义字符长度)。
4.决定对应的数值类型的排序机制和比较方法(有的区分大小写,有的不区分大小写)
5.我们的类型是否可以被索引,也是又数据类型决定的。
数据库对象(逻辑视角)
表:二维关系 表其实就是由行和列组成的二维关系,(一个基表)
索引,index:加速查询的数据结构,他也需要用到存储空间。快速找到某些具有特殊特点的指针。索引有索引类型的概念,不同的索引能适用于不同的查询类型,常用的比如Btree索引……
视图:一个存储下来的SELECT语句,检索成表的形式,(一个虚表)
触发器:trigger,让用户对数据库中的表发生数据修改的时候,同时触发的额外的数据库的操作。(比如用户修改记录的时候,系统会自动触发将用户的动作记录到日志信息)。具体实现什么操作,要管理员去定义。它通常是一个代码段,属于SQL变成的范畴。触发器在记录日志的时候非常有用,而且是将日志记录带某个表中。
存储过程:Storage procedure:一个正常的执行的数据段,需要用CALL来定义,来执行,过程是没有什么特定的返回值的。尤其是返回特定数据集。基于存储过程开发的程序可能适用性比较差。
存储函数:Storage function:在select语句中进行使用,可以返回表。他们可以实现代码重用,极大增加效率、以及增强数据库的安全程度。他们两个一般都是放在服务器端的,远程传输的只是CALL或者其他的命令~。
事件调度器:event sheduler:主要实现定期任务定期计划的,相当于Linux的Crontab。它也是一段代码,属于开发范畴。包括存储过程,存储函数,事件调度器他们都严重依赖与RDB编程接口。
用户:属于数据库对象。验证用户账号,权限分派。一个用户登录系统以后,主要是看你具有哪些访问权限的。