MySQL數據庫基礎知識

一、基礎概念

關系型數據庫:由二維表及其之間的聯(lián)系所組成的一個數據組織。
非關系型數據庫:以鍵值對存儲抒线,且結構不固定,每一個元組可以有不一樣的字段夕冲,每個元組可以根據需要增加一些自己的鍵值對氮兵,這樣就不會局限于固定的結構,可以減少一些時間和空間的開銷歹鱼。
實體:現實世界中客觀存在并可以被區(qū)別的事物泣栈。比如“一個學生”、“一本書”弥姻、“一門課”等等南片。值得強調的是這里所說的“事物”不僅僅是看得見摸得著的“東西”,它也可以是虛擬的庭敦,比如說“老師與學校的關系”疼进。
屬性:教科書上解釋為:“實體所具有的某一特性”,由此可見秧廉,屬性一開始是個邏輯概念伞广,比如說,“性別”是“人”的一個屬性疼电。在關系數據庫中嚼锄,屬性又是個物理概念,屬性可以看作是“表的一列”澜沟。
元組:表中的一行就是一個元組灾票。
分量:元組的某個屬性值。在一個關系數據庫中茫虽,它是一個操作原子刊苍,即關系數據庫在做任何操作的時候,屬性是“不可分的”濒析。否則就不是關系數據庫了正什。
:表中可以唯一確定一個元組的某個屬性(或者屬性組),如果這樣的碼有不止一個号杏,那么大家都叫候選碼婴氮,我們從候選碼中挑一個出來做老大,它就叫主碼盾致。
全碼:如果一個碼包含了所有的屬性主经,這個碼就是全碼。
主屬性:一個屬性只要在任何一個候選碼中出現過庭惜,這個屬性就是主屬性罩驻。
非主屬性:與上面相反,沒有在任何候選碼中出現過护赊,這個屬性就是非主屬性惠遏。
外碼:一個屬性(或屬性組)砾跃,它不是碼,但是它別的表的碼节吮,它就是外碼抽高。

二、3范式

第一范式:列不可分
第二范式:完全依賴透绩,對于由屬性(A翘骂,B)聯(lián)合構成的主鍵,存在屬性C由A或B一個屬性就能確定渺贤,這就是部分依賴雏胃,C必須由聯(lián)合主鍵確定,才是完全依賴
第三范式:無傳遞依賴志鞍,屬性C依賴屬性B,屬性B依賴與主鍵A方仿,這種傳遞依賴不能存在固棚。
這三個范式都是為了減少數據庫數據冗余,使表結構更加合理仙蚜。

三此洲、SQL

1、顯示數據庫委粉、創(chuàng)建數據庫呜师、打開數據庫

SHOW DATABASES;
CREATE DATABASE 數據庫名稱 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
USE db_name;

2、用戶管理贾节、權限設置

創(chuàng)建用戶
    create user '用戶名'@'IP地址' identified by '密碼';
刪除用戶
    drop user '用戶名'@'IP地址';
修改用戶
    rename user '用戶名'@'IP地址'; to '新用戶名'@'IP地址';;
修改密碼
    set password for '用戶名'@'IP地址' = Password('新密碼')
PS:用戶權限相關數據保存在mysql數據庫的user表中汁汗,所以也可以直接對其進行操作(不建議)

show grants for '用戶'@'IP地址'                  -- 查看權限
grant  權限 on 數據庫.表 to   '用戶'@'IP地址'      -- 授權
revoke 權限 on 數據庫.表 from '用戶'@'IP地址'      -- 取消權限

對于目標數據庫以及內部其他:
            數據庫名.*           數據庫中的所有
            數據庫名.表          指定數據庫中的某張表
            數據庫名.存儲過程     指定數據庫中的存儲過程
            *.*                所有數據庫

            '用戶名'@'IP地址'         用戶只能在改IP下才能訪問
            '用戶名'@'192.168.1.%'   用戶只能在改IP段下才能訪問(通配符%表示任意)
            '用戶名'@'%'             用戶可以再任意IP下訪問(默認IP地址為%)

3、顯示表栗涂、創(chuàng)建表知牌、修改表

show tables;

create table tb_name(
        id int not null auto_increment,
        value int(2) not null default 0,
        name char(10) default 'aa',
        area char(20) default null,
        primary key(id,value),
        unique key(area),
        constraint fk_name foreign key (name) references tb_other(name)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
ps:
外鍵的好處:可以使得兩張表關聯(lián),保證數據的一致性和實現一些級聯(lián)操作斤程;
唯一鍵作用:一是約束作用(constraint)角寸,規(guī)范數據的唯一性,但同時也在這個key上建立了一個唯一索引忿墅;
unique key 與 primary key 區(qū)別:unique key 可為null扁藕;
添加列:
        alter table 表名 add 列名 類型
刪除列:
        alter table 表名 drop column 列名
修改列:
        alter table 表名 modify column 列名 類型;  -- 類型
        alter table 表名 change 原列名 新列名 類型; -- 列名,類型
添加主鍵:
        alter table 表名 add primary key(列名);
刪除主鍵:
        alter table 表名 drop primary key;
        alter table 表名  modify  列名 int, drop primary key;
添加外鍵:
        alter table 從表 add constraint 外鍵名稱(形如:FK_從表_主表) foreign key 從表(外鍵字段) references 主表(主鍵字段);
刪除外鍵:
        alter table 表名 drop foreign key 外鍵名稱
修改默認值:
        ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
刪除默認值:
        ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

清空表:
delete from tb_name;

刪除表:
drop table tb_name;

4疚脐、索引

create index index_birthday on user_info(birthday);
create index index_birthday_and_user_name on user_info(birthday, user_name);
首先亿柑,通過非聚集索引index_birthday查找birthday等于1991-11-1的所有記錄的主鍵ID值。
然后亮曹,通過得到的主鍵ID值執(zhí)行聚集索引查找橄杨,找到主鍵ID值對就的真實數據(數據行)存儲的位置

5秘症、增、刪式矫、改乡摹、查

增:
insert into test(name, age) values('name', 18);
insert into test(name, age) values('name1', 18),('name2', 18);    #一次性插入多個值
insert into test(name, age) select name,age from test1;    #把某張表中的數據插入

刪:
delete from test;
delete from test where id>2 and name='name1';

改:
updata test set name='name2',age=19 where id>12 and name='name1';

查:
select * from test;
select id,name from test where id>2;
select name,age,123 from test;
select name as rname from test;
select * from test where id in (1,3,5,7);
select * from test where id in (select id from test1);
select * from test where id between 5 and 9;    #閉區(qū)間,左右都可以取到
通配符
select * from test where name like 'name%';    %匹配無數字符采转;_匹配一個字符
分頁
select * from test limit 10;    取前十條
select * from test limit 0,10;    表示從0開始聪廉,取0后面的10條
select * from test limit 10 offset 20;    表示從20開始,取20后的前10條
排序
select * from test order by id desc;    id從大到小排列
select * from test order by id asc;    id從小到大排列
select * from test order by age desc, id asc;    多個不同排序
select * from test order by desc limit 10;    取后十條
分組(聚合函數:count,max,min,sum,avg求平均值)
select max(id),id from test group by sex;    如果遇到相同的sex故慈,只會取最大id的
select count(id),id from test group by sex;    計數
select count(id) as count,id form test group by sex;
select count(id),id from test group by sex having count(id)>2;    對于聚合函數結果進行二次篩選時板熊,必須使用having
select
from
where
group by
order by

6、三大數據類型

數值型
int 
float(m,d) 
double(m,d)
m表示總長察绷,d表示小數點后的位數
時間型
datetime
YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59)
字符型
char varchar text

7干签、InnoDB與MyISAM區(qū)別
MyISAM:默認表類型,它是基于傳統(tǒng)的ISAM類型拆撼,ISAM是Indexed Sequential Access Method (有索引的順序訪問方法) 的縮寫容劳,它是存儲記錄和文件的標準方法。不是事務安全的闸度,而且不支持外鍵竭贩,如果執(zhí)行大量的select,insert MyISAM比較適合莺禁。
InnoDB:支持事務安全的引擎留量,支持外鍵、行鎖哟冬、事務是他的最大特點楼熄。如果有大量的update和insert,建議使用InnoDB柒傻,特別是針對多個并發(fā)和QPS較高的情況孝赫。
8、視圖红符、游標青柄、連接、函數预侯、事務致开、存儲過程
有空再寫。萎馅。双戳。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市糜芳,隨后出現的幾起案子飒货,更是在濱河造成了極大的恐慌魄衅,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件塘辅,死亡現場離奇詭異晃虫,居然都是意外死亡,警方通過查閱死者的電腦和手機扣墩,發(fā)現死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門哲银,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人呻惕,你說我怎么就攤上這事荆责。” “怎么了亚脆?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵做院,是天一觀的道長。 經常有香客問我濒持,道長山憨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任弥喉,我火速辦了婚禮,結果婚禮上玛迄,老公的妹妹穿的比我還像新娘由境。我一直安慰自己,他們只是感情好蓖议,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布虏杰。 她就那樣靜靜地躺著,像睡著了一般勒虾。 火紅的嫁衣襯著肌膚如雪纺阔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天修然,我揣著相機與錄音笛钝,去河邊找鬼。 笑死愕宋,一個胖子當著我的面吹牛玻靡,可吹牛的內容都是我干的。 我是一名探鬼主播中贝,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼囤捻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了邻寿?” 一聲冷哼從身側響起蝎土,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤视哑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后誊涯,有當地人在樹林里發(fā)現了一具尸體挡毅,經...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年醋拧,在試婚紗的時候發(fā)現自己被綠了慷嗜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡丹壕,死狀恐怖庆械,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情菌赖,我是刑警寧澤缭乘,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站琉用,受9級特大地震影響堕绩,放射性物質發(fā)生泄漏。R本人自食惡果不足惜邑时,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一奴紧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晶丘,春花似錦黍氮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至滚秩,卻和暖如春专执,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背郁油。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工本股, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人已艰。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓痊末,卻偏偏與公主長得像,于是被迫代替她去往敵國和親哩掺。 傳聞我的和親對象是個殘疾皇子凿叠,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內容