MariaDB基礎(chǔ)

關(guān)系型數(shù)據(jù)庫

關(guān)系數(shù)據(jù)庫(英語:Relational database)淑际,是創(chuàng)建在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫懦铺,借助于集合代數(shù)數(shù)學概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。現(xiàn)實世界中的各種實體以及實體之間的各種聯(lián)系均用關(guān)系模型來表示。關(guān)系模型是由埃德加·科德于1970年首先提出的,并配合“科德十二定律”∑枞粒現(xiàn)如今雖然對此模型有一些批評意見,但它還是數(shù)據(jù)存儲的傳統(tǒng)標準十电。標準數(shù)據(jù)查詢語言SQL就是一種基于關(guān)系數(shù)據(jù)庫的語言(SQL不是基于關(guān)系數(shù)據(jù)庫的語言)知押,這種語言執(zhí)行對關(guān)系數(shù)據(jù)庫中數(shù)據(jù)的檢索和操作。

關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)鹃骂、關(guān)系操作集合台盯、關(guān)系完整性約束三部分組成。------引自維基百科

MariaDB

MariaDB數(shù)據(jù)庫管理系統(tǒng)是MySQL的一個分支畏线,主要由開源社區(qū)在維護静盅,采用GPL授權(quán)許可。開發(fā)這個分支的原因之一是:甲骨文公司收購了MySQL后象踊,有將MySQL閉源的潛在風險温亲,因此社區(qū)采用分支的方式來避開這個風險。

MariaDB的目的是完全兼容MySQL杯矩,包括API和命令行栈虚,使之能輕松成為MySQL的代替品。在存儲引擎方面史隆,10.0.9版起使用XtraDB(名稱代號為Aria)來代替MySQL的InnoDB魂务。------引自維基百科

MariaDB和MySql的區(qū)別

其實MariaDB和MySql是沒有什么區(qū)別的,在Sun公司被Oracle收購后泌射,按照Oracle的風格MySql是肯定會被閉源的粘姜,考慮到這種情況下所以MySql之父就另開了MariaDB分支。
MariaDB跟MySQL在絕大多數(shù)方面是兼容的熔酷,對于開發(fā)者來說孤紧,幾乎感覺不到任何不同。目前MariaDB是發(fā)展最快的MySQL分支版本拒秘,新版本發(fā)布速度已經(jīng)超過了Oracle官方的MySQL版本号显。
MariaDB 是一個采用Aria存儲引擎的MySQL分支版本,是由原來 MySQL 的作者Michael Widenius創(chuàng)辦的公司所開發(fā)的免費開源的數(shù)據(jù)庫服務器躺酒。

SQL

SQL是一個標準的數(shù)據(jù)庫語言押蚤,是面向集合的描述性非過程化語言。
它功能強羹应,效率高揽碘,簡單易學易維護。SQL語言分為以下四大類:
DDL园匹、DML雳刺、DCL、DQL偎肃。

DDL(數(shù)據(jù)庫定義語言)

用來創(chuàng)建數(shù)據(jù)庫中的各種對象-----表煞烫、視圖、索引累颂、同義詞滞详、聚簇等,常用的命令如create, drop, alter等

  • create:用來創(chuàng)建數(shù)據(jù)庫紊馏,表料饥,索引,視圖等朱监。常用語法:
# 創(chuàng)建數(shù)據(jù)庫:
CREATE DATABASE [IF NOT EXISTS] db_name岸啡;

# 創(chuàng)建表:
CREATE TABLE [IF NOT EXISTS] tbl_name
    (create_definition,...)
    [table_options];
  • drop:用來刪除數(shù)據(jù)庫赫编,表巡蘸,索引奋隶,視圖等。常用語法:
# 刪除數(shù)據(jù)庫
DROP DATABASE [IF EXISTS] db_name悦荒;

# 刪除表
DROP TABLE [IF EXISTS]  tbl_name [, tbl_name] ..唯欣;
  • alter:用來修改數(shù)據(jù)庫,表或者表字段搬味,索引境氢,視圖等信息。常用語法:
# 修改數(shù)據(jù)庫信息
ALTER DATABASE [db_name] [DEFAULT] CHARACTER SET [=] charset_name碰纬;

# 修改表的信息:
ALTER TABLE tbl_name [alter_specification [, alter_specification] ...];

#alter_specification可以是一下內(nèi)容:
alter_specification:
    ADD [COLUMN] col_name column_definition
        [FIRST | AFTER col_name ]
|   ADD [CONSTRAINT] PRIMARY KEY
|   ALTER [COLUMN] col_name {SET DEFAULT value | DROP DEFAULT}
|   DROP [COLUMN] col_name
|   DROP PRIMARY KEY
|   CHANGE [COLUMN] old_col_name new_col_name column_definition
        [FIRST|AFTER col_name]
|   MODIFY [COLUMN] col_name column_definition
        [FIRST | AFTER col_name];

DML(數(shù)據(jù)庫操縱語言)

DML是對數(shù)據(jù)中的表數(shù)據(jù)的可以執(zhí)行的操作的語言萍聊。數(shù)據(jù)操作指令包括:update、insert悦析、delete寿桨。

  • insert:向指定的數(shù)據(jù)表中插入數(shù)據(jù),可以是一條或者多條數(shù)據(jù)她按,語法:
INSERT [INTO] tbl_name [(col_name,...)]
    {VALUES | VALUE} (value1),(value2)...;
  • update:用來修改表中的數(shù)據(jù)牛隅。語法:
UPDATE  table_name
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition];
  • delete:刪除表中的數(shù)據(jù)。語法:
DELETE [col_name]  FROM tbl_name
    [WHERE where_condition];

注意:在更新和刪除表里面的數(shù)據(jù)時一定要使用where字句酌泰,否則默認是操作所有行媒佣,在delete中語句中如果指定col_name則是刪除該字段的數(shù)據(jù)。

DCL(數(shù)據(jù)庫控制語言)

DCL用來授予或回收訪問數(shù)據(jù)庫的某種特權(quán)陵刹,并控制數(shù)據(jù)庫操縱事務發(fā)生的時間及效果默伍,對數(shù)據(jù)庫實行監(jiān)視等。對事務的處理主要是rollback和commit衰琐。主要還是對權(quán)限的控制也糊。語法如下:

GRANT privileges ON database.table TO 'username'@'host' IDENTIFIED BY('password');

說明:database,table用*表示所有,host用%表示任意參數(shù)。

DQL(數(shù)據(jù)庫查詢語言)

數(shù)據(jù)查詢語言DQL基本結(jié)構(gòu)是由SELECT子句羡宙,F(xiàn)ROM子句狸剃,WHERE
子句組成。語法:

SELECT
    [ALL | DISTINCT  ]  select_expr1 [, select_expr2 ...]
    [FROM table_references
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
      [ASC | DESC] [HAVING where_condition]]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]

這里只是初略的介紹一下sql語句的一些基礎(chǔ)用法狗热,其實在sql中其實最重要的是DQL語句中的一些高級應用钞馁。如子查詢,復合查詢等匿刮。這將在后邊的文章里面介紹僧凰。

練習:

學生選課系統(tǒng):

  1. 創(chuàng)建學生選課系統(tǒng)
  2. 切換數(shù)據(jù)庫
  3. 創(chuàng)建學生表 TbStudent,主鍵stuid 熟丸,姓名stuname训措,性別stusex,生日stubirth,電話stutel绩鸣,住址stuaddr怀大,照片stuphoto(以二進制存)
  4. 創(chuàng)建課程表TbCourse
    主鍵cosid, 班級名稱cosname呀闻,學分coscredit叉寂,課程描述cosintro
  5. 學生選課記錄表TbSC
    主鍵scid,學生外鍵sid 总珠,班級外鍵cid,創(chuàng)建日期scdate勘纯, 分數(shù)score

代碼如下:

# 創(chuàng)建SCC數(shù)據(jù)庫,默認字符集為utf-8:
create database if not exists SCC default charset utf8;

use SCC;

#創(chuàng)建tbstudent學生表,默認字符集為utf-8颁井,存儲引擎為innodb:
create table if not exists tbstudent(
stuid int(15) not null primary key,
stuname varchar(20) not null,
stusex tinyint(1) default 1,
stubirth datetime,
stutel varchar(11),
stuaddr varchar(255),
stuphoto longblob
)engine innodb default charset utf8;

# 創(chuàng)建tbcourse課程表津畸,默認字符集為utf-8,存儲引擎為innodb:
create table if not exists tbcourse(
cosid int not null primary key,
cosname varchar(20) not null,
coscredit int not null,
cosintro varchar(200)
)engine innodb default charset utf8;

#創(chuàng)建tbsc選課記錄表堤结,默認字符集為utf-8唆迁,存儲引擎為innodb:
create table if not exists tbsc(
scid int not null primary key auto_increment,
sid int not null,
cid int not null,
scdate datetime not null,
score decimal(3,1)
)engine innodb default charset utf8;

# 為三張表創(chuàng)建外鍵約束:
aler table tbsc add constrait fs_sid foreign key(sid) references tbstudent(stuid) on delete cascade on update cascade;
aler table tbsc add constrait fs_cid foreign key(cid) references tbsourse(cosid) on delete set null on update cascade

# 向?qū)W生表中插入數(shù)據(jù):
insert into tbstudent (stuid, stuname, stusex, stubirth, stuaddr, stuphoto) values
(1001, '張三豐', default, '1978-1-1', '成都市一環(huán)路西二段17號', null);
insert into tbstudent (stuid, stuname,stubirth) values
(1002, '郭靖', '1980-2-2');
insert into tbstudent (stuid, stuname, stusex, stubirth, stuaddr) values
(1003, '黃蓉', 0, '1982-3-3', '成都市二環(huán)路南四段123號');
insert into tbstudent (stuid, stuname, stusex, stubirth, stuaddr, stuphoto) values 
(1004, '張無忌', 1, '990-4-4', null, null),
(1005, '丘處機', 1, '1983-5-5', '北京市還定去寶勝北里西區(qū)28號', null),
(1006, '王處一', 1, '1985-6-6', '深圳市寶安區(qū)寶安大道5010號',null),
(1007, '劉處玄', 1, '1987-7-7', '鄭州市金水區(qū)緯五路21號', null),
(1008, '孫不二', 0, '1989-8-8', '武漢市光谷大道61號', null),
(1009, '平一指', 1, '1992-9-9', '西安市雁塔區(qū)高新六路52號', null),
(1010, '老不死', 1, '1993-10-10', '廣州市天河區(qū)元崗路310號', null),
(1011, '王大錘', 0, '1994-11-11', null, null),
(1012, '隔壁老王', 1, '1995-12-12', null, null),
(1013, '郭嘯天', 1, '1977-10-25', null, null);

# 刪除學生表中id為1004的學生信息:
delete from tbstudent where stuid=1004;

# 更新學生表中id為1002的學生的信息:
update tbstudent set stubirth='1980-12-12',stuaddr='上海市寶山區(qū)同濟支路199號' where stuid=1002;

# 向課程標準插入數(shù)據(jù)
insert into tbcourse values 
(1111, 'C語言程序設(shè)計', 3,'大神級講師教授需要搶座'),
(2222, 'Java程序設(shè)計', 3, null),
(3333, '數(shù)據(jù)庫概論', 2, null),
(4444, '操作系統(tǒng)原理', 4, null);

# 向?qū)W生選課記錄表中插入數(shù)據(jù):
insert into tbsc (sid, cid, scdate, score) values
(1001, 1111, '2016-9-1', 95),
(1002, 1111, '2016-9-1', 94),
(1001, 2222, now(), null),
(1001, 3333, '2017-3-1', 85),
(1001, 4444, now(), null),
(1002, 4444, now(), null),
(1003, 2222, now(), null),
(1003, 3333, now(), null),
(1005, 2222, now(), null),
(1006, 1111, now(), null),
(1006, 2222, '2017-3-1', 80),
(1006, 3333, now(), null),
(1006, 4444, now(), null),
(1007, 1111, '2016-9-1', null),
(1007, 3333, now(), null),
(1007, 4444, now(), null),
(1008, 2222, now(), null),
(1010, 1111, now(), null);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市竞穷,隨后出現(xiàn)的幾起案子唐责,更是在濱河造成了極大的恐慌,老刑警劉巖瘾带,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鼠哥,死亡現(xiàn)場離奇詭異,居然都是意外死亡看政,警方通過查閱死者的電腦和手機朴恳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來允蚣,“玉大人于颖,你說我怎么就攤上這事∪峦茫” “怎么了森渐?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長谴垫。 經(jīng)常有香客問我章母,道長,這世上最難降的妖魔是什么翩剪? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任乳怎,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蚪缀。我一直安慰自己秫逝,他們只是感情好,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布询枚。 她就那樣靜靜地躺著违帆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪金蜀。 梳的紋絲不亂的頭發(fā)上刷后,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機與錄音渊抄,去河邊找鬼尝胆。 笑死,一個胖子當著我的面吹牛护桦,可吹牛的內(nèi)容都是我干的含衔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼二庵,長吁一口氣:“原來是場噩夢啊……” “哼贪染!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起催享,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤杭隙,失蹤者是張志新(化名)和其女友劉穎因妙,沒想到半個月后寺渗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡兰迫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年汁果,在試婚紗的時候發(fā)現(xiàn)自己被綠了涡拘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡据德,死狀恐怖鳄乏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情棘利,我是刑警寧澤橱野,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站善玫,受9級特大地震影響水援,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一蜗元、第九天 我趴在偏房一處隱蔽的房頂上張望或渤。 院中可真熱鬧,春花似錦奕扣、人聲如沸薪鹦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽池磁。三九已至,卻和暖如春楷兽,著一層夾襖步出監(jiān)牢的瞬間框仔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工拄养, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人银舱。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓瘪匿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親寻馏。 傳聞我的和親對象是個殘疾皇子棋弥,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

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

  • Lamp之MariaDB 數(shù)據(jù)庫結(jié)構(gòu)模型分類 1、層次模型 2诚欠、網(wǎng)狀模型 3顽染、關(guān)系模型 關(guān)系模型的組成部分 二維關(guān)...
    魏鎮(zhèn)坪閱讀 7,275評論 0 2
  • 轉(zhuǎn) # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    呂品?閱讀 9,709評論 0 44
  • 數(shù)據(jù)庫簡介關(guān)系型數(shù)據(jù)庫MySQL安裝和使用SQL語言 一、數(shù)據(jù)庫簡介 (一)數(shù)據(jù)庫的發(fā)展 文件系統(tǒng):磁盤文件存儲數(shù)...
    哈嘍別樣閱讀 436評論 0 1
  • 倏忽間走到了23轰绵。黃粱一夢粉寞,卻也尚未驚慌失措。16歲前莫名覺得自己過不了20左腔,如今已然飛逝了七年唧垦。 去年今日。畢業(yè)...
    欖仁小姐寫字的地方閱讀 537評論 3 2
  • 秀婷 中周進行到了第二天 你已經(jīng)精疲力盡了 兩天來 各種狀態(tài)都活現(xiàn)出來了 哭哭笑笑 打打鬧鬧 都來了 真是佩服你 ...
    洪秀婷閱讀 105評論 0 0