MySQL系列(一)——基礎知識大總結
前言:本文主要為mysql基礎知識的大總結,mysql的基礎知識很多,這裡只是作為簡單的介紹,但是具體的細節還是需要自行搜索。當然本文還有很多遺漏的地方,後續會慢慢補充完善。
資料庫和資料庫軟體
資料庫是保存有組織數據的容器
DBMS是為管理資料庫而設計的軟體管理系統,MYSQL、ORACLE 等是資料庫管理系統
MYSQL
MYSQL是一種資料庫管理軟體
開放源碼,免費使用
MYSQL命令
CREATE DATABASE NAME 創建資料庫
USE DATABASE 選擇資料庫
DROP DATABASE NAME 直接刪除資料庫
SHOW DATABASE 顯示可用資料庫列表
SHOW TABLE 顯示資料庫中的表的列表
SHOW COLUMNS FROM TABLE 與 DESCRIBE TABLE 等效,顯示錶的欄位信息
SHOW GRANTS 顯示授予用戶的安全許可權
SHOW ERRORS SHOW WARNINGS 顯示伺服器錯誤和警告信息
SQL
STRUCTURED QUERY LANGUAGE 結構化查詢語言,一種專門用於與資料庫通信的語言
不是DBMS專有的語言,很多DBMS都支持SQL,但是不同DBMS對SQL的實現不同
DBMS支持的SQL語法不能完全適用於其他DBMS
SQL語句不區分大小寫
多條語句需要分號分隔,單條語句可以不用分號
通常SQL語句用大寫,標識符(比如表名 列名 資料庫名)用小寫
創建表
CREATE TABLE user (id INT NOT NULL AUTO_INCREMENT, username VARCHAR(50) NOT NULL,password VARCHAR (50) NOT NULL DEFAULT 1,PRIMARY KEY(id)) ENGINE =INNODB
檢索列
SELECT username FROM user
SELECT username,password FROM user
SELECT * FROM user 建議不是要所有的列,不用"*",要不然這種操作是很耗性能的
SELECT DISTINCT username FROM user 只返回不同的username,比如有兩行用戶名是一樣的,只顯示一行記錄
限制結果
SELECT * FROM TABLE LIMIT 5 檢索前五行
SELECT * FROM TABLE LIMIT 5,5 檢索6到10
SELECT * FROM TABLE LIMIT 5,-1 檢索6到最後一行
結果排序
SELECT * FROM user ORDER BY username,以username的字母順序排列
SELECT * FROM user ORDER BY username,password ,如果username有相同的,那麼username相同的再按password排列,如果username都是唯一,這個時候password不起作用
SELECT * FROM user ORDER BY username DESC ,降序排列,默認是升序ASC
SELECT * FROM user e ORDER BY username DESC,password 此時按照username降序排列,如果username相同的行按照password升序排列
SELECT * FROM user ORDER BY username LIMIT 1 混合使用ORDER 和 LIMIT
SELECT * FROM user WHERE username ="jiajun" ORDER BY password 這裡ORDER要在WHERE 之後
過濾數據
SELECT * FROM user WHERE username <> "jiajun" 不等於 和 != 效果相同
SELECT * FROM user WHERE id BETWEEN 1 AND 10 檢索1到10的記錄,包括1和10
SELECT * FROM user WHERE username IS NULL 查找列無值的行,這裡的無值不等於 值為0 和 空字元串
SELECT * FROM user WHERE id=1 OR username="jiajun" AND password="666" 執行順序是 WHERE id=1 OR (username="jiajun" AND password="666")AND的優先順序更高,但是建議添加括弧
SELECT * FROM user WHERE id IN (1,2) 效果和SELECT * FROM user WHERE id=1 OR id =2 如果要實現這種效果,建議使用第一種,語法更清晰,而且一般執行更快
SELECT * FROM user WHERE id NOT IN (1,2)
通配符過濾
SELECT * FROM user WHERE username LIKE "jia%" ,匹配JIA開頭的username,不管後面有多少字元,jia和jiajun都是匹配,可以配置MYSQL是否區份大小寫,如果區份大小寫,也就是jiajun是不匹配的 。注意LIKE "%"是不能匹配值為NULL的
SELECT * FROM user WHERE username LIKE "jia_" , _只能匹配一個字元,也就是匹配jiaj不匹配jiajun
通配符匹配是效率不高,如果其他方式能有相同的效果,建議用其他效果,並且最好不要將通配符放在開始處,因為這樣是很慢的
正則表達式過濾
SELECT * FROM user WHERE username REGEXP ".IA" ,正則表達式, . 匹配任意一個字元
SELECT * FROM user WHERE username REGEXP "jun" 匹配包含jun的username,"jiajun"和"jun"都匹配
SELECT * FROM user WHERE username REGEXP "jiajun|jiaj" ,"|"和"OR" 效果一樣
SELECT * FROM user WHERE username REGEXP 『[123]jun』 ,匹配包含"1jun"或者"2jun"或者"3jun"
[^123]123除外
[1-9],[A-Z],用"-"表示範圍
匹配特殊字元(比如"."和"_")可以採用""轉義,比如匹配有"."的可以這樣表示"."
拼接欄位
SELECT CONCAT(username,"C",password,")") FROM user,將兩個欄位拼接到一起,查詢結果是一列,行值 jiajun(666)
SELECT CONCAT(username,"C",password,")") AS up FROM user,為拼接後的一列設置欄位名
算數運算
SELECT price*count AS all FROM TABLE 將單價和數量相乘,列名為all
函數
函數可移植性不高,也就是一個函數支持一個DBMS,但不一定支持另一個DBMS,比如支持MYSQL而不支持ORACLE。所以使用函數的要寫好注釋。
文本處理函數
LENGTH() 返回串長度
LOWER()將串轉換為小寫
UPPER()將串轉換為大寫
LTRIM()去掉串左邊的空格
RTRIM()去掉串右邊的空格
日期和時間處理函數
CURDATE() 2017-07-22
CURTIME()16:20:19
NOW() 2017-07-22 16:20:19
DATE() 返回日期的日期部分 SELECT DATE(NOW()) 2017-07-22
DATE_FORMAT() 返回格式化的日期和時間串
HOUR() 返回一個時間的小時部分
MINUTE() 返回一個時間的分鐘部分
MONTH() 返回一個日期的月份部分
NOW() 返回當前日期和時間
SECOND() 返回一個時間的秒部分
TIME() 返回一個日期時間的時間部分
YEAR() 返回一個日期的年份部分
文章來自博客園
「勤工儉學計劃」,給你一個真正0元學習IT技術的機會!
http://www.ujiuye.com/zt/qgjx/?wt.bd=fq37300j
找工作太難?不是你不行,我們來幫你!
http://www.ujiuye.com/zt/jyfc/?wt.bd=fq37300j
交流群:345648424
※優就業帶你參觀360——簡單可信賴、為人民服務
※Nancy基於JwtBearer認證的使用與實現
※JVM垃圾回收演算法及回收器詳解
※SLAM中的優化理論(一)——線性最小二乘
TAG:IT優就業 |
※SEO基礎知識
※Python基礎知識系列——字典
※Python基礎知識系列——函數
※Python基礎知識系列——字元串
※Python基礎知識系列——列表和元組
※外研版七年級下冊知識點整理 MODULE 7 My Past Life
※TCP/IP知識
※Alevel,AP,IB和BC知識貼
※RNA-seq測序基本知識
※四方框框|ANTONELLA ARISMENDI~網路時代意象中的古代知識融合
※從單片機轉ARM,ARM架構基礎知識小結
※Hreflang標籤知識與多國語言網站SEO優化
※FFMPEG小白之視音頻基礎知識
※HTTP Header小知識
※OpenStack關鍵技術系列:Libvirt基礎知識
※完美Python入門基礎知識點總結
※固態硬碟SSD知識匯總
※漲知識了!EXO D.O.&WANNA·ONE 朴佑鎮&EXID 率智等idol竟然都有印第安酒窩!
※Android系統小知識
※長知識:SWI、DWI、DTI技術聯合評價早產兒腦損傷和預後