MySQL入門指南(一):MySQL介紹、數(shù)據(jù)庫創(chuàng)建、表的增刪改、視圖

數(shù)據(jù)庫介紹

數(shù)據(jù)庫的分類
  1. 層次數(shù)據(jù)庫
    類似xml的文本結構。
  2. 網(wǎng)狀數(shù)據(jù)庫
  3. 關系數(shù)據(jù)庫
    MySQL,SQL server,oracle等,下面主要介紹它
關系數(shù)據(jù)庫

SQL: Struct Query Language(結構化查詢語言),它是一個"國際化標準"。各種關系數(shù)據(jù)庫都是實現(xiàn)該標準的一種產(chǎn)品。

數(shù)據(jù)庫本質和表現(xiàn)

本質:將大量的"數(shù)據(jù)值"通過數(shù)據(jù)庫管理系統(tǒng)進行復雜但邏輯結構清晰有序的存儲,效率高的驚人。
表現(xiàn):存儲在指定文件夾中。

關系數(shù)據(jù)庫常見術語

數(shù)據(jù)data,數(shù)據(jù)庫database,數(shù)據(jù)庫管理系統(tǒng)dbms,表(數(shù)據(jù)表)table,字段field,行row,列column,記錄record

數(shù)據(jù)庫系統(tǒng)基本結構
數(shù)據(jù)庫關系結構
MySQL系統(tǒng)級操作

注意:如果使用MAMP集成環(huán)境,并希望在終端操作數(shù)據(jù)庫,請先配置靜態(tài)環(huán)境變量,在根目錄下找到.profile(沒有時創(chuàng)建),之后打開文件復制這句話export PATH=/opt/local/bin:/opt/local/sbin:/Applications/MAMP/Library/bin:$PATH保存,重啟服務

登錄命令:mysql -h服務器地址 -u登錄名 -P端口號 -p密碼

登錄命令

備份數(shù)據(jù)庫:mysqldump -h服務器地址 -u登錄名 -p密碼 要保存的數(shù)據(jù)庫名>路徑+要保存為的文件名

恢復數(shù)據(jù)庫:mysql -h服務器地址 -u登錄名 -p密碼 要恢復的數(shù)據(jù)庫名<數(shù)據(jù)庫路徑+文件名

基礎語法規(guī)定

注釋:

  1. 單行注釋:#注釋內容
  2. 單行注釋: -- 注釋內容
  3. 多行注釋:/注釋內容/

大小寫問題
MySQL語言本身不區(qū)分大小寫,但在某些區(qū)分大小寫的操作系統(tǒng)中,數(shù)據(jù)庫名和表名會區(qū)分大小寫。推薦使用"下劃線命名法":單詞都用小寫字母,單詞之間用"_"分開。

php中操作數(shù)據(jù)庫的基本代碼和流程

基本流程
  1. 連接數(shù)據(jù)庫:$mylink = mysqli_connect("localhost",'root','root',"tempdb3");
    坑:mysql_connect在 PHP 5.5.0 起已廢棄,并在將來會被移除。應使用 MySQLi 或 PDO_MySQL 擴展來替換之。
  2. 執(zhí)行sql命令:$result = $mylink->query("幾乎任何sql語句")
    返回的結果通常分兩種情況進行處理
    2.1 如果無返回數(shù)據(jù)的語句
    2.1.1 如果$result為true,表示執(zhí)行成功
    2.1.2 如果$result為false,表示執(zhí)行失敗
    2.2 如果是有返回數(shù)據(jù)的語句
    2.2.1 如果$result為false,表示執(zhí)行失敗
    2.2.2 否則,執(zhí)行成功,需要繼續(xù)從結果中取出數(shù)據(jù)并顯示出來

數(shù)據(jù)定義語句

創(chuàng)建數(shù)據(jù)庫

creat database [if not exists] 數(shù)據(jù)庫名 [charset 字符集] [collate 字符排序規(guī)則];
說明:

  1. if not exists:用于判斷是否存在該數(shù)據(jù)庫名,如果存在則不執(zhí)行該語句。
  2. 字符集:數(shù)據(jù)存儲到數(shù)據(jù)庫中時用的編碼名稱
  3. 字符排序規(guī)則通常不設置,即使用默認排序規(guī)則
修改數(shù)據(jù)庫

alter database 數(shù)據(jù)庫名 character set =新字符集 collate=新校對集;

刪除數(shù)據(jù)庫

drop database 數(shù)據(jù)庫名;

其他數(shù)據(jù)庫相關語句

選擇進入某數(shù)據(jù)庫:use 數(shù)據(jù)庫名;
顯示所有數(shù)據(jù)庫: show datebases;
顯示某個數(shù)據(jù)庫的"創(chuàng)建語句":show create database 數(shù)據(jù)庫名

字段類型

字段類型
通用定義形式

定義一個字段的時候的類型的寫法,比如:
creat table tab1 (f1 數(shù)據(jù)類型);

數(shù)據(jù)類型:類型名 [(長度)][unsigned][zerofill]
zerofill:填充0,是指如果一個數(shù)字的長度不夠指定長度的時候可以在左邊補充0,如果用zerofill則是無符號類型(表示范圍正數(shù)*2,無負數(shù))

整數(shù)類型
整數(shù)類型表示范圍
小數(shù)類型

float:非精確
double:非精確
decimal:定點型,精確數(shù),需要設定長度,形式為:decimal(總長,小數(shù)位數(shù))

時間日期類型

date:年月日
time:時分秒
datetime:年月日時分秒
year:可以是4位數(shù)字或4位純數(shù)字字符串,也可以是2位整數(shù)或2位純數(shù)字字符串
timetamp:時間戳
寫入數(shù)據(jù)庫時,直接的時間日期數(shù)據(jù),應該用單引號引起來

字符串類型

varchar:可變長度字符串類型,最多能存儲2^16個字節(jié),設定長度為最長長度,不足不用補空格
char:定長字符串類型,最多存儲256個字符,不足補空格,溢出的無法存儲

2個二進制文本
binary:類似char,存文本的二進制數(shù)據(jù)
varbinary:類似varchar,存文本的二進制數(shù)據(jù)

2個大文本
text:存儲超大文本,varchar不夠用它,與char和varchar效率低
blob:可以存儲超大二進制數(shù)據(jù),用于存儲圖片這種二進制數(shù)據(jù)

2個有關"選項"的文本存儲形式
enum:枚舉,類似于OC的枚舉.名稱 enum('選項1','選項2','選項3','選項4'),本質存儲的其實是數(shù)字
set:專門用于存儲類型表單中的"多選項"的值,名稱 set('選項1','選項2','選項3','選項4'),本質存儲的數(shù)字是1,2,4,8,16···這樣的數(shù)字,即每個選項代表二進制中對應的哪一位1,如果插入非2次方的數(shù)據(jù),例如7,則為1+2+4,選項1,選項2,選項3。

表定義語句

創(chuàng)建表

基本形式:
create table [if not exists] 表名(字段列表,[約束或索引列表]) [表選項列表]
字段列表如果是多個,中間用逗號隔開
字段基本形式:字段名 類型[字段修飾屬性]

表選項:
表選項就是對一個表的有關屬性的設定,通常都不需要。如果不設定,有默認值。

有以下幾個可用:
comment = '表的注釋';

charset = 字符編碼名稱;//跟數(shù)據(jù)的字段編碼設定一個意思。
字符編碼設定的范圍及繼承關系:

  1. 系統(tǒng)級設定:安裝時確定了
  2. 庫級設定:建庫時設定
  3. 表級設定:charset就是表級設定
  4. 字段級設定:作為字段屬性出現(xiàn)

auto_increment = 起始整數(shù);//自增長類型值初值,默認是1

engine = "表的存儲引擎名";

  1. 存儲引擎就是將數(shù)據(jù)存入硬盤的方式方法


    存儲引擎對比

字段屬性:

not null:不為空,表示不能為null,不寫默認為空
auto_increment:int類型字段的值可以"自增長",即其值無須"寫入",而會自動獲得并添加
primary key:主鍵,一個表只能有一個主鍵,是唯一鍵的強化,不能重復,并且不能使用null,并且可以作為任意一行數(shù)據(jù)的"關鍵值",大多數(shù)表使用id并自增長類型作為主鍵
unique key:唯一鍵,該字段所有行行的值不可以重復
default:一個字段在沒有插入數(shù)據(jù)的時候自動使用值
comment:字段注釋

//范例
create table tab1(
id int auto_increment primary key not null,
f1 float unique,
f2 decimal(20,5) default 12.3,
f4 varchar(20) comment'這是一個注釋'
);
執(zhí)行結果

索引:
索引是一個"內置表",該表的數(shù)據(jù)是對某個真是表的某個字段的數(shù)據(jù)做了"排序"之后的存儲形式。
作用:極大提高表查找速度,效率類似二分查找,但會降低增刪改的速度,對創(chuàng)建表來說,建立索引非常簡單:key(字段1,字段2····)unique key(字段1,字段2····)primary key(字段1,字段2····)fulltext(字段1,字段2····)

//范例
create table tab2(
id int auto_increment not null,
f1 float,
f2 decimal(20,5) default 12.3,
f4 varchar(20) comment'這是一個注釋',
primary key(id),/*其實和寫在字段上作為屬性意義一樣,但是出現(xiàn)在這里叫做主鍵索引,出現(xiàn)的場合不同叫法不同而已*/
unique key(f1),/*同上*/
key(f2)
);

約束:
約束是一種限定數(shù)據(jù)以符合某種要求的形式(機制)

約束主要有:
primary key:主鍵索引,主鍵屬性,主鍵約束其實作用一樣
unique key:唯一索引,唯一屬性,唯一索引其實作用一樣
foreign key:外鍵約束,此值其實是其他表的主鍵,所以不能修改。foreign key (字段名1,字段名2,···)references 表名2(字段名1,字段名2,···)

外鍵圖示

修改表

通常創(chuàng)建表做的事,修改表也能做到,大體來說可以做到:

  1. 增刪改字段
  2. 增刪索引
  3. 增刪約束
  4. 修改表選項

詳細操作看手冊

修改表的基本形式
alter table 表名 修改語句;
刪除表
刪除表的基本形式
drop table [if exists] 表名;
標的其他操作

顯示所有表:show tables
顯示表結構:desc 表名
顯示表的創(chuàng)建語句:show create table 表名
從已有表復制表結構:create table [if no exist] 新表名 like 原表名

視圖

視圖可以看做是一個"臨時存儲的數(shù)據(jù)所構成的表"(非真實表),其實本質上只是一個select語句,只是將該select語句(通常比較復雜)進行一個"包裝",并設定了一個名字,之后把這個名字當做一個表來使用。如果一個select 語句比較復雜,又在多個頁面需要使用它,則可以將它做成一個視圖,方便使用。如果某個數(shù)據(jù)表中的某些字段不想給別人看(不同公司之間的數(shù)據(jù)業(yè)務交換的時候),但有需要給別人看的時候,則可以將它做成一個視圖。

視圖創(chuàng)建形式
/**創(chuàng)建*/
create view 視圖名[(列名1,列名2,···)] as 一條復雜的select語句;
/*修改*/
alter view 視圖名 [(列名1,列名2,···)] as select 語句;
/*刪除*/
drop view [if exists] 視圖名;
視圖的使用

其實就是當做一個查詢表來用(通常只用于select)

select * from 視圖名 where 條件 order by···
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,565評論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,115評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,577評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,514評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,234評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,621評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,641評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,822評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,380評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,128評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,319評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,879評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,548評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,970評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,229評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,048評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,285評論 2 376

推薦閱讀更多精彩內容