9.6. MySQL中保留字的处理】的更多相关文章

尝试使用一个识别符,例如使用嵌入式MySQL 数据类型或函数名作为表名或列名,例如TIMESTAMP 或GROUP ,会造成一个常见问题.允许你这样操作( 例如,ABS 可以作为一个列名) .但是,默认情况下,在数调用中在函数名和后面的‘( ’字符之间不允许有空格.该要求使函数调用与列名引用不同. 该行为的不利结果是在某些上下文中省略一个空格会使识别符解释为函数名.例如,该语句合法: mysql>CREATE TABLE abs (val INT) : 但省略abs 后面的空格会造成语法错误,因…
mysql中有很多的 保留字, 也叫关键字, 你在使用 数据库中的任何东西, 都最好是 避开这些关键字/保留字, 包括 数据库名, 表名, 字段名, 函数名, 存储过程名. 这些关键字包括: mysql所谓的 ERROR1064错误, 就是语法错误, 语法错误只有两种情况: 要么是单词写错了. 是纯粹的 literal书写错误, 要么是第二种情况, 使用了mysql的保留关键字. 比如在定义函数的 时候, 最容易将 函数的 名称命名为 add. 而add恰好是mysql的关键字, 它是允许你 创…
设计数据表时,应尽量避免使用MySQL的关键字和保留字作为表名或列名. 比如key和keys为保留字,如果不小心使用关键字或者保留字作为列名字,执行下面的语句会出现语法错误: select * from table_name where key='test'; 这种情况下,需要把保留字用反引号包含: select * from table_name where `key`='test'; 字段key和mysql的保留字冲突了,当mysql的字段名和保留字冲突的时候,sql语句中的字段名需要加上反…
` 是 MySQL 的转义符,避免和 mysql 的本身的关键字冲突,只要你不在列名.表名中使用 mysql 的保留字或中文,就不需要转义. 所有的数据库都有类似的设置,不过mysql用的是`而已.通常用来说明其中的内容是数据库名.表名.字段名,不是关键字.例如: select from from table;第一个from是字段名,最后的table表名,但是同时也是mysql关键字,这样执行的时候就会报错,所以应该使用select `from` from `table`;当然,为了便于阅读,不…
REGEXP在mysql是用来执行正则表达式的一个函数 像php中的preg之类的函数了,regexp正则函数如果只是简单的查询使用like即可,但复杂的还是需要使用regexp了,下面我们来看看. MySql用户手册建议,在构造简单查询时,仍使用通配符. 如:Select [*|fieldname list] From [tablename] where [fieldname] like ["%someletter"|"%someletter%","_&…
变量 用户变量: 在用户变量前加@ 系统变量: 在系统变量前加@@ 运算符 算术运算符有: +(加), -(减), * (乘), / (除) 和% (求模) 五中运算 位运算符有: & (位于), | (位或), ^ (位异或), ~ (位取反), >> (位右移), << (位左移) 比较运算符有: = (等于), > (大于), < (小于), >= (大于等于), <= (小于等于), <> (不等于), != (不等于), <…
反引号,一般在ESC键的下方. 它是为了区分MYSQL的保留字与普通字符而引入的符号.举个例子:SELECT `select` FROM `test` WHERE select='字段值'在test表中,有个select字段,如果不用反引号,MYSQL将把select视为保留字而导致出错,所以,有MYSQL保留字作为字段的,必须加上反引号来区分. 引号一般用在字段的值,如果字段值是字符或字符串,则要加引号,如:select='字段值'不加反引号建的表不能包含MYSQL保留字,否则出错用普通引号,…
mysql中You can't specify target table <tbl> for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中). 如下l: 需要将select出的结果再通过中间表select一遍,就可以规避了错误. 如下: PS:这个问题只出现于mysql,sql service 和 oracle 不会出现此问题.…
mysql中的in语句是把外表和内表作hash 连接,而exists语句是对外表作loop循环,每次loop循环再对内表进行查询.一直大家都认为exists比in语句的效率要高,这种说法其实是不准确的.这个是要区分环境的. 如果查询的两个表大小相当,那么用in和exists差别不大.  如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:  例如:表A(小表),表B(大表)   1: select * from A where cc in (select cc f…
MySQL中利用外键实现级联删除.更新 MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引.在创建索引的时候,可以指定在删除.更新父表时,对子表进行的相应操作,包括RESTRICT.NO ACTION.SET NULL和CASCADE.其中RESTRICT和NO ACTION相同,是指在子表有关联记录的情况下父表不能更新:CASCADE表示父表在更新或者删除时,更新或者删除子表对应记录:SET NULL则是表示父表…