mysql服务器模式_MySQL服务器的SQL模式

SQL(Structured Query Language,结构化查询语言)是MySQL服务器能够听懂的语言,是我们用来告诉MySQL服务器如何完成各种数据管理操作的手段。因此,要想有效地与MySQL服务器交流,就必须熟练掌握SQL语言。当你使用某个程序(如mysql客户工具)的时候,它在本质上只是一种能够让你把想要执行的SQL语句发送到服务器去的工具而已。如果你使用某种具备MySQL编程接口(如Perl DBI模块或PHP PDO扩展)的语言编写程序,你将能够通过发出SQL语句去与服务器进行交流。

第1章对MySQL的许多方面进行了简要的介绍,其中已经包括了SQL的一些基本用法。现在,我们将在这基础上从以下几个方面对MySQL所实现的SQL语言进行更详细的探讨:

改变SQL模式以影响MySQL服务器的行为;

各种数据库元素的命名规则;

使用多种字符集;

数据库、数据表和索引的创建和销毁;

获得关于数据库及其内容的信息;

使用联结、子查询和联合操作去检索数据;

创建视图以便从不同的角度去查看数据表里的数据;

多个数据表的删除和刷新操作;

利用事务处理机制一次性执行或撤销多条语句;

创建外键关系;

使用FULLTEXT搜索引擎。

上面列出的项目覆盖了SQL语言的众多应用领域。其他章节提供了更多与SQL相关的信息。

第4章讨论如何创建和使用存储函数(stored function)、存储过程(stored procedure)、触发器和事件。

第12章描述如何使用系统管理类语句如GRANT和REVOKE去管理用户账户。这一章还将讨论MySQL数据库的权限控制子系统,它控制着各个账户都允许执行哪些操作。

附录E列出了MySQL所实现的各种SQL语句的语法。它还讨论了在SQL语句中使用注释的语法。

你还可以参考《MySQL参考手册》,它对了解MySQL最新版本中的更新非常有用。

2.1 MySQL服务器的SQL模式

MySQL服务器有一个名为sql_mode的系统变量可以让你调控其SQL模式,SQL模式对SQL语句的执行情况有多方面的影响。对这个变量可以作出全局性的设置,而各个客户可以通过改变这个模式来影响它们自己对MySQL服务器的连接。这意味着任何一个客户都可以在不影响其他客户的前提下改变MySQL服务器对自己的反应。

受SQL模式影响的行为包括在数据录入阶段如何处理非法数据、如何引用各种标识符,等等。下面的列表描述了几种可能的SQL模式设置值。

STRICT_ALL_TABLES和STRICT_TRANS_TABLES将启用严格模式。在严格模式下,MySQL服务器在接受"坏"数据值方面将更加严格。(具体地说,它将拒绝"坏"数据值而不是把它们转换为最接近的合法值。)

TRADITIONAL是另一种复合模式。它类似于严格模式,但启用了其他几种引入额外限制条件的模式以进行更加严格的数据检查。TRADITIONAL模式将导致MySQL服务器在处理"坏"数据值时更接近于传统的SQL服务器。

ANSI_QUOTES告诉MySQL服务器把双引号识别为一个标识符引用字符。

PIPES_AS_CONCAT将导致"||"字符串被视为一个标准的SQL字符串合并操作符,而不是"OR"操作符的一个同义词。

ANSI是一种复合模式。它将同时启用ANSI_QUOTES、PIPES_AS_CONCAT和另外几种模式值,其结果是让MySQL服务器的行为比它的默认运行状态更接近于标准的SQL。

3.3节将集中讨论会对数据录入环节中的错误或缺失值的处理行为产生影响的SQL模式值。附录D将对sql_mode变量的可取模式值做全面的描述。

在设置SQL模式时,需要给出一个由单个模式值或多个以逗号分隔的模式值构成的值;或者,给出一个空字符串以清除该值。模式值不区分字母的大小写。

如果想在启动MySQL服务器的时候设置SQL模式,可以在mysqld命令行上或是在某个选项文件里使用sql_mode选项。在命令行上,可以使用一个如下所示的设置项:--sql-mode="TRADITIONAL"

--sql-mode="ANSI_QUOTES,PIPES_AS_CONCAT"

如果想在运行时改变SQL模式,可以使用一条SET语句来设置sql_mode系统变量。

任何一个客户都可以给它自己设置一个本次会话专用的SQL模式:SETsql_mode='TRADITIONAL';

如果需要对SQL模式作全局性设置,需要加上GLOBAL关键字:SET GLOBALsql_mode='TRADITIONAL';

设置全局变量需要具备SUPER管理权限,新设置值将成为此后连接的所有客户的默认SQL模式。

如果想知道会话级或全局级SQL模式的当前值,可以使用如下所示的语句:SELECT @@SESSION.sql_mode;

SELECT @@GLOBAL.sql_mode;

上述语句的返回值是由当前启用的所有模式以逗号分隔而构成的一列值。如果当前没有启用任何模式,则返回一个空值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值