欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL入門(mén)(一) 數(shù)據(jù)表數(shù)據(jù)庫(kù)的基本操作

 更新時(shí)間:2018年07月25日 15:54:20   作者:一杯涼茶  
這類(lèi)文章記錄我看MySQL5.6從零開(kāi)始學(xué)》這本書(shū)的過(guò)程,將自己覺(jué)得重要的東西記錄一下,并有可能幫助到你們,在寫(xiě)的博文前幾篇度會(huì)非?;A(chǔ),只要?jiǎng)邮智?,跟著我?xiě)的例子全部實(shí)現(xiàn)一遍,基本上就搞定了,前期很難理解的東西基本沒(méi)有

序言

這類(lèi)文章,記錄我看《MySQL5.6從零開(kāi)始學(xué)》這本書(shū)的過(guò)程,將自己覺(jué)得重要的東西記錄一下,并有可能幫助到你們,在寫(xiě)的博文前幾篇度會(huì)非常基礎(chǔ),只要?jiǎng)邮智?,跟著我?xiě)的例子全部實(shí)現(xiàn)一遍,基本上就搞定了,前期很難理解的東西基本沒(méi)有,所以寫(xiě)博文的內(nèi)容,就是以練題的形式來(lái)呈現(xiàn)的。

需要用的資料以鏈接的形式給需要的同學(xué)。

我用的mysql版本為: Mysql-5.5.45-win64.msi 密碼是:26zw

圖形化工具 Navicat(前期不推薦用,直接手動(dòng)敲): Navicat 密碼:c7fs

開(kāi)始我的MySQL之旅吧   始于2016.12.04

                                              --WH

一、數(shù)據(jù)庫(kù)的安裝

這個(gè)就不在這里過(guò)多闡述了,因?yàn)榫W(wǎng)上實(shí)在是太多安裝mysql的教程了,有了我給的mysql,在按照這個(gè)安裝教程(MySQL安裝教程)去看,就能夠安裝完好。

安裝好mysql后,如果需要使用windows命令窗口(也就是cmd)來(lái)操作mysql,那么就需要配置環(huán)境變量,在安裝好的mysql下找到bin,將其目錄放到環(huán)境變量path中去,就行了,檢測(cè)成功與否的方法是在cmd命令窗口中輸入mysql,就會(huì)出現(xiàn)一大段英文,就說(shuō)明成功了,反之失敗,如果不會(huì)的話就去百度搜教程。

二、數(shù)據(jù)庫(kù)的基本操作

1、開(kāi)啟mysql服務(wù)命令

net start mysql

2、進(jìn)入mysql的兩種方式

明文進(jìn)入:mysql -uroot -proot  格式:mysql -u帳號(hào) -p密碼

密文進(jìn)入:mysql -uroot -p 按enter會(huì)提示你輸入密碼(Enter pssword:),此時(shí)你寫(xiě)的密碼就會(huì)顯示為***這樣。

3、查看mysql中所有的數(shù)據(jù)庫(kù)(一般在固定的單詞命令就會(huì)是用大寫(xiě),這個(gè)要習(xí)慣,看多了敲多了就認(rèn)識(shí)了)

前面四個(gè)數(shù)據(jù)庫(kù)是mysql中自帶的,也就是必須的.

SHOW DATABASES;

4、創(chuàng)建名為test_1的數(shù)據(jù)庫(kù)

格式:CREATE DATABASE 數(shù)據(jù)庫(kù)名

CREATE DATABASE test_1;

5、刪除名為test_1的數(shù)據(jù)庫(kù)

格式:DROP DATABASE 數(shù)據(jù)庫(kù)名

DROP DATABASE test_1;

總結(jié):學(xué)習(xí)了對(duì)數(shù)據(jù)庫(kù)的三個(gè)操作,1、查看所有數(shù)據(jù)庫(kù) 2、創(chuàng)建數(shù)據(jù)庫(kù) 3、刪除數(shù)據(jù)庫(kù)

三、數(shù)據(jù)表的基本操作

數(shù)據(jù)表和數(shù)據(jù)庫(kù)還有Mysql三者的關(guān)系

mysql中保存了很多數(shù)據(jù)庫(kù)、一個(gè)數(shù)據(jù)庫(kù)中可以保存很多表。

對(duì)數(shù)據(jù)表的增(創(chuàng)建表)刪(刪除表)改(修改表字段)查(查詢(xún)表結(jié)構(gòu))。 注意:這里的操作對(duì)象是表,對(duì)表的操作也就是表的結(jié)構(gòu),和表中的字段的操作(字段和記錄要分清楚)

前提:表是在數(shù)據(jù)庫(kù)下的,所以要先確實(shí)使用哪個(gè)數(shù)據(jù)庫(kù)。

USE test_1;

1、創(chuàng)建數(shù)據(jù)表

格式:CREATE TABLE 數(shù)據(jù)表名(

   字段名1  數(shù)據(jù)類(lèi)型[列級(jí)別約束條件],

   字段名2  數(shù)據(jù)類(lèi)型[列級(jí)別約束條件],

   字段名3  數(shù)據(jù)類(lèi)型[列級(jí)別約束條件]

               ); 

注意:格式不一定需要這樣隔著寫(xiě),完全可以全部寫(xiě)成一行。但是那樣寫(xiě)可觀性非常差。我這樣寫(xiě)只是為了可以看的更清晰。

解釋?zhuān)?/p>

1、[]中括號(hào)中的內(nèi)容表示可以有可以沒(méi)有,

2、列級(jí)別這個(gè)“列”一定要搞清楚說(shuō)的是什么,一張表中有行有列,列表示豎,行表示橫 

3、約束條件后面會(huì)講到

  1.1、創(chuàng)建沒(méi)有約束的student表

     CREATE TABLE student(
          id  INT(11),
          name  VARCHAR(12),
          age  INT(11)
               );

注釋?zhuān)篠HOW TABLES 查詢(xún)數(shù)據(jù)庫(kù)底下的所有表。

1.2、創(chuàng)建有約束的student表

   六大約束:主鍵約束、外鍵約束、非空約束、唯一約束、默認(rèn)約束、自動(dòng)增加

1.2.1:主鍵約束

PRIMARY KEY(primary key):獨(dú)一無(wú)二(唯一)和不能為空(非空),通俗的講,就是在表中增加記錄時(shí),在該字段下的數(shù)據(jù)不能重復(fù),不能為空,比如以上面創(chuàng)建的表為例子,在表中增加兩條記錄,如果id字段用了主鍵約束。則id不能一樣,并且不能為空。一般每張表中度有一個(gè)字段為主鍵,唯一標(biāo)識(shí)這條記錄。以后需要找到該條記錄也可以同這個(gè)主鍵來(lái)確認(rèn)記錄,因?yàn)橹麈I是唯一的,并且非空,一張表中每個(gè)記錄的主鍵度不一樣,所以根據(jù)主鍵也就能找到對(duì)應(yīng)的記錄。而不是多條重復(fù)的記錄。如果沒(méi)有主鍵,那么表中就會(huì)存在很多重復(fù)的記錄,那么即浪費(fèi)存儲(chǔ)空間,在查詢(xún)時(shí)也消耗更多資源。

一般被主鍵約束了的字段度習(xí)慣性的稱(chēng)該字段為該表的主鍵

單字段主鍵約束

  兩種方式都可以

  CREATE TABLE student(            CREATE TABLE student(

    id  INT(11) PRIMARY KEY,          id  INT(11),

    name  VARCHAR(12),            name  VARCHAR(12),

    age  INT(11)   age  INT(11),

  ); PRIMARY KEY(id) );

多字段主鍵約束(復(fù)合主鍵)

    這個(gè)id和name都市主鍵,說(shuō)明在以后增加的插入的記錄中,id和name不能同時(shí)一樣,比如說(shuō)可以是這樣。一條記錄為id=1,name=yyy、另一條記錄為:id=1,name=zzz。 這樣是可以的。并不是你們所理解的兩個(gè)字段分別度不可以相同。

  CREATE TABLE student(CREATE TABLE student(

    id  INT(11) PRIMARY KEY,            id  INT(11),

    name  VARCHAR(12) PRIMARY KEY,       name  VARCHAR(12),

    age  INT(11)     age  INT(11),

  );        PRIMARY KEY(id,name) );

1.2.2:外鍵約束

什么是外鍵舉個(gè)例子就清楚了,有兩張表,一張表是emp(員工)表,另一張表是dept(部門(mén))表,一個(gè)員工屬于一個(gè)部門(mén),那么如何通過(guò)員工能讓我們自己他在哪個(gè)部門(mén)呢?那就只能在員工表中增加一個(gè)字段,能代表員工所在的部門(mén),那該字段就只能是存儲(chǔ)dept中的主鍵了(因?yàn)橹麈I是唯一的,才能確實(shí)是哪個(gè)部門(mén),進(jìn)而代表員工所在的部門(mén),如果是部門(mén)名稱(chēng),有些部門(mén)的名稱(chēng)可能是同名。就不能區(qū)分了。),像這樣的字段,就符合外鍵的特點(diǎn),就可以使用外鍵約束,使該字段只能夠存儲(chǔ)另一張表的主鍵。如果不被外鍵約束,那么該字段就無(wú)法保證存儲(chǔ)進(jìn)來(lái)的值就一定是另一張表的主鍵值。

外鍵約束的特點(diǎn):

  1、外鍵約束可以描述任意一個(gè)字段(包括主鍵),可以為空,并且一個(gè)表中可以有多個(gè)外鍵。但是外鍵字段中的值必須是另一張表中的主鍵。

  2、這樣被外鍵關(guān)聯(lián)的兩種表的關(guān)系可以稱(chēng)為父子表或者主從表。子表(從表)擁有外鍵字段的表,父表(主表)被外鍵字段所指向的表。

  3、子表被外鍵約束修飾的字段必須和父表的主鍵字段的類(lèi)型一樣。

  注意:一個(gè)表中有被外鍵修飾的字段,就稱(chēng)該表有外鍵(是“有外鍵”。而不是“是外鍵”),并會(huì)給該表中的外鍵約束取一個(gè)名稱(chēng),所以我們常說(shuō)的這個(gè)表有沒(méi)有外鍵,指的不是被外鍵約束修飾的字段名,而是指這個(gè)表是否有存在外鍵約束。也就是說(shuō),不能說(shuō)這個(gè)表的外鍵是xxx(該表中被外鍵約束修飾的字段名),這種說(shuō)法是錯(cuò)誤的,但是大多數(shù)人已經(jīng)習(xí)慣了這樣,雖然影響不大,但是在很多時(shí)候需要理解一個(gè)東西時(shí),會(huì)造成一定的困擾。

格式:CONSTRAINT  外鍵名稱(chēng)  FOREIGN KEY(被外鍵約束的字段名稱(chēng))  REFERENCES  主表名(主鍵字段)

    英文解釋?zhuān)篊ONSTRAINT:約束    REFERENCES:參考

    CREATE TABLE tableA
        (
            id INT(11),
            name VARCHAR(22),
            location VARCHAR(50),
            PRIMARY KEY(id)
        );
        CREATE TABLE tableB
        (
            id INT(11),
            name VARCHAR(22) NOT NULL,
            deptId INT(11),
            PRIMARY KEY(id),
            CONSTRAINT tableA_tableB_1 FOREIGH KEY(deptId) REFERENCES tableA(id)
       );            

     解釋?zhuān)簍ableB中有一個(gè)名為tableA_tableB_1的外鍵關(guān)聯(lián)了tableA和tableB兩個(gè)表,被外鍵約束修飾的字段為tableB中的deptId,主鍵字段為tableA中的id     

1.2.3:非空約束

NOT NULL. 被該約束修飾了的字段,就不能為空,主鍵約束中就包括了這個(gè)約束

    CREATE TABLE tableA
        (
            id INT(11),
            name VARCHAR(22) NOT NULL,
            location VARCHAR(50),
            PRIMARY KEY(id)
        );

1.2.4:唯一約束

UNIQUE  被唯一約束修飾了的字段,表示該字段中的值唯一,不能有相同的值,通俗點(diǎn)講,就好比插入兩條記錄,這兩條記錄中處于該字段的值不能是一樣的。

         CREATE TABLE tableA
        (
            id INT(11),
            name VARCHAR(22) UNIQUE,
            location VARCHAR(50),
            PRIMARY KEY(id)
        );

也就是說(shuō)在插入的記錄中,每條記錄的name值不能是一樣的。

1.2.5:默認(rèn)約束

Default  指定這一列的默認(rèn)值為多少,比如,男性同學(xué)比較多,性別就可以設(shè)置為默認(rèn)男,如果插入一行記錄時(shí),性別沒(méi)有填,那么就默認(rèn)加上男 

     
        CREATE TABLE table
        (
            id INT(11) PRIMARY KEY,
            name VARCHAR(22) NOT NULL,
            deptId INT(11) DEFAULT 1111,
            salary FLOAT
        );

1.2.6:自動(dòng)增加  

 AUTO_INCREMENT 一個(gè)表只能一個(gè)字段使用AUTO_INCREMENT,并且使用這個(gè)約束的字段只能是整數(shù)類(lèi)型(任意的整數(shù)類(lèi)型     TINYINT,SMALLIN,INT,BIGINT),默認(rèn)值是1,也就是說(shuō)從1開(kāi)始增加的。一般就是給主鍵使用的,自動(dòng)增加,使每個(gè)主鍵的值度不一樣,并且不用我們自己管理,讓主鍵自己自動(dòng)生成

  CREATE TABLE table
  (
    id INT(11) PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(22) NOT NULL
  );

2、查詢(xún)表結(jié)構(gòu)  

              2.1、查看表基本結(jié)構(gòu)語(yǔ)句

                    格式1:DESCRIBE 表名/DESC 表名  這兩個(gè)的功能是一樣的,簡(jiǎn)寫(xiě)了單詞describe

                      DESCRIBE student; 

 

 2.2、查看創(chuàng)建表的語(yǔ)句 

   格式:SHOW CREATE TABLE 表名

   SHOW CREATE TABLE student;

這樣顯示的格式很不好,看不清楚,所以有了下面這個(gè)語(yǔ)句

格式:SHOW CREATE TABLE 表名\G

SHOW CREATE TABLE student\G;

 3、修改數(shù)據(jù)表      

修改數(shù)據(jù)表包括:對(duì)表中字段的增加、刪除、修改。 在這個(gè)里面用的關(guān)鍵字為 ALTER

  3.1、修改表名

    格式:ALTER TABLE<舊表名> RENAME[TO]<新表名>;

    將student表名改為student1(改完后在改回來(lái))

    ALTER TABLE student RENAME TO student1;

3.2、修改表中的字段名

  格式:ALTER TABLE<表名> CHANGE<舊字段名><新字段名><新數(shù)據(jù)類(lèi)型>

  將student表中的name字段名改為 username

  ALTER TABLE student CHANGE name username VARCHAR(30);

3.3、修改表中的數(shù)據(jù)類(lèi)型

  格式:ALTER TABLE<表名> MODIFY<字段名><數(shù)據(jù)類(lèi)型>                     

  ALTER TABLE student MODIFY username VARCHAR(20);

解釋?zhuān)褐荒苄薷淖侄蚊臄?shù)據(jù)類(lèi)型,但是其原理跟上面change做的事情一樣,這里也有修改字段名的過(guò)程,只不過(guò)修改后的字段名和修改前的字段名相同,但是數(shù)據(jù)類(lèi)型不一樣。

3.4、修改字段的排列位置

   方式1:ALTER TABLE<表名> MODIFY<字段1><數(shù)據(jù)類(lèi)型> FIRST|AFTER<字段2>

   解釋?zhuān)簩⒆侄?的位置放到第一,或者放到指定字段2的后面

   ALTER TABLE student MODIFY username VARCHAR(20) AFTER age;

方式2:ALTER TABLE<表名> CHANGE<字段1><字段2><數(shù)據(jù)類(lèi)型> FIRST|AFTER<字段3> 

解釋?zhuān)浩鋵?shí)是一樣的,將是字段2覆蓋字段1,然后在進(jìn)行排序

ALTER TABLE student CHANGE username username VARCHAR(20) AFTER age;

總結(jié)

CHANGE和MODIFY的區(qū)別?

原理都市一樣的,MODIFY只能修改數(shù)據(jù)類(lèi)型,但是CHANGE能夠修改數(shù)據(jù)類(lèi)型和字段名,也就是說(shuō)MODIFY是CHANGE的更具體化的一個(gè)操作??赡苡X(jué)得用CHANGE只改變一個(gè)數(shù)據(jù)類(lèi)型不太爽,就增加了一個(gè)能直接改數(shù)據(jù)類(lèi)型的使用關(guān)鍵字MODIFY來(lái)操作。

3.5、添加字段

格式:ALTER TABLE<表名稱(chēng)> ADD<新字段名><數(shù)據(jù)類(lèi)型>[約束條件][FIRST|AFTER<已存在的表名>]

解釋?zhuān)涸谝粋€(gè)特定位置增加一個(gè)新的字段,如果不指定位置,默認(rèn)是最后一個(gè)。

ALTER TABLE student ADD sex VARCHAR(11);

3.6、刪除字段

格式:ALTER TABLE<表名稱(chēng)> DROP<字段名>;

ALTER TABLE student DROP sex;

3.7、刪除表的外鍵約束

格式:ALTER TABLE<表名稱(chēng)> DROP FOREIGN KEY<外鍵約束名>

注意:外鍵約束名 指的不是被外鍵約束修飾的字段名,切記,而是我們?cè)趧?chuàng)建外鍵約束關(guān)系時(shí)取的名字。

3.8、更改表的存儲(chǔ)引擎

格式:ALTER TABLE<表名> ENGINE=<更改后的存儲(chǔ)引擎名>

這個(gè)存儲(chǔ)引擎目前我自己也不太清楚,雖然知道有哪幾種引擎,但是稍微深入一點(diǎn)就不清楚了,所以打算留到日后在說(shuō)。

4、刪除表

4.1、刪除無(wú)關(guān)聯(lián)表

格式:DROP TABLE<表名>;

ALTER TABLE student;

4.2、刪除被其他表關(guān)聯(lián)的主表

這個(gè)是比較重要的一點(diǎn),在有外鍵關(guān)聯(lián)關(guān)系的兩張表中,如果刪除主表,那么是刪不掉的,并且會(huì)報(bào)錯(cuò)。因?yàn)橛袕埍硪蕾?lài)于他。那怎么辦呢?針對(duì)這種情況,總共有兩種方法

1、先刪除你子表,然后在刪除父表,這樣就達(dá)到了刪除父表的目的,但是子表也要被刪除
2、先解除外鍵關(guān)系,然后在刪除父表,這樣也能達(dá)到目的,并且保留了子表,只刪除我們不需要的父表。在3.7中就講解了如何刪除外鍵關(guān)系。

四、總結(jié)

講了這么多,但實(shí)際中,用到的并不是很多,特別是對(duì)表結(jié)構(gòu)的修改的操作,在實(shí)際開(kāi)發(fā)中,一般數(shù)據(jù)庫(kù)表被定義下來(lái)了,就不會(huì)在修改了,發(fā)現(xiàn)數(shù)據(jù)庫(kù)表設(shè)計(jì)的不好,也是將表全部刪除,然后在重新創(chuàng)建過(guò)新表。但是在我們學(xué)習(xí)的過(guò)程中,這些操作還是很重要的,因?yàn)樾枰@些基礎(chǔ)來(lái)學(xué)習(xí)后面更深入的東西,不可能因?yàn)閷?shí)際中不用,就不學(xué)這不學(xué)那,要相信,不管做什么,那肯定是有意義的事情,可能那意義并不大,但是日后肯定會(huì)對(duì)我們有所幫助。 

相關(guān)文章

  • MySQL提示:The server quit without updating PID file問(wèn)題的解決辦法

    MySQL提示:The server quit without updating

    今天網(wǎng)站web頁(yè)面提交內(nèi)容到數(shù)據(jù)庫(kù),發(fā)現(xiàn)出錯(cuò)了,一直提交不了,數(shù)找了下原因,發(fā)現(xiàn)數(shù)據(jù)寫(xiě)不進(jìn)去!第一反應(yīng),重啟mysql數(shù)據(jù)庫(kù),一直執(zhí)行中,停止不了也啟動(dòng)不了,直覺(jué)告訴我磁盤(pán)滿(mǎn)了 !
    2014-04-04
  • MySQL調(diào)優(yōu)之索引在什么情況下會(huì)失效詳解

    MySQL調(diào)優(yōu)之索引在什么情況下會(huì)失效詳解

    索引的失效,會(huì)大大降低sql的執(zhí)行效率,日常中又有哪些常見(jiàn)的情況會(huì)導(dǎo)致索引失效?下面這篇文章主要給大家介紹了關(guān)于MySQL調(diào)優(yōu)之索引在什么情況下會(huì)失效的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • mysql壓縮包版zip安裝配置方法

    mysql壓縮包版zip安裝配置方法

    這篇文章主要為大家詳細(xì)介紹了mysql壓縮包版zip安裝配置方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • MySql數(shù)據(jù)庫(kù)備份的幾種方式

    MySql數(shù)據(jù)庫(kù)備份的幾種方式

    這篇文章主要介紹了MySql數(shù)據(jù)庫(kù)備份的幾種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • mysql8.0.23 linux(centos7)安裝完整超詳細(xì)教程

    mysql8.0.23 linux(centos7)安裝完整超詳細(xì)教程

    這篇文章主要介紹了mysql8.0.23 linux(centos7)安裝完整超詳細(xì)教程,本文給介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • MySQL串行化隔離級(jí)別(間隙鎖實(shí)現(xiàn))

    MySQL串行化隔離級(jí)別(間隙鎖實(shí)現(xiàn))

    本文主要介紹了MySQL串行化隔離級(jí)別(間隙鎖實(shí)現(xiàn)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • mysql缺少my.ini文件的最佳解決方法

    mysql缺少my.ini文件的最佳解決方法

    my.ini是MySQL數(shù)據(jù)庫(kù)中使用的配置文件,修改這個(gè)文件可以達(dá)到更新配置的目的,下面這篇文章主要給大家介紹了關(guān)于mysql缺少my.ini文件的最佳解決方法,需要的朋友可以參考下
    2024-01-01
  • mysql 一次向表中插入多條數(shù)據(jù)實(shí)例講解

    mysql 一次向表中插入多條數(shù)據(jù)實(shí)例講解

    這篇文章主要介紹了mysql 一次向表中插入多條數(shù)據(jù)實(shí)例講解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • MySql 索引、鎖、事務(wù)知識(shí)點(diǎn)小結(jié)

    MySql 索引、鎖、事務(wù)知識(shí)點(diǎn)小結(jié)

    這篇文章主要介紹了MySql 索引、鎖、事務(wù)知識(shí)點(diǎn),總結(jié)分析了mysql數(shù)據(jù)庫(kù)中關(guān)于索引、鎖和事務(wù)的概念、原理、知識(shí)點(diǎn)及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2019-10-10
  • 磁盤(pán)已滿(mǎn)造成的mysql啟動(dòng)失敗問(wèn)題分享

    磁盤(pán)已滿(mǎn)造成的mysql啟動(dòng)失敗問(wèn)題分享

    這篇文章主要介紹了磁盤(pán)已滿(mǎn)造成的mysql啟動(dòng)失敗問(wèn)題分享,需要的朋友可以參考下
    2014-04-04

最新評(píng)論