《MySQL系列(一)——基礎知識大總結》要點:
本文介紹了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
維易PHP培訓學院每天發布《MySQL系列(一)——基礎知識大總結》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/7120.html