Mysql Sql語句空格字符串等問題

Mysql Sql語句空格字符串等問題

1、問題描述

Mysql 裏面SQL語句空格、字符串問題,你發現不了,但是就是運行報錯。不服?來我們上源碼。先來看一個刪除表的。

DROP TABLE IF EXISTS 'user';

在這裏插入圖片描述
堂堂正正刪除表,沒毛病,運行。

1 queries executed, 0 success, 1 errors, 0 warnings

查詢:DROP TABLE IF EXISTS 'user'

錯誤代碼: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''user'' at line 1

執行耗時   : 0 sec
傳送時間   : 0 sec
總耗時      : 0 sec

在這裏插入圖片描述
什麼鬼。這裏user不能用字符串的引號。只能用mysql自帶的引號。

DROP TABLE IF EXISTS `user`;

在這裏插入圖片描述

對比下這兩種寫法在SQLYog中的效果。執行SQL語句。

1 queries executed, 1 success, 0 errors, 1 warnings

查詢:DROP TABLE IF EXISTS `user`0 行受到影響, 1 個警告

執行耗時   : 0 sec
傳送時間   : 1.183 sec
總耗時      : 1.184 sec

注意:要查看所有警告的完整列表,請啓用 工具 -> 首選項 -> 常規 -> 在信息選項卡下顯示警告

在這裏插入圖片描述
再來個大招,關於空格的。


CREATE TABLE `role` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

也是堂堂正正建立一個表。沒毛病。執行SQL語句。

1 queries executed, 0 success, 1 errors, 0 warnings

查詢:CREATE TABLE `role` (   `id` bigint(20) NOT NULL AUTO_INCREMENT,   `name` varchar(255) COLLATE utf8_bin NOT NULL...

錯誤代碼: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE `role` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `n' at line 1

執行耗時   : 0 sec
傳送時間   : 0 sec
總耗時      : 0 sec

在這裏插入圖片描述
我的個親孃嘞!還有沒有王法。是的就是空格的問題。我們拿到記事本過濾一下再拷貝回來執行SQL語句。

CREATE TABLE role(
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

大家肉眼看看和上面有什麼區別,看出來的話,你是我大哥,我水土不服舅服你。執行SQL語句。

1 queries executed, 1 success, 0 errors, 0 warnings

查詢:CREATE TABLE role( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`id`) ) ...0 行受到影響

執行耗時   : 0.027 sec
傳送時間   : 1.171 sec
總耗時      : 1.199 sec

在這裏插入圖片描述
看似一毛一樣,竟然執行成功了。我們來看看SQLyog中兩段代碼的差別。

在這裏插入圖片描述

確實空格不同,顏色也不同。接下來看看Navicat的,一毛一樣,還是SQLyog好啊。

在這裏插入圖片描述
遇到這樣的問題想必各位會直接哭暈在廁所了。不說了,我剛剛醒。

2、總結

  書上的代碼直接運行絕大部分是對的,但是總有一些軟件的更新使得作者無能爲力。之前的API是對的,但是之後就廢棄了或修改了是常有的事。所以我們需要跟蹤源代碼。這只是一個小小的問題,如果沒有前輩的無私奉獻,很難想象我們自己一天能學到多少內容。感謝各位前輩的辛勤付出,讓我們少走了很多的彎路!

點個贊再走唄!歡迎留言哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章