mysql-(數(shù)據(jù)庫基礎(chǔ))

mysql

  • 什么是數(shù)據(jù)(data):硬盤中存的東西......

  • 數(shù)據(jù)庫:

    • 數(shù)據(jù)庫是存儲(chǔ)在一起的相關(guān)數(shù)據(jù)的集合芝此,這些數(shù)據(jù)是結(jié)構(gòu)化的绿渣,無有害的或不必要的冗余速种,并為多種應(yīng)用服務(wù)
  • 數(shù)據(jù)庫的優(yōu)點(diǎn)

    • 數(shù)據(jù)按照一定的數(shù)據(jù)模型組織描述和存儲(chǔ)
    • 可為各種用戶共享
    • 冗余度較小拳喻,節(jié)省存儲(chǔ)空間
    • 易擴(kuò)展哭当,編寫有關(guān)數(shù)據(jù)庫管理
  • 數(shù)據(jù)庫管理系統(tǒng)(Database Management System)

    • 是一種操縱和管理數(shù)據(jù)庫的大型軟件,適用于建立使用和維護(hù)數(shù)據(jù)庫冗澈,簡稱DBMS钦勘。
    • 作用:他對(duì)于數(shù)據(jù)庫進(jìn)行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫的安全性和完整性亚亲。
  • mysql命令

    mysql -h host_name -u user_name -ppassword
    mysql-h:當(dāng)前連接服務(wù)器不在同臺(tái)主機(jī)時(shí)彻采,填寫主機(jī)名或IP地址
    mysql-u:登錄mysql用戶名
    mysql-p:登錄mysql密碼
    登錄過程

    mysql -u root -ppassword
    show databases;//顯示所有數(shù)據(jù)庫
    use XXX;
    show tables;//顯示所有的表
    select * from XXX;//進(jìn)入查看該表
    \q:退出
    
  • 數(shù)據(jù)庫由一批數(shù)據(jù)構(gòu)成的有序集合,這些數(shù)據(jù)被分門別類的存放在一些結(jié)構(gòu)化的數(shù)據(jù)表里(table)里捌归,而數(shù)據(jù)之間又往往存在交叉引用的關(guān)系肛响,這種關(guān)系使數(shù)據(jù)庫又被稱為關(guān)系型數(shù)據(jù)庫

  • 數(shù)據(jù)存儲(chǔ)的完整性

    • 有一對(duì)必選的有一堆可選的方案以保持完整性。
    • 約束方法:唯一約束惜索、主鍵約束特笋、標(biāo)識(shí)列
    • 約束方法:限制數(shù)據(jù)類型、檢查約束门扇、外鍵約束(保證程序表中的數(shù)據(jù)不孤立)雹有、默認(rèn)值偿渡、非空約束。
    • 約束方法:規(guī)則霸奕,存儲(chǔ)過程溜宽,觸發(fā)器。
  • 完整性包括

    • 輸入的類型是否正確质帅?
    • 輸入的格式是否正確适揉?
    • 是否在允許的范圍內(nèi)?
    • 是否存在重復(fù)輸入煤惩?
    • 是否符合其他特定要求嫉嘀?

SQL

  • 什么是SQL(Structured Query Language(結(jié)構(gòu)化查詢語言))
    • SQL是專為數(shù)據(jù)庫而建立的操作命令集,是一種功能齊全的數(shù)據(jù)庫語言魄揉。在使用它時(shí)剪侮,只需要發(fā)出“做什么”的命令,“怎么做”是不用使用者考慮的洛退。
  • SQL語句
    • SQL用瓣俯;結(jié)尾,否則認(rèn)為語句未結(jié)束
    • ->代表SQL語句未結(jié)束
    • 取消SQL語句用\c
    • SQL語句關(guān)鍵字和函數(shù)名不區(qū)分大小寫(Linux區(qū)分兵怯,Windows不區(qū)分)
    • 使用函數(shù)時(shí)彩匕,函數(shù)名和后面的括號(hào)之間不能有空格
  • 使用字符串需要轉(zhuǎn)義字符


    Paste_Image.png

數(shù)據(jù)類型

  • CHAR和VARCHAR類型
    • CHAR類型和VARCHAR類型長度都是0~255之間的大小,他們之間的差別是mysql處理存儲(chǔ)的方式
    • CHAR把這個(gè)大小視為值得準(zhǔn)確大小媒区,(用空格填補(bǔ)比較短的值)
    • VARCHAR把它視為最大值并只使用字符串實(shí)際使用的需要字節(jié)數(shù)驼仪,較小的值存入VARCHAR類型的字段時(shí),將不會(huì)用空格填補(bǔ)袜漩。(較長值仍然會(huì)被截?cái)啵?/li>
  • 數(shù)值列類型
    • mysql為除了NULL值外的所有通用數(shù)據(jù)提供了列類型绪爸。列類型是一種手段,通過該手段可以描述表類需要什么類型的表宙攻。


      Paste_Image.png

      Paste_Image.png
  • 時(shí)間和日期類型


    Paste_Image.png
    • 說明
      • 每個(gè)時(shí)間和日期列類型都有一個(gè)零值毡泻,當(dāng)插入非法數(shù)值時(shí)就用零值來添加
      • 表示日期時(shí)必須先按:年,月粘优,日的順序給出
      • DATE ,TIME ,DATETIME分別是存儲(chǔ)日期,時(shí)間與日期和時(shí)間的組合呻顽,其格式為“YYYY-MM-DD”雹顺,“hh:mm: ss”和“YYYY-MM-DD hh:mm: ss”,對(duì)于DATETIME類型廊遍,日期和時(shí)間部分都需要
        TIMESTAMP
      • 時(shí)間戳列類型以YYYYMMDDhhmmss的格式來表示值嬉愧,其取值范圍是19700101000000到2037年的某個(gè)時(shí)間,主要用于記錄更改或創(chuàng)建某個(gè)記錄

  • 創(chuàng)建表
:create table 表名(
列名1  列類型  [<列的完整性約束>],
列名2  列類型  [<列的完整性約束>], 
        ... ...   );
create database test01;//創(chuàng)建名為test01的庫
use test01;//進(jìn)入庫
show tables;//查看庫內(nèi)有幾張表
creat table data11(showtime time);//創(chuàng)建一行一列的表喉前,表名data11没酣,列名show time
insert into data11 values('11:11:11'),('11:11'),(111111);//插入數(shù)據(jù)
select * from data11;//查看表
Paste_Image.png
create table data12(f_data date,f_time);
insert into data12 (f_data,f_time)     values('1978-4-6',123421),(650503,'3:4:1');
Paste_Image.png
create table data12(f_data date,f_time);
insert into data14('1999-11-11 11:11:11','2002-11-11 11:11:11');
insert into data14 values(now(),null);
Paste_Image.png
create table t1(num1 int not null,num2 int);
insert into t1(-1,-2) values(10);
Paste_Image.png
create tablet2(num1 int null,num2 int) 
insert into t2(num2) values(10);
Paste_Image.png
create table t3(num1 int default 100,num2 int);
insert into t3(num2) values(2);
Paste_Image.png
create table t4(num2 int zerofill);
insert into t4 values(2);
Paste_Image.png
create table t5(num1 int unique,num2 int);
insert into t5 values(1,2);
insert into t5 values(1,2);
Paste_Image.png
create table t6(num1 int auto_increment unique not null,num2 int);
insert into t6 (num2)values(10);
insert into t6 (num2)values(10);
insert into t6 (num2)values(10);
Paste_Image.png
insert into t6 values(100,10);
insert into t6 (num2)values(10);
Paste_Image.png
delete from t6;
insert into t6 (num2)values(10);
Paste_Image.png

引用完整性

  • 主鍵和外鍵

    • 數(shù)據(jù)表之間的關(guān)聯(lián)/引用關(guān)系是依靠具體的主鍵(primary key)和外鍵(foreign key)建立起來的王财。
    • 主鍵:幫助MySQL以最快的速度把一條特點(diǎn)的數(shù)據(jù)記錄的位置確定下來。
      • 主鍵必須是唯一的
      • 主鍵應(yīng)該是緊湊的裕便,因此整數(shù)類型比較適合
    • 外鍵:引用另外一個(gè)數(shù)據(jù)表的某條記錄绒净。
      • 外鍵列類型盡可能與主鍵列類型保持一致
      • 外鍵列應(yīng)該加上NOT NULL
  • 注意點(diǎn)

    1. 當(dāng)主表中沒有對(duì)應(yīng)的記錄時(shí),不能將記錄添加到子表
    2. 不能更改主表中的值而導(dǎo)致子表中的記錄孤立
    3. 子表存在與主表對(duì)應(yīng)的記錄偿衰,不能從主表中刪除該行
    4. 刪除主表前挂疆,先刪子表
  • 插入insert

    • 直接在外鍵插入信息,會(huì)報(bào)錯(cuò)
    主鍵
    create table student(
        sid int not null auto_increment,
        name varchar(20) not null,
        primary key(sid)
    );
    外鍵(自動(dòng)檢查外鍵是否匹配下翎,僅適用InnoDB)
    create table score(
        cid int not null auto_increment primary key,
        score int,
        sid int,
        foreign key(sid) references student(sid)
    );
    
    insert into score (score,sid) values(100,1);
    
    Paste_Image.png
    insert into student (name) values('ssh');
    
    Paste_Image.png
    insert into score (score,sid) values(100,1);
    
    Paste_Image.png
    • 直接刪除主鍵會(huì)報(bào)錯(cuò)
    delete from studnet;
    drop from student;
    
    Paste_Image.png
    • 插入中文
    create table t7(name char(20),id int);
    insert into t7 values('ssh',1);
    insert into t7 values('孫蘇徽',1);
    
    Paste_Image.png
    create table t7(name char(20),id int) default     charset=utf8;
    insert into t7 values('ssh',1);
    insert into t7 values('孫蘇徽',1);
    
    Paste_Image.png

更改表結(jié)構(gòu)

  1. add 列名 建表語句 [first | after 列名]
    • 可以為表添加一列缤言,如果沒指定first或者after,則在列尾添加一列视事,否則在指定列添加新列
  2. add primary key (列名)
    • 為表添加一個(gè)主鍵胆萧,如果主鍵已經(jīng)存在,則出現(xiàn)錯(cuò)誤
  3. add foreign key(列名) references
    • 表名(列名)為表添加一個(gè)外鍵
  4. alter 列名 set default 默認(rèn)值
    • 可以更改指定列默認(rèn)值
  5. change 舊列名 新列名 <建表語句> [first | after 列名]
    • 可以更改列類型和列名稱俐东,如果原列的名字和新列的名字相同
  6. modify 列名 <建表語句> [first | after 列名]
    • 和change的作用相同
  7. drop 列名 //可以刪除一列
  8. drop primary key //可以刪除主鍵
  9. engine 類型名 //可以改變表類型
  10. rename as 新表名 //可以將表名更改
  • alter各種使用
    • 新建一個(gè)列
    alter table t8 add address int after name;
    desc t8;
    select * from t8;
    
    Paste_Image.png
    • 設(shè)address默認(rèn)值
    alter table t8 alter address set default 100;
    desc t8;
    
    Paste_Image.png
    • change id為number 屬性char(20)
    alter table t8 change id number char(20);
    desc t8;
    select * from t8;
    
    Paste_Image.png

    Paste_Image.png
    • change name 屬性
    alter table t8 change name name int;
    desc t8;
    select * from t8;
    
    Paste_Image.png
    • modify使用
    alter table t8 modify name char(20);
    
    Paste_Image.png
    • drop使用
    alter table t8 drop address;
    
    Paste_Image.png
    • rename使用
    alter table t8 rename as t9;
    
    Paste_Image.png

mysql運(yùn)算符

  • select
    • select 與binary
    select 'x'<>'X';
    select binary 'x'<>'X';
    
    Paste_Image.png
    • between
    select 10 between 10 and 100;
    
    Paste_Image.png
    select 'x' between 'a' and 'z';
    
    Paste_Image.png
    select 7 in(1,2,3,4,5,6,7);
    select 7 in(1,2,3,4,5,6);
    
    Paste_Image.png
  • NULL
    • IS NULL 或者 IS NOT NULL來測(cè)定是否為空
    • 可以使用特殊的<=>運(yùn)算符跌穗,MySQL稱為”NULL安全的等于”運(yùn)算符。這意味著即使當(dāng)包含在比較運(yùn)算符中的表達(dá)式含有一個(gè)NULL值時(shí)犬性,MySQL也會(huì)為比較運(yùn)算符返回一個(gè)真值或假值瞻离。


      Paste_Image.png
  • 通配符
    • “%” (百分號(hào)) 代表任意長度(長度可以為0)的字符串
      • a%b表示以a開頭,以b結(jié)尾的任意長度的字符串乒裆。如acb套利,addgb,ab 等都滿足該匹配串
    • “_”(下橫線) 代表任意單個(gè)字符
      • a_b表示以a開頭鹤耍,以b結(jié)尾的長度為3的任意字符串肉迫。如acb,afb等都滿足該匹配串
    select 'mysql' like '%SQL',binary 'mysql' like '%SQL'
    
    Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末稿黄,一起剝皮案震驚了整個(gè)濱河市喊衫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌杆怕,老刑警劉巖族购,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異陵珍,居然都是意外死亡寝杖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門互纯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瑟幕,“玉大人,你說我怎么就攤上這事≈豁铮” “怎么了辣往?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長殖卑。 經(jīng)常有香客問我站削,道長,這世上最難降的妖魔是什么懦鼠? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任钻哩,我火速辦了婚禮,結(jié)果婚禮上肛冶,老公的妹妹穿的比我還像新娘街氢。我一直安慰自己,他們只是感情好睦袖,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布珊肃。 她就那樣靜靜地躺著,像睡著了一般馅笙。 火紅的嫁衣襯著肌膚如雪伦乔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天董习,我揣著相機(jī)與錄音烈和,去河邊找鬼。 笑死皿淋,一個(gè)胖子當(dāng)著我的面吹牛招刹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窝趣,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼疯暑,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了哑舒?” 一聲冷哼從身側(cè)響起妇拯,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎洗鸵,沒想到半個(gè)月后越锈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膘滨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年瞪浸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吏祸。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贡翘,到底是詐尸還是另有隱情蹈矮,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布鸣驱,位于F島的核電站泛鸟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏踊东。R本人自食惡果不足惜北滥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闸翅。 院中可真熱鬧再芋,春花似錦、人聲如沸坚冀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽记某。三九已至司训,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間液南,已是汗流浹背壳猜。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滑凉,地道東北人统扳。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像譬涡,于是被迫代替她去往敵國和親闪幽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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

  • 1.MySQL數(shù)據(jù)庫 2.SQL語句 第一節(jié)課 ###1(MySQL數(shù)據(jù)庫)數(shù)據(jù)庫概念.avi 5...
    碼了個(gè)農(nóng)啵閱讀 1,215評(píng)論 1 16
  • MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng)涡匀,由瑞典MySQL AB 公司開發(fā)盯腌,目前屬于 Oracle 旗下公司。MySQ...
    PHPer_閱讀 501評(píng)論 0 1
  • 1.1-認(rèn)識(shí)MySQL 什么是數(shù)據(jù)庫陨瘩?計(jì)算機(jī)處理和存儲(chǔ)的一切信息都是數(shù)據(jù)腕够。數(shù)據(jù)庫是計(jì)算機(jī)系統(tǒng)中一種用于存取數(shù)據(jù)的程...
    LuckyPandaLee閱讀 2,174評(píng)論 0 12
  • 1、SQL中的字符串都要用單引號(hào) 不用單引號(hào)也可能會(huì)執(zhí)行舌劳,但是會(huì)有類型轉(zhuǎn)換帚湘,而類型轉(zhuǎn)換設(shè)計(jì)函數(shù)操作,引起索引失效或...
    拾壹北閱讀 507評(píng)論 0 1
  • 月底沒剩幾天了甚淡,任務(wù)數(shù)字還是那么重大诸,真讓人頭疼,沒完沒了的搞促銷,自己都煩了资柔,不知道顧客煩不煩焙贷! 手機(jī)任務(wù)其實(shí)都已...
    手機(jī)哥閱讀 360評(píng)論 0 0