客户端的两种使用模式:

一种叫交互式模式:直接在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中查看,类似于Linuxps命令。

       reload:等同于flush-privileges

       refresh: 等同于flush-hostsflush-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:主要实现定期任务定期计划的,相当于LinuxCrontab。它也是一段代码,属于开发范畴。包括存储过程,存储函数,事件调度器他们都严重依赖与RDB编程接口。

      用户:属于数据库对象。验证用户账号,权限分派。一个用户登录系统以后,主要是看你具有哪些访问权限的。