一、相关概念

1、存储例程

   指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。

   将SQL语句和mysql内置函数揉合起来,开发成在服务器端运行的程序,能降低在网络上要传输的代码数量,节约带宽;还可以定义客户端能使用的SQL语句,能提高服务器的安全性。

 存储过程:没有返回值

 存储函数:有返回值

2、触发器

   触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。而存储过程可以通过存储过程的名称被调用。

什么是触发器

   触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上面。触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。

3、事件调度器

    周期性任务计划工具

4、数据字典

    数据字典也叫系统编目(花名册)(system catalog)

    保存数据库服务器上的元数据

 元数据:

   关系的名字(表的名字)

   每个关系的各字段的名字

   各字段的数据类型和长度

   约束

   每个关系上的视图的名字及视图的定义

   授权用户的名字

   用户的授权和账户信息


 统计类的数据:

   每个关系字段的个数

   每个关系中行数

   每个关系的存储方法(存储引擎)


保存元数据的数据库:

   information_schema

   mysql

   performance_schema


5、SQL_MODE

  SQL模型:定义mysql的工作机制或模仿别的数据库的工作特性,

通过修改全局变量:sql_mode=“string”来定义的

常用的模式有:

  TRADITIONAL          使用传统模式

  STRICT_TRANS_TABLES     仅对支持事务的表的严格模式

  STRICT_ALL_TABLES      对所有表使用严格模式

可以使用命令来查看系统使用的模式:

MariaDB [(none)]> show variables like "sql_mode"-> ;
+---------------+--------------------------------------------+
| Variable_name | Value                                      |
+---------------+--------------------------------------------+
| sql_mode      | NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+--------------------------------------------+
1 row in set (0.02 sec)MariaDB [(none)]> show global variables like "sql_mode"-> ;
+---------------+--------------------------------------------+
| Variable_name | Value                                      |
+---------------+--------------------------------------------+
| sql_mode      | NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+--------------------------------------------+
1 row in set (0.00 sec)

6、服务器变量

设定服务器变量的值:通常仅用于支持动态的变量

 支持修改的服务器变量

    动态变量:可以在MySQL运行时修改

    静态变量:在配置文件中修改其值,并重启后方能生效

 服务器变量从其生效范围来讲,分两类

    全局变量服务器级别,修改之后不会立即生效仅对新建立的会话生效

    会话变量会话级别,仅对当前会话有效,退出后即失效,会话建立时,从全局继承各变量


查看服务器变量:

  mysql> show [{global|session}] variables [like ' '];

  mysql> select @@{globa|session}.variable_name;

  mysql> select * from information_schema.GLOBAL_VARIABLES where VARIABLE_NAME='SOME_VARIABLE_NAME'; 查看全局变量

  mysql> select * from information_schema.SESSION_VARIABLES where VARIABLE_NAME='SOME_VARIABLE_NAME'; 查看会话变量


修改变量:

  前提:默认仅管理员有权限修改全局变量

      mysql> set {global|session} variable_name='value';

  注意:无论是全局还是会话级别的动态变量修改,在重启mysql后都会失效,想永久有效,可以定义在配置文件中的响应段中[mysqld]


7、MySQL中字符大小写

  1.SQL关键字及函数不区分大小写

  2.数据库、表及视图名称的大小写区分与否取决于底层OS及FS

  3.存储过程、存储函数及事件调度器的名字不区分大小写,但触发器区分大小写

  4.表别名区分大小写

  5.对字段中的数据,如果字段类型为binary类型,则区分大小写,非binary不区分大小写