【mysql】mysql基礎操作

這篇也是大三時候寫到個人博客的,搬運過來。

今天從圖書館借了《mysql必知必會》這本書,之前寫網頁的時候用到過mysql,慚愧的

是好久都沒有碰數據庫了,想把mysql的一些基本知識系統化的記錄下來,也就是做個

筆記,能夠隨用隨查。另外,因爲插入圖片加載比較慢,所以,我就只寫語句+註釋了。

一、使用mysql

至於使用之前的準備工作就不講了,自己去查資料安裝mysql就好了,很簡單的。

mysql語句不區大小寫,因爲剛學時候比較習慣小寫,所以文章中均用了小寫。

對列名錶名等小寫,對關鍵字大寫是比較標準的,便於調試。

show database; 顯示當前用戶所有的數據庫名稱。
use test;使用test數據庫,執行成功會顯示 test changed
show tables; 顯示此數據庫的列表信息。
show students from test;顯示test數據庫中students表的信息。 =describe students;
show status;用於顯示廣泛服務器信息
show create database和show creat table分別用來顯示創建特定數據庫或表的mysql語句
show errors和show warnings用來顯示服務器錯誤或警告的消息。

更多show的語句請 自行 help show
二、檢索數據

檢索單個列:select name from students;從students表中檢索所有人的姓名。
select後多個列名可用逗號隔開,最後一個不要加。
檢索所有列用表示所有的。
對檢索的信息中去重,比如有個products表中產品所有的供應商vend_id,
在你輸入select vend_id from prodects;的時候,會出現所有產品的供應商,肯定有重複的。
這時候可以用distinct去重告訴mysql只返回不同的值。
select distinct vend_id from products;
x限制結果:limit
定義返回不多於五行: select name from students limit 5;
如果要檢索下五行可以用limit定義開始的行數和要檢索的行數:
select name from student limit 5,5;
特別注意:行0檢索出來是第一行,而行一檢索出來是第二行
在行數不夠時會檢索出它的最多行。
使用完全限定的表名:select students.name from test.student;
(假定students在test數據庫中)

三、順序檢索數據

排序數據:order by 子句
SELECT name from students order by name;
在這裏,order by後面也可以用非檢索數據
按多個列排序 select id,price,name from products order by price name;
首先按價格排序,然後按名稱排序。
指定排序方向:默認升序(ASC),降序用DESC
select id,price,name from products order by price DESC;
根據價格降序排列。
select id,price,name from products order by price DESC,name;
根據價格降序排列,然後再對產品名稱排序。
配合limit和order by 可以找出一個列中最低值,比如查找最便宜的商品:
select id,price,name from products order by price DESC limit 1;

四、過濾數據

使用where子句:select name peice from products where price = 2.50
空值檢查:where IS NULL
另外還有and、or 就是與、非了,不說了 浪費時間啊
有點打累了,一邊看一邊整理真浪費時間。還是這麼基礎都會的,真不知道我是爲了啥。
IN指定條件範圍:WHERE id IN (100,200)
NOT否定後面跟的關鍵字:NOT IN (100,200)
用通配符過濾:LIKE、%、_
WHERE name LIKE ‘ja%’ 找以ja開頭的人名。ja區分大小寫
通配符可以有多個,%ace%,a%b等。
在通配符通配的時候,尾空格可能會影響通配結果,
例如‘anvil ’在where name like %anvil 條件下就無法通配上
解決這個問題的方法就是用函數去掉首尾空格就好了。
另外還有下劃線通配,下劃線與百分號的區別是百分號可以通配若干字符而下劃線只能通配單個字符
雖然通配符很有用也很好用,但是我們還是我們還是不要過度使用,因爲他們搜索的很慢。
在使用通配符的時候儘量不要用在搜索模式的開始處,因爲搜索的會很慢。另外注意位置一定要放對。
用正則表達式搜索數據:REGEXP
正則表達式的關鍵字REGEXP的用法和LIKE一致,但是REGEXP後面跟的是‘正則表達式語句’
關於各類正則表達式我就不總結了,隨用隨查吧,真心不喜歡總結那個。
總之就是REGEXP ‘’ 格式就是了,‘’中間根據需要寫。>>>我好囉嗦啊。

五、創建計算字段

計算字段是什麼呢,大概舉個例子:
1.我的應用程序想要一個公司的地址和電話還有官網這三個在一起的字段
但是這三項是在三個列裏面,我要把他們合在一起然後一起輸出。
2.我需要把名字全部都按大寫輸出,但是數據庫中的數據是大小寫混寫的。
3.需要根據表進行平均數、總數等計算
以上說到的這幾點都需要把數據庫中的數據重新進行格式化。這時候就需要計算字段了。
拼接字段:Concat()
把名稱和城市拼接在一起。因爲名稱和城市是屬於兩個列的。

select Concat(name,’(’country,’)’) from products;
+————-+
|ACME(USA) |
+————-+
之前說的可以清除空格的可以使用RTrim()清除右面所有空格。
LTrim()去掉左面空格。Trim()去點兩邊空格。
使用別名:AS
我們新創建了列,但是它沒有一個名字客戶機無法使用,於是我們用AS爲它取個名字。
select Concat(name,’(’country,’)’) AS newtitle from products;
執行算數計算:假如有個score的表,裏面有Chinese和English兩列成績,我現在需要總分。
select Chinese,English,Chinese+English AS new_score from score;
計算字段大概就是這樣,根據需要可以自己調整。

六、使用數據處理函數

之前我們提過的RTrim()就是屬於函數來處理數據。
現在我們再來記錄更多的函數。如果你用了函數,那麼你要記得寫註釋哦,以便別人能讀懂。
文本處理函數:

Left()返回串左邊字符(右邊Right())
Length()返回串的長度
Locate()找出串的一個子串
Lower()將串轉換爲小寫
LTrim()去掉串左邊的空格(右邊RTrim)
Substring()返回字符串的字符
Upper()將串轉換爲大寫
Soundex()返回串的soundex值
在這裏要解釋一下soundex是什麼。
soundex是一個將任何文本串轉換爲描述其語音表示的字母數字模式算法。
單單這麼說,我也是一頭霧水,但是看了例子就明白了:
假如有個用戶名字叫Lie但是當初記錄的時候輸入成了Lee,我們查找的肯定找不到。
怎麼辦呢,這時候就用到了Soundex()。
select name,age,number from customers where Soundex(name)=Soundex(’Lie’)
日期和時間處理函數:
AddDate() 增加一個日期(天/周等)
AddTime()增加一個時間(時/分等)
CurDate()返回當前日期
Date()返回日期時間的日期部分
DateDiff()計算兩個日期之差
Date_Add()高度靈活的日期計算函數
Date_Format()返回一個格式化的日期或時間串
Day()返回一個日期的天數部分
DayOfWeek()對於一個日期,返回對應的星期幾
Hour()返回一個時間的小時部分
Minute()返回一個時間的分鐘部分
Mounth()返回一個日期的月份部分
Now()返回當前日期和時間
Second()返回一個時間的秒部分
Time()返回一個日期時間的時間部分
Year()返回一個日期的年份部分
數值處理函數
Abs()返回一個數的絕對值
Cos()返回一個角度的餘弦
Exp()返回一個數的指數
Mod()返回除操作的餘數
Pi()返回圓周率
Rand()返回一個隨機數
Sin()返回一個角度的正弦
Sqrt()返回一個數的平方根
Tan()返回一個數的正切

第一部分先總結到這裏吧,我覺得我總結的挺全面了,我是根據《mysql必知必會》這本書的章節來寫的,有的合併到一個大段落裏了,總之我這基本就是濃縮版,還有十幾章,有時間再寫吧,估計大概要再寫兩篇能寫完吧。

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