mysql文法充電

來源:互聯網
上載者:User

標籤:

1.關鍵字delimiter 的作用

  ①delimiter叫做“定界符”  ,經常可以在複合sql語句或者預存程序等語句中看到 DELIMITER $$ 的內容,

  ②DELIMITER $$的意義是告訴mysql解譯器,命令的結束符號是$$,當解析sql語句遇到$$符號時,就可以執行sql語句了。

  ③DELIMETER定義定界符,這個符號可以是任意符號(只要不與sql語句衝突),

  ④預設情況下,delimiter是分號;在命令列用戶端中,如果有一行命令以分號結束,

    那麼斷行符號後,mysql將會執行該命令。如輸入下面的語句
   mysql> select * from test_table;
   然後斷行符號,那麼MySQL將立即執行該語句。

  ⑤更改了預設的定界符;為其他符號的時候,記得要改回預設的;,因為,執行sql語句時;分號已是約定俗成的符號了。

 

2.mysql5.1、5.5等不同版本資料移轉時會出現的錯誤以及解決方案,

 ①預存程序的定義儲存在mysql資料庫的proc表中,proc中的comment欄位的類型在mysql5.1的版本中是char(64)類型的,然而在mysql5.5版本中是text類型的,在這兩個版本的mysql進行資料移轉時,要注意更改comment的類型。

 不修改的話會報錯"Cannot load from mysql.proc. The table is probably corrupted",

 關於這個報錯資訊可參考http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=28212952&id=3407891

http://wenku.baidu.com/link?url=exER7FiGM7PSzueM4cwJtDR5lz9jO4SQc044_a5RsBK6axIQxhODQoTEjL7e9OIhxXHx15tqcKQqXyNbHhaMJ9IKF2vknCts3vc2QnZp8hC

3.mysql命令列操作介面中使用\G可以將列印的內容變成列狀顯示,標題在左列,

4.mysql命令列操作介面下查看預存程序的資訊的sql語句

  show create procedure XXX預存程序名稱 \G

 5.sql語句中嵌套IF、Case、When語句:

  參考http://blog.knowsky.com/240220.htm

    http://blog.csdn.net/zoohouse/article/details/5800799

 6.使用者存取權限設定

  GRANT ALL PRIVILEGES ON db1.* TO ‘user1‘@‘192.168.1.1‘ IDENTIFIED BY ‘1234556‘ WITH GRANT OPTION; 

 最大許可權GRANT ALL PRIVILEGES ON *.* TO ‘user1‘@‘%‘ IDENTIFIED BY ‘1234556‘ WITH GRANT OPTION; 

7.查詢顯示序號的sql,

情景案例:根據欄位分頁順序查詢tab1,顯示每條記錄的排名,假如每頁記錄數目是size,頁碼是page,第一頁的頁碼是0,則每頁的起始排名是size*page+1,

即@rownum:=size*page,sql語句為:

SELECT (@rownum:[email protected]+1) AS rankno,t1.* FROM tab1 as t1 ,(SELECT @rownum:=size*page) b ORDER BY score LIMIT page,size

 

8.having、where的不同:where 的作用是對查詢結果進行分組前,將不符合where條件的行去掉,having 子句的作用是篩選滿足條件的組,

  select A,count(B) as num1 from tab1 group by A having C=‘XX‘,這樣寫是錯誤的,select 中沒有C列,查詢結果集中沒有C列值,having也就沒法對C進行篩選了,

應該改為select A,count(B) as num1,C from tab1 group by A having C=‘XX‘

(ps:group by語句的意義在於分組查詢後進資料列彙總函式運算統計,如果只是顯示列值就不合適了,在having執行的前面,group by 後面接的having一般是運算式,如果是欄位值判斷,一定要確保是分組之前該欄位的值是唯一的,所以一般要求判斷這個欄位就是分組的欄位

 9.Group By 和 Having, Where ,Order by這些關鍵字是按照如下順序進行執行的:Where, Group By, Having, Order by,

  參考:http://www.chengxuyuans.com/MySQL/63991.html

 

10.建立使用者:參考 http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73260878e482a958448e435061e5a35bfe87969585393d82f2747f41802bdb12b71350527b59ec89f4aaae1d477719c6269304a891e59925af1dc4755d650964d99a90e97cce74199b9d3a3c82252dd22046df0809c2905&p=aa759a43d48a57f20be296375857&newp=9b6c861f86cc47ad01be9b7c1c6492695d0fc20e39d2db4c&user=baidu&fm=sc&query=mysql%B4%B4%BD%A8%D3%C3%BB%A7&qid=a5e398780002a9d7&p1=1

 insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234"));

 重新整理系統許可權表

 flush privileges;

 11.時間戳記和日期轉換:

 FROM_UNIXTIME( ):轉為時間戳記類型時間
UNIX_TIMESTAMP( ) :返回長整形類型時間

例如:

SELECT FROM_UNIXTIME(1234567890, ‘%Y-%m-%d %H:%i:%S‘)

mysql>SELECT FROM_UNIXTIME( 1249488000, ‘%Y年%m月%d‘ ) 
->2007年11月20 

mysql> SELECT UNIX_TIMESTAMP(‘2009-08-06‘) ; 
->1249488000 

 12.表結構相同時A表資料匯入B表:

INSERT INTO table_B SELECT * FROM table_A

mysql文法充電

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.