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

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

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

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

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

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

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

數(shù)據(jù)data锯七,數(shù)據(jù)庫database链快,數(shù)據(jù)庫管理系統(tǒng)dbms,表(數(shù)據(jù)表)table起胰,字段field久又,行row,列column效五,記錄record

數(shù)據(jù)庫系統(tǒng)基本結(jié)構(gòu)
數(shù)據(jù)庫關(guān)系結(jié)構(gòu)
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. 單行注釋:#注釋內(nèi)容
  2. 單行注釋: -- 注釋內(nèi)容
  3. 多行注釋:/注釋內(nèi)容/

大小寫問題
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語句")
    返回的結(jié)果通常分兩種情況進行處理
    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ù)從結(jié)果中取出數(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ù)庫相關(guān)語句

選擇進入某數(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個有關(guān)"選項"的文本存儲形式
enum:枚舉,類似于OC的枚舉.名稱 enum('選項1','選項2','選項3','選項4'),本質(zhì)存儲的其實是數(shù)字
set:專門用于存儲類型表單中的"多選項"的值喉祭,名稱 set('選項1','選項2','選項3','選項4'),本質(zhì)存儲的數(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] 表名(字段列表,[約束或索引列表]) [表選項列表]
字段列表如果是多個鹉究,中間用逗號隔開
字段基本形式:字段名 類型[字段修飾屬性]

表選項:
表選項就是對一個表的有關(guān)屬性的設定,通常都不需要踪宠。如果不設定自赔,有默認值。

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

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

  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ù)的"關(guān)鍵值",大多數(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í)行結(jié)果

索引:
索引是一個"內(nèi)置表",該表的數(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
顯示表結(jié)構(gòu):desc 表名
顯示表的創(chuàng)建語句:show create table 表名
從已有表復制表結(jié)構(gòu):create table [if no exist] 新表名 like 原表名

視圖

視圖可以看做是一個"臨時存儲的數(shù)據(jù)所構(gòu)成的表"(非真實表)知纷,其實本質(zhì)上只是一個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···
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末剩檀,一起剝皮案震驚了整個濱河市憋沿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沪猴,老刑警劉巖辐啄,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異运嗜,居然都是意外死亡壶辜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門担租,熙熙樓的掌柜王于貴愁眉苦臉地迎上來砸民,“玉大人,你說我怎么就攤上這事翁锡〉嘟” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵昂秃,是天一觀的道長冗荸。 經(jīng)常有香客問我承璃,道長,這世上最難降的妖魔是什么蚌本? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任盔粹,我火速辦了婚禮,結(jié)果婚禮上程癌,老公的妹妹穿的比我還像新娘舷嗡。我一直安慰自己,他們只是感情好嵌莉,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布进萄。 她就那樣靜靜地躺著,像睡著了一般锐峭。 火紅的嫁衣襯著肌膚如雪中鼠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天沿癞,我揣著相機與錄音援雇,去河邊找鬼。 笑死椎扬,一個胖子當著我的面吹牛惫搏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蚕涤,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼筐赔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了揖铜?” 一聲冷哼從身側(cè)響起茴丰,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛮位,沒想到半個月后较沪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鳞绕,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡失仁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了们何。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萄焦。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拂封,到底是詐尸還是另有隱情茬射,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布冒签,位于F島的核電站在抛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏萧恕。R本人自食惡果不足惜刚梭,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望票唆。 院中可真熱鬧朴读,春花似錦、人聲如沸走趋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽簿煌。三九已至氮唯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姨伟,已是汗流浹背您觉。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留授滓,地道東北人琳水。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像般堆,于是被迫代替她去往敵國和親在孝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容