Mysql中如何使用 “--”作为注释起始标记

一些其他SQL数据库采用“--”作为注释开始标志。MySQL服务器采用“#”作为注释起始字符。对于MySQL服务器,也能使用C风格的注释:/*该处为注释*/。

MySQL服务器3.23.3和更高版本支持“--”注释风格,但要求注释后面跟1空格(或控制字符,如新行)。之所以要求使用空格,是为了防止与自动生成SQL查询有关的问题,它采用了类似下面的代码,其中,自动为“!payment!”插入“payment”的值:

UPDATE account SET credit=credit-!payment!

考虑一下,如果“payment”的值为负数如“-1”时会出现什么情况:

UPDATE account SET credit=credit--1

在SQL中“credit--1”是合法的表达式,但是,如果“--1”被解释为注释开始,部分表达式将被舍弃。其结果是,表达式的意义与预期的意义完全不同。

UPDATE account SET credit=credit该语句不会对值作任何更改!这表明,允许注释以“--”开始会产生严重后果。

采用MySQL服务器3.23.3和更高版本中的这类注释方法,“credit--1”实际上很安全。

另一个安全特性是,mysql命令行客户端将删除所有以“--”开头的行。

仅当使用高于3.23.3的MySQL时,下述信息才有意义:

如果有1个文本文件形式的SQL程序,该文件包含“--”注释,应按下述方式使用replace实用工具,将其转换为使用“#”字符的注释:

shell> replace " --" " #" < text-file-with-funny-comments.sql \
| mysql db_name

而不是通常的:

shell> mysql db_name < text-file-with-funny-comments.sql

你也可以编辑注释文件,将“--”注释更改为“#”注释:

shell> replace " --" " #" -- text-file-with-funny-comments.sql

使用下述命令将其改回去:

shell> replace " #" " --" -- text-file-with-funny-comments.sql

时间: 2024-10-27 06:16:26

Mysql中如何使用 “--”作为注释起始标记的相关文章

把sqlserver中的存储过程注释后创建到mysql中

  把sqlserver中的存储过程注释后创建到mysql中 #!/usr/bin/perl use DBI; use Switch; use Encode; use Encode::CN; my $source_name = "sqldb"; my $source_user_name = "sa"; my $source_user_psd = "123"; my $db_name="mysqldb"; my $locatio

MySQL中管理表和索引的相关语句

1. 创建表 MySQL中创建表是通过create table语句实现的,语法这里就不介绍了,非常复杂,可以去官网上查询,所幸的是, 我们并不需要记住所有的选项,因为大部分都采用默认即可,下面介绍几个比较常用的选项. 1)指定存储引擎 默认的存储引擎由default-storage-engine指定,如果没有指定,则为MyISAM,如果建表时,你不想使用默认的存储 引擎,可以通过如下语句实现: create table table_name ( ... ) engine=engine_name;

MySql中启用InnoDB数据引擎的方法

1.存储引擎是什么? Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能.这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型).MySql默认配置了许多不同的存储引擎,可以预先设置或者在MySql服务器中启用. 2.MYSQL支持的数据引擎 MyISAM:默认的MySQL插件式存储引擎,它是

PHP程序调用MYSQL中字符串加密函数方法总结

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写.PHP 是一种 HTML 内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用.PHP 独特的语法混合了 C.Java.Perl 以及 PH

Mysql中limit的用法详解

Mysql中limit的用法:在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数.LIMIT 接受一个或两个数字参数.参数必须是一个整数常量.如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最

MySQL中NULL字段的比较问题

最近有人问我MySQL中一个字段不论=NULL还是<>NULL都匹配不了数据,是在框架层实现的还是在存储引擎层实现的,我说你看看如果InnoDB表和MyISAM表都有这个现象,那就比较可能是在框架层. 当然这个答案跟没有回答一样,我们可以从代码上看看具体的实现部分. 1. 现象描述 表结构 CREATE TABLE `t` ( `c` char(32) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=gbk 插入两行数据 insert into t (

mysql中自动增长怎么使用啊?

问题描述 mysql中自动增长怎么使用啊? 设置主键自增,那我用insert 插入数据时主键的values写什么啊? 解决方案 可以不写,比如你的id是自动增长 表如下 id acto_increatemetn,.. name varchar(20) age int 那么这么写 insert into 表(name,age) values('111',12); 解决方案二: mysql 自动增长起始值设置mysql 如何设置自动增长序列 sequence(一)mysql 如何设置自动增长序列 s

代码-JAVA中如何计数或如何进行标记

问题描述 JAVA中如何计数或如何进行标记 例如我要计算出2015-1900,年之间所有闰年的个数或标记出闰年,该利用哪些代码完成 解决方案 public class SelectSort { public static void main(String[] args) throws IOException{ for (int i = 1900; i <= 2015; i++) { if(i%100==0){ if(i%400==0){ System.out.println(i+"是闰年&

mysql-百度地图从MySql中获取经纬度

问题描述 百度地图从MySql中获取经纬度 <%@ page contentType="text/html; charset=utf-8" %> <%@ page language="java" %> <%@ page import="com.mysql.jdbc.Driver" %> <%@ page import="java.sql.*" %> <% String dr