MySql資料庫 基礎理論(一)
1 . 什麼是資料庫
資料庫是按照資料結構來組織、儲存和管理資料的倉庫
2. 常見資料庫:
Oracle
DB2
MySql
SQL Server
3. sql是用來操作資料庫的語言
4. 資料庫分為關係型資料庫和非關係型資料庫
5. 資料庫的專業術語RDBMS:
表 table
資料庫 database
列 field
行 row
主鍵
外來鍵
索引
6 . mysql是一個關係型資料庫管理系統,是開源的,支援大型的資料庫,使用標準的sql資料語言形式,可以支援多種程式語言
7 . 獲取更新linux列表語句:sudo apt update
8 . 更新linux語句:sudo apt upgrade
9 . mysql安裝(linux)語句:
sudo apt-get install mysql-server mysql-client
10.連結資料庫語句:mysql -uroot -p
11.建立資料庫語句:create database 資料庫名稱 charset=utf8
12.進入資料庫語句:use 資料庫名稱
13.檢視資料庫語句:show database
14.檢視資料庫當中有多少張表:show tables
15.刪除資料庫:drop database 資料庫名稱
16.建立表的語句:create table +表名字(欄位名稱 資料型別)
17.新增一列語句:alter table 表名 add 列名 資料型別
18.查看錶的欄位結構:desc 表名
19.修改一個表的欄位型別(修改表中一列的資料型別):alter table 表名 modify 欄位名 資料型別
20.刪除一列語句:alter table 表名 drop 列名
21.修改表名語句:rename table 原表名 to 新表名
22.查看錶的建立細節語句:show create table 表名
23.修改表的字符集語句:alter table 表名 charset=字符集
24.修改表的列名語句:alter table 表名 change 原列名 新列名 資料型別
25.刪除表的語句:drop table +要刪除的表的名字
26.刪除資料庫的語句:drop database + 要刪除得資料庫的名字
27.資料庫語言不區分大小寫,要麼全小寫,要麼全大寫
28 資料庫得儲存引擎: MYISAM INNODB(安裝完資料以後得預設引擎) MEMORY(鍵值儲存)
29.sql資料型別:
一、數值型別
二、字串型別
三、日期和時間型別
30.常見資料型別:
Double浮點型,例如double(5,2)表示整數位最多5位,小數位最多2位
Char固定長度字串型別
Varchar可變長度字串型別
Text字串型別
Blob二進位制型別
Date日期值
Time 時間值
Year 年份值
Datetime 日期時間型別
31.在mysql中,字串型別和日期型別都要用單引號括起來。
32.sql功能分類:
DDL:資料定義語言 用來定義資料物件:資料庫、表、列等
DML:資料操作語言 用來操作資料表中的記錄
DQL:資料查詢語言 用來查詢資料
DCL:資料控制語言 用來定義訪問許可權和安全級別
33.儲存引擎分類:資料庫得儲存引擎: MYISAM INNODB(安裝完資料以後得預設引擎) MEMORY(鍵值儲存)
34.查詢表中的所有資料:select * from 表名;
35.查詢特定欄位的資料:select + 要查詢的列名(欄位名) + form +表名
36.要查詢特定的滿足條件的資料:select + 要查詢的列名(欄位名)+from + 表名 + where +條件
37.新增資料的另一種寫法:insert into 表名 values(值1,值2,……)
38.備份資料庫:mysqldump -u root -p
39.插入語句:insert into +表名+欄位名+values(值)
40.插入多條語句:insert into + 表名 +(欄位名)+values(值1),(值2),(值3)……
41.更新資料:update +表名 +set +欄位名=新的內容 where +條件
42.刪除資料:delete from +表名 +要刪除的欄位名 + where +條件
43.刪除全部資料的兩種方法:1.delete from + 表名 2.truncate from +表名
44.注意事項:
列名與列值的型別、個數、順序要一一對應
值不要超出列定義的長度
插入的日期和字元一樣,都使用引號括起來
45.delete與truncate的區別:
Delete刪除表中的資料,表結構還在,刪除後資料還可以找回
Truncate刪除時把表直接drop掉,然後再建立一個同樣的新表,刪除的資料不能找回,執行速度比delete快
46.虛擬結果集:即查詢出來的結果,我們稱之虛擬結果集,存放在記憶體裡面
47. where條件後面:
> 大於
< 小於
<> != 不等於
= 等於
<= 小於等於
>= 大於等於
between…and… 在…和…之間
in 在某個集合裡面
is null 為空
is not null 不為空
and 與,且
or 或
not 非
48.模糊查詢:根據指定的關鍵字進行查詢,使用like關鍵字後跟萬用字元
49.萬用字元:_:任意一個字母
%:任意0-n個字母
50.使用正則表示式查詢:
正則表示式是用某種模式去匹配一類字串的一個方式。正則表示式的查詢能力比萬用字元的查詢能力更強大。在mysql中使用關鍵字regexp來匹配查詢正則表示式
基本語法:欄位名 regexp ‘匹配方式’
51.^ 匹配以特定字元或者字串開頭的記錄
$ 匹配以特定字元或字串結尾的記錄
. 匹配任意字串中任意一個字元,包括回車和換行符
[字元集合] 匹配‘字元集合’中任意一個字元
[^字元集合] 匹配除‘字元集合’以外任意一個字元
S1|S2|S3 匹配S1、S2、S3中的任意一個字串
*匹配多個該符號之前的字元,包括0個或者1個
- 匹配多個該符號之前的字元,包括1個(至少有1個)
字串{N} 匹配字串出現N次
字串{M,N} 匹配字串出現至少M次,最多N次
52.去除重複記錄:select distinct 列名 from 表名;
53.把查詢欄位的結果進行運算,必須都要是數值型:select *, 欄位1+欄位2 from 表名;
54.把查詢欄位的結果進行運算重新命名:select *,欄位1+欄位2 as 名字from 表名
55.列表很多記錄的值為null,因為任何東西與null相加的結果還是null,所以結算結果可能回出現null
56.排序:關鍵詞order by
排序型別(預設是ASC) 升序ASC 從小到大 降序DESC 從大到小
57.聚合函式:對查詢的結果進行統計計算
常用聚合函式:
Count():統計指定列不為null的記錄行數
Max():計算指定列的最大值,如果指定列是字串型別,那麼使用字串排序運算
Min():計算指定列的最小值,如果指定列是字串型別,那麼使用字串排序運算
Sum():計算指定列的數值和,如果指定列型別不是數值型別,那麼計算結果為0
AVG():計算指定列的平均值,如果指定列型別不是數值型別,那麼計算結果為0
58.分組查詢:將查詢結果按照1個或者多個欄位進行分組,欄位值相同的為1組
59.在使用分組時,select後面直接跟著的欄位一般都在出現在group by後
60.group_concat(欄位名)可以作為一個輸出欄位來使用
表示分組之後,分局分組結果,使用group_concat()來放置每一組的某欄位的值的集合
61.將欄位的位置移到某欄位後面:alter table 表名 modify 列名 資料型別 after 列名
62.將表的儲存引擎更改為其他型別:alter table 表名 engine=型別