<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          什么是MySQL數(shù)據(jù)庫?看這一篇干貨文章就夠了!

          共 24834字,需瀏覽 50分鐘

           ·

          2020-09-25 14:30

          前言

          為啥學(xué)習(xí)MySQL呢?因?yàn)?code style>MySQL是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在web應(yīng)用方面,MySQL是最好的軟件。MySQL所使用的sql語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。

          這篇文章,我會(huì)為大家詳細(xì)梳理MySQL數(shù)據(jù)庫的方方面面。

          1.MySQL的入門

          什么是數(shù)據(jù)庫呢?

          1. 數(shù)據(jù)庫,它是按照數(shù)據(jù)結(jié)構(gòu)組織,存儲(chǔ)和管理數(shù)據(jù)的倉庫。
          2. 數(shù)據(jù)庫管理系統(tǒng), 指數(shù)據(jù)庫系統(tǒng)中對(duì)數(shù)據(jù)進(jìn)行管理的軟件系統(tǒng)。

          讓我來整理一張思維導(dǎo)圖:

          細(xì)節(jié)掌握:

          • 安裝配置,常用命令,操作數(shù)據(jù)庫;
          • 整型與浮點(diǎn)型,日期時(shí)間型與字符型;
          • 創(chuàng)建與查看數(shù)據(jù)庫表,修改數(shù)據(jù)庫表,刪除數(shù)據(jù)庫表;
          • 非空約束,主鍵約束,唯一約束,默認(rèn)約束,外鍵約束;
          • 管理工具:MySQL Workbench,SQLyog
          • 單表數(shù)據(jù)記錄的插入與自動(dòng)編號(hào),單表數(shù)據(jù)記錄的更新,單表數(shù)據(jù)記錄的刪除,單表數(shù)據(jù)記錄的查詢,對(duì)查詢結(jié)果進(jìn)行分組,對(duì)查詢結(jié)果進(jìn)行排序,通過limit語句限制查詢記錄的數(shù)量;
          • mysql的運(yùn)算符,數(shù)值函數(shù),字符函數(shù),日期時(shí)間函數(shù),聚合函數(shù),信息函數(shù)與加密函數(shù);
          • 使用比較運(yùn)算符引發(fā)的子查詢,插入記錄時(shí)使用的子查詢
          • 多表連接,內(nèi)連接,外連接,自連接,多表更新,多表刪除
          • 創(chuàng)建,使用自定義函數(shù)
          • 創(chuàng)建存儲(chǔ)過程,使用存儲(chǔ)過程

          mysql官網(wǎng):

          安裝包下載:(安裝操作)

          點(diǎn)擊安裝:

          產(chǎn)品配置的操作:

          打開服務(wù)框用win+r,輸入services.msc

          2. mysql目錄結(jié)構(gòu)

          1. bin目錄:用于存儲(chǔ)一些可執(zhí)行文件
          2. include目錄:用于存儲(chǔ)包含的一些頭文件
          3. lib目錄:用于存儲(chǔ)一些庫文件
          4. share目錄:用于存儲(chǔ)錯(cuò)誤信息,字符集文件等
          5. data目錄:用于放置一些日志文件以及數(shù)據(jù)庫
          6. my.ini文件:數(shù)據(jù)庫的配置文件

          啟動(dòng)與停止:

          mysql參數(shù):

          參數(shù)描述
          -u用戶名
          -p密碼
          -V輸出版本信息并且退出
          -h主機(jī)地址

          3.常用命令

          修改用戶密碼的命令:

          mysqladmin?命令用于修改用戶密碼

          mysqladmin 命令格式:

          mysqladmin?-u用戶名?-p舊密碼?password新密碼

          顯示數(shù)據(jù)庫的命令

          show?databases;

          使用數(shù)據(jù)庫的命令

          use?數(shù)據(jù)庫的名稱

          顯示當(dāng)前連接的信息

          1. 顯示當(dāng)前連接的數(shù)據(jù)庫select database();
          2. 顯示當(dāng)前服務(wù)器版本select version();
          3. 顯示當(dāng)前日期時(shí)間select now();
          4. 顯示當(dāng)前用戶select user();

          4.操作數(shù)據(jù)庫(創(chuàng)建,修改,刪除)

          創(chuàng)建數(shù)據(jù)庫SQL

          create?database?[if?not?exists]?db_name
          [default]?character?set?[=]?charset_name
          create?database?database_name;

          修改數(shù)據(jù)庫的語法格式:

          alter?database?db_name?
          [default]?character?set?[=]?charset_name

          刪除數(shù)據(jù)庫語法格式:

          drop?database?[if?exitsts]?db_name;

          5.數(shù)據(jù)庫-數(shù)據(jù)類型

          了解數(shù)據(jù)類型:(借助圖書管理系統(tǒng))

          圖書類別表:

          類別編號(hào)(category_id)?類別名稱(category)?父類別(parent_id)
          1?計(jì)算機(jī)?0
          2?醫(yī)學(xué)?0

          圖書信息表:

          圖書編號(hào)(book_id)?類別編號(hào)(book_category_id)?書名(book_name)?作者(author)?價(jià)格(price)?出版社(press)?出版時(shí)間(pubdate)?庫存(store)

          借閱信息表:

          圖書編號(hào)(book_id)?身份證號(hào)(card_id)?借出日期(borrow_date)?歸還日期(return_date)?是否歸還(status)

          讀者信息表

          身份證號(hào)(card_id)?姓名(name)?性別(sex)?年齡(age)?聯(lián)系電話(tel)?余額(balance)

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

          整型:TINYINT-1字節(jié) SMALLINT-2字節(jié) MEDIUMINT-3字節(jié) INT-4字節(jié) BIGINT-8字節(jié)

          浮點(diǎn)數(shù)類型和定點(diǎn)數(shù)類型:

          float-4個(gè)字節(jié)
          double-8個(gè)字節(jié)

          decimal

          日期時(shí)間類型:

          字符型:

          6.數(shù)據(jù)庫表結(jié)構(gòu)的操作

          • 創(chuàng)建和查看數(shù)據(jù)表
          創(chuàng)建數(shù)據(jù)表:create?table

          create?table?<表名>
          (?
          ?列名1?數(shù)據(jù)類型[列級(jí)別約束條件][默認(rèn)值],
          ?列名2?數(shù)據(jù)類型[列級(jí)別約束條件][默認(rèn)值],
          ?...
          ?[表級(jí)別約束條件]
          );
          • 查看數(shù)據(jù)庫表:
          show?tables?[from?db_name];
          • 查看數(shù)據(jù)表基本結(jié)構(gòu):
          show?columns?from?tbl_name;

          describe?<表名>?/DESC<表名>
          show?create?table?tbl_name;
          • 修改數(shù)據(jù)庫表

          添加列:

          alter?table?<表名>
          ?add?<新列名>?<數(shù)據(jù)類型>
          ??[?約束條件?]?[first?|?after?已存在列名];

          修改列名:

          alter?table?<表名>
          ?change?<舊列名>?<新列名>?<新數(shù)據(jù)類型>;

          修改列的數(shù)據(jù)類型:

          alter?table?<表名>?MODIFY?<列名>?<數(shù)據(jù)類型>

          修改列的排列位置

          alter?table<表名>
          MODIFY?<列1>?<數(shù)據(jù)類型>?FIRST|AFTER<列2>

          刪除列:

          alter?table?<表名>?drop?<列名>;

          修改表名:

          alter?table?<舊表名>?RENAME?[TO]?<新表名>;
          • 刪除數(shù)據(jù)庫表
          drop?table?[if?exists]?表1,表2,...表n;

          查看表分區(qū)

          創(chuàng)建表分區(qū):使用partition by類型(字段)

          使用values less than操作符定義分區(qū)

          create?table?bookinfo(
          ?book_id?int,
          ?book_name?varchar(20)
          )
          partition?by?range(book_id)(
          ?partition?p1?values?less?than(20101010),
          ?partition?p3?values?less?than?MAXVALUE
          );

          7.子查詢

          select?price?from?bookinfo?where?book_id?=?20101010;

          select?*?from?readerinfo;

          update?readerinfo?set?balance?=?balance-(select?price?from?bookinfo?where?book_id?=?20101010)?*?0.05?where?card_id?=?'2323232342sxxxxx';

          什么是子查詢呢?

          它是指嵌套在其他sql語句內(nèi)的查詢語句。

          select?*?from?table1?where?col1?=?(select?col2?from?table2);
          insert?into?bookcategory(category,parent_id)values('x',2),('y',2);


          insert?into?bookinfo(book_id,book_category_id,book_name,author,price,press,pubdate,store)
          values
          (45245244,?6,?'x',?'1,2,3?等',?115,?'出版社',?'2020-06-01',10),
          (45342545,?6,?'y',?'1,?2',27.8,??'出版社',?'2020-07-01',?5);

          update?readerinfo?set?balance?=?500?where?card_id?=?'683246';

          insert?into?borrowinfo(book_id,card_id,borrow_date,return_date,status)
          values
          (35452455,'5724154','2020-10-10','2020-11-10','否');

          查詢借閱信息表, 顯示借 xx這本書的借閱記錄

          select?*?from?borrowinfo?where?book_id?=?(select?book_id?from?bookinfo?where?book_name?=?'xx');

          查詢圖書信息表, 顯示圖書價(jià)格小于圖書平均價(jià)格的所有圖書信息

          select?*?from?bookinfo?where?price?

          查詢圖書信息表,顯示圖書類別不是’數(shù)據(jù)庫’的所有圖書信息

          select?*?from?bookinfo?where?book_category_id<>(select?category_id?from?bookcategory?where?category?=?'數(shù)據(jù)庫');

          查詢圖書信息表,顯示圖書類別為’計(jì)算機(jī)’的所有圖書信息

          select?*?from?bookcategory;

          select?*?from?bookinfo?where?book_category_id?=?ANY(select?category_id?from?bookcategory?where?parent_id?=?1);


          select?*?from?bookinfo?where?price?>?ANY?(select?price?from?bookinfo?where?book_category_id?=4);??

          select?*?from?bookinfo?where?price?>?ALL?(select?price?from?bookinfo?where?book_category_id?=4);?

          查詢圖書信息表,顯示圖書類別為’2’的所有圖書信息

          in?后面的子查詢返回一個(gè)數(shù)據(jù)列,等于數(shù)據(jù)列里的任意一個(gè)值都是滿足條件的

          select?*?from?bookinfo?where?book_category_id?in?(select?category_id?from?bookcategory?where?parent_id?=?2);

          select?*?from?bookinfo?where?book_category_id?=?any?(select?category_id?from?bookcategory?where?parent_id?=?2);

          查看圖書類別表中是否有’y’的類別,如果有,則查看圖書信息表

          select?*?from?bookinfo?where?exists?(select?category_id?from?bookcategory?where?category='y');

          select?*?from?bookinfo?where?exists?(select?category_id?from?bookcategory?where?category='x');

          insert into select 語句從一個(gè)表復(fù)制數(shù)據(jù),然后把數(shù)據(jù)插入到一個(gè)已存在的表中。

          insert?into?table2?select?*?from?table1;

          需要?jiǎng)?chuàng)建一張罰款記錄信息表,包含如下信息:圖書編號(hào)、身份證號(hào)、應(yīng)還日期、實(shí)際還書日期,罰款金額

          記錄來源于借閱信息表超出還書時(shí)間還未還書的讀者

          create?table?readerfee(
          ?book_id?int,
          ?card_id?char(18),
          ?return_date?date,
          ?actual_return_date?date,
          ?book_fee?decimal(7,3),
          ?primary?key(book_id,card_id)
          );

          select?book_id,card_id,return_date?from?borrowinfo?where?datediff(sysdate(),return_date)>0?and?status?=?'否';

          insert?into?readerfee(book_id,card_id,return_date)?select?book_id,card_id,return_date?from?borrowinfo?where?datediff(sysdate(),return_date)>0?and?status?=?'否';

          select?*?from?readerfee;

          身份證號(hào)為5461xxxxxxx的讀者將超限的圖書20201101歸還,根據(jù)描述實(shí)現(xiàn)如下需求:

          • 更新借閱信息表,將借閱狀態(tài)(status)更新為‘是’。
          • 更新罰款記錄信息表,更新實(shí)際還書日期和罰款金額,罰款金額為每超出一天扣0.2元。
          update?borrowinfo?set?status?=?'是'?where?book_id?=?20201101?and?card_id?=?'5461xxxxxxx';

          select?*?from?borrowinfo;

          update?readerfee?set?actual_return_date=sysdate(),?book_fee=datediff(sysdate(),return_date)*0.2?where?book_id?=?20201101?and?card_id?=?'5461xxxxxxx';

          select?*?from?readerfee;

          8.mysql的約束

          它事一種限制,通過對(duì)表的行或列的數(shù)據(jù)做出限制,來確保表的數(shù)據(jù)的完整性,唯一性。

          表結(jié)構(gòu):

          圖書(圖書編號(hào)book_id,類別編號(hào)book_category_id,書名book_name,作者author)

          mysql中常用的幾種約束類型:

          約束類型非空約束主鍵約束唯一約束默認(rèn)約束外鍵約束
          關(guān)鍵字not nullprimary keyuniquedefaultforeign key

          圖書信息表:

          (圖書編號(hào)book_id,類別編號(hào)book_category_id,書名book_name,作者author,價(jià)格price,出版社press,出版時(shí)間pubdate,庫存store)

          圖書類別表:

          (類別編號(hào)category_id - 主鍵,類別名稱category - 唯一,父類別parent_id -非空)

          讀者信息表:

          (身份證號(hào)card_id,姓名name,性別sex,年齡age,聯(lián)系電話tel,余額balance)

          借閱信息表:

          (圖書編號(hào)book_id,身份證號(hào)card_id,借出日期borrow_date,歸還日期return_date,是否歸還status)

          非空約束

          null字段值可以為空

          not null字段值禁止為空

          非空約束

          非空約束指字段的值不能為空。對(duì)于使用了非空約束的字段如果用戶在添加數(shù)據(jù)時(shí),沒有指定值,數(shù)據(jù)庫系統(tǒng)會(huì)報(bào)錯(cuò)。

          列名?數(shù)據(jù)類型?not?null

          創(chuàng)建表時(shí)添加非空約束

          create?table?bookinfo(
          ?book_id?int,
          ?book_name?varchar(20)?not?null
          );

          刪除非空約束

          alter?table?bookinfo?modify?book_name?varchar(20);

          通過修改表添加非空約束

          alter?table?bookinfo?modify?book_name?varchar(20)?not?null;

          主鍵約束

          主鍵約束:要求主鍵列的數(shù)據(jù)唯一,并且不允許為空,主鍵能夠唯一地標(biāo)識(shí)表中的一條記錄。

          主鍵的類型:

          主鍵分為單字段主鍵多字段聯(lián)合主鍵

          單字段主鍵:是由一個(gè)字段組成

          在定義列的同時(shí)指定主鍵
          列名?數(shù)據(jù)類型?primary?key;

          在列定義的后邊指定主鍵
          [constraint<約束名>]?primary?key(列名);

          創(chuàng)建表時(shí)添加主鍵約束

          create?table?bookinfo(
          ?book_id?int?primary?key,
          ?book_name?varchar(20)?not?null
          );
          create?table?bookinfo(
          ?book_id?int,
          ?book_name?varchar(20)?not?null,
          ?constraint?pk_id?primary?key(book_id)
          );

          刪除主鍵約束

          ALTER?TABLE?bookinfo?DROP?PRIMARY?KEY;

          通過修改表的方式添加主鍵約束

          ALTER?TABLE?bookinfo?ADD?PRIMARY?KEY(book_id);

          多字段聯(lián)合主鍵,復(fù)合主鍵

          主鍵有多個(gè)字段聯(lián)合組成。primary key(字段1,字段2,...字段n);

          create?table?borrowinfo(
          book_id?int,
          card_id?char(18),
          primary?key(book_id,card_id)
          );

          通過修改表為列添加主鍵

          create?table?bookinfo(
          ?book_id?int,
          ?book_name?varchar(20)?not?null
          );

          alter?table?bookinfo?modify?book_id?int?primary?key;
          alter?table?bookinfo?add?primary?key(book_id);
          alter?table?bookinfo?add?constraint?pk_id?primary?key(book_id);

          唯一約束

          唯一約束要求該列唯一,允許為空,唯一約束可以確保一列或者幾列不出現(xiàn)重復(fù)值。

          語法規(guī)則:

          列名?數(shù)據(jù)類型?unique

          [constraint?<約束名>]?unique(<列名>)

          創(chuàng)建表時(shí)添加唯一約束

          CREATE?TABLE?bookinfo(
          ?book_id?INT?PRIMARY?KEY,
          ?book_name?VARCHAR(20)?NOT?NULL?UNIQUE?
          );

          或:

          create?table?bookinfo(
          book_id?int?primary?key,
          book_name?varchar(20)?not?null,
          constraint?uk_bname?unique(book_name)
          );

          通過修改表的方式添加唯一約束

          alter?table?bookinfo?modify?book_name?varchar(20)?unique;

          ALTER?TABLE?bookinfo?ADD?UNIQUE(book_name);

          alter?table?bookinfo?
          add?constraint?uk_bname?unique(book_name);

          刪除唯一約束

          ALTER?TABLE?book_info?DROP??KEY??uk_bname;

          ALTER?TABLE?book_info?DROP??INDEX??uk_bname;

          唯一約束和主鍵約束的區(qū)別

          1. 一個(gè)表中可以有多個(gè)unique聲明,但只能有一個(gè)primary key聲明
          2. 聲明為primary key 的列不允許有空值
          3. 聲明為unique的列允許空值

          默認(rèn)約束

          默認(rèn)約束是指某列的默認(rèn)值

          列名?數(shù)據(jù)類型?default?默認(rèn)值

          創(chuàng)建表時(shí)添加默認(rèn)約束

          CREATE?TABLE?bookinfo(
          ?book_id?INT?PRIMARY?KEY,
          ?press?VARCHAR(20)??DEFAULT?'出版社'
          );

          通過修改表的方式添加默認(rèn)約束

          ALTER?TABLE?bookinfo?
          ALTER?COLUMN?press?SET?DEFAULT?'出版社';

          alter?table?bookinfo?
          modify?press?varchar(10)?default?'出版社';

          刪除默認(rèn)約束

          alter?table?bookinfo?modify?press?varchar(20);

          ALTER?TABLE?bookinfo?
          ALTER?COLUMN?press?DROP?DEFAULT;

          外鍵約束

          外鍵是用來在兩個(gè)表的數(shù)據(jù)之間建立鏈接,可以是一列或者多列,一個(gè)表可以有一個(gè)或者多個(gè)外鍵。

          外鍵對(duì)應(yīng)的是參照完整性,一個(gè)表的外鍵可以為空值,若不為空值,則每一個(gè)外鍵必須等于另一個(gè)表中主鍵的某個(gè)值。

          作用:保持?jǐn)?shù)據(jù)的一致性,完整性。

          創(chuàng)建表時(shí)添加外鍵約束

          圖書類別表(父表)
          CREATE?TABLE?bookcategory(
          ?category_id?INT?PRIMARY?KEY,
          ?category?VARCHAR(20),
          ?parent_id?INT
          );

          圖書信息表(子表)
          CREATE?TABLE?bookinfo(
          ?book_id?INT?PRIMARY?KEY,
          ?book_category_id??INT,
          ?CONSTRAINT?fk_cid?FOREIGN?KEY(book_category_id)?REFERENCES?bookcategory(category_id)
          );

          通過修改表的方式添加外鍵約束

          ALTER??TABLE??bookinfo??
          ADD??FOREIGN?KEY(book_category_id)?REFERENCES??bookcategory(category_id);

          刪除外鍵約束

          ALTER?TABLE?bookinfo?DROP?FOREIGN?KEY?fk_cid;

          外鍵約束的參照操作

          cascade,從父表刪除或更新且自動(dòng)刪除或更新子表中匹配的行

          create?table?bookinfo(
          ?book_id?int?primary?key,
          ?book_category_id?int,
          ?constraint?fk_cid?foreign?key?(book_category_id)?references?bookcategory(category_id)?on?delete?cascade);

          創(chuàng)建圖書管理系統(tǒng)表

          圖書類別表

          create?table?bookcategory(
          category_id?int?primary?key,
          category?varchar(20)?not?null?unique,
          parent_id?int?not?null
          );

          圖書信息表

          create?table?bookinfo(

          book_id?int?primary?key,
          book_category_id?int,
          book_name?varchar(20)?not?null?unique,
          author?varchar(20)?not?null,
          price?float(5,2)?not?null,
          press?varchar(20)?default?'機(jī)械工業(yè)出版社',
          pubdate?date?not?null,
          store?int?not?null,
          constraint?fk_bcid?foreign?key(book_category_id)?references?bookcategory(category_id)

          );

          讀者信息表

          create?table?readerinfo(

          card_id?char(18)?primary?key,
          name?varchar(20)?not?null,
          sex?enum('男','女','保密')?default?'保密',
          age?tinyint,
          tel?char(11)?not?null,
          balance?decimal(7,3)?default?200

          );

          借閱信息表

          create?table?borrowinfo(

          book_id?int,
          card_id?char(18),
          borrow_date?date?not?null,
          return_date?date?not?null,
          status?char(11)?not?null,
          primary?key(book_id,card_id)

          );

          9.數(shù)據(jù)庫表記錄的操作

          單表數(shù)據(jù)記錄的插入

          語法格式:

          insert?into?table_name(column_list)?values(value_list);

          為表的所有列插入數(shù)據(jù)

          insert?into?bookcategory
          (category_id,category,parent_id)values
          (1,'x',0);

          insert?into?bookcategory?values(2,'y',0);

          為表的指定列插入數(shù)據(jù)

          insert?into?readerinfo
          (card_id,name,tel)values('4562135465','張飛','4651354651');

          同時(shí)插入多條記錄

          insert?into?bookcategory(category_id,category,parent_id)values(3,'x',1),(4,'y',1),(5,'z',2);

          將查詢結(jié)果插入的表中

          insert?into?bookcategory?select?*?from?test?where?id>5;

          自動(dòng)增加

          設(shè)置表的屬性值自動(dòng)增加:

          列名?數(shù)據(jù)類型?auto_increment

          創(chuàng)建表時(shí)添加自增列

          create?table?bookcategory_tmp(
          ?category_id?int?primary?key?auto_increment,
          ?category?varchar(20)?not?null?unique,
          ?parent_id?int?not?null
          )auto_increment=5;

          測試自增列

          insert?into?bookcategory_tmp(category,parent_id)values('dadaqianduan',0);

          去掉自增列

          alter?table?bookcategory_tmp?modify?category_id?int;

          添加自增列

          alter?table?bookcategory_tmp?modify?category_id?int?auto_increment;

          修改自增列的起始值

          alter?table?bookcategory_tmp?auto_increment?=?15;

          insert?into?bookcategory_tmp(category,parent_id)values('文學(xué)',0);

          刪除圖書信息表的外鍵

          alter?table?bookinfo?drop?foreign?key?fk_bcid;

          為圖書類別表添加自動(dòng)編號(hào)的功能

          alter?table?bookcategory?modify?category_id?int?auto_increment;

          恢復(fù)關(guān)聯(lián)

          alter?table?bookinfo?add?constraint?fk_bcid?foreign?key(book_category_id)references?bookcategory(category_id);

          單表數(shù)據(jù)記錄的更新

          向借閱信息表插入一條借閱信息

          insert?into?borrowinfo(book_id,card_id,borrow_date,return_date,status)values(20202010,46516874,'2020-11-29','2020-12-29','否');

          更新讀者信息表中的余額

          查看書的價(jià)格???79.80
          select?price?from?bookinfo?where?book_id?=?20202010;

          更新余額

          update?readerinfo?set?balance?=?balance?-?79.80*0.05?where?card_id?=?'46516874';
          select?*?from?readerinfo;

          更新圖書信息表的庫存

          update?bookinfo?set?store?=?store?-1?where?book_id?=?20150201;
          select?*?from?bookinfo;

          單表數(shù)據(jù)記錄的刪除

          刪除指定條件的記錄

          delete?from?readerinfo?where?card_id?=?'46461265464565';

          刪除表中所有記錄

          delete?from?readerinfo;

          truncate?table?readerinfo;快

          想要?jiǎng)h除表中的所有記錄,可以使用truncate table語句,truncate將直接刪除原來的表,并重新創(chuàng)建一個(gè)表,其語法結(jié)構(gòu):

          truncate?table?table_name

          查詢兒科學(xué)的類別編號(hào)

          select?category_id?from?bookcategory?where?category='兒科學(xué)';

          刪除圖書編號(hào)為5的圖書信息

          delete?from?bookinfo?where?book_category_id?=?5;

          刪除圖書類別表中兒科學(xué)這個(gè)類別

          delete?from?bookcategory?where?category?=?'兒科學(xué)';

          單表數(shù)據(jù)記錄的查詢

          查詢所有列

          select?*?from?bookcategory;

          select?category_id,category,parent_id?from?bookcategory;

          查詢指定列

          select?category?from?bookcategory;

          select?category_id,category?from?bookcategory;

          查詢指定條件的記錄

          select?book_id,book_name,price?from?bookinfo?where?press='出版社';

          查詢結(jié)果不重復(fù)的記錄

          select?distinct?press?from?bookinfo;

          查看空值

          select?*?from?readerinfo?where?age?is?null;

          分組

          統(tǒng)計(jì)讀者信息表中男讀者的人數(shù)

          select?count(*)?from?readerinfo?where?sex='男';

          將讀者信息表中的記錄按性別進(jìn)行分組

          select?sex?from?readerinfo?group?by?sex;

          將讀者信息表中的記錄按性別進(jìn)行分組,并統(tǒng)計(jì)每種性別的人數(shù)

          select?sex,count(*)?from?readerinfo?group?by?sex;

          將讀者信息表中的記錄按性別進(jìn)行分組,分組后人數(shù)大于的性別

          select?sex?from?readerinfo?group?by?sex?having?count(sex)>2;

          排序

          通過order by子句對(duì)查詢的結(jié)果進(jìn)行排序

          order?by?列名?[asc|desc]

          排序方向:

          1. 排序分為升序和降序,默認(rèn)為升序
          2. 升序asc
          3. 降序desc

          單列排序

          select?*?from?bookinfo?order?by?price;

          多列排序

          select?*?from?bookinfo?order?by?price,store;

          指定排序方向

          select?*?from?bookinfo?order?by?price,store?desc;

          limit語句限制查詢記錄的數(shù)量

          前3行記錄

          select?*?from?bookinfo?limit?3;

          從第3條記錄開始的后2條記錄

          select?*?from?bookinfo?limit?2,2;

          select?*?from?bookinfo?limit?2?offset?2;
          insert?into?bookinfo(book_id,book_category_id,book_name,author,price,press,pubdate,store)
          values
          (454235424,4,?'123',?'xxx',85.8,?'出版社',?'2020-04-01',?10),
          (452454542,4,?'456',?'xxx',?35.5,?'出版社',?'2020-08-01',?20),
          (454578754,4,?'789',?'xxx',?46.6,?'出版社',?'2020-05-01',8);

          將圖書信息按照庫存進(jìn)行分組,統(tǒng)計(jì)每組庫存下的個(gè)數(shù),然后按庫存進(jìn)行降序排序,并查看結(jié)果中的前四條記錄

          select?store,count(*)from?bookinfo?
          group?by?store?
          order?by?store?desc?
          limit?4;

          10.運(yùn)算符與函數(shù)

          MySQL 主要有以下幾種運(yùn)算符:

          1. 算術(shù)運(yùn)算符
          2. 比較運(yùn)算符
          3. 邏輯運(yùn)算符
          4. 位運(yùn)算符

          算術(shù)運(yùn)算符

          比較運(yùn)算符

          邏輯運(yùn)算符

          位運(yùn)算符

          運(yùn)算符優(yōu)先級(jí)

          讀者的身份證號(hào),姓名,電話,余額。

          select?card_id,?name,?tel,?balance?from?readerinfo?where?balance-200<=0;

          查看讀者信息表中,余額大于200的讀者信息。

          select?*?from?readerinfo?where?balance>200;

          查看讀者信息表中,余額不等于200的讀者信息。

          select?*?from?readerinfo?where?balance?<>?200;

          查看讀者信息表中,年齡不為空的讀者信息。

          select?*?from?readerinfo?where?age?is?not?null;

          查看讀者信息表中,余額在350到450之間的讀者信息。

          select?*?from?readerinfo?where?balance?between?350?and?450;
          select?*?from?readerinfo?where?name?in('dada','dada1','dada2');

          select?*?from?readerinfo?where?name?like?'張_';

          select?*?from?readerinfo?where?tel?like?'135%';

          select?*?from?bookinfo?where?price>50?and?store<5;

          select?*?from?bookinfo?where?price>80?or?press?=?'出版社';

          select?*?from?bookinfo?where?price?not?between?50?and?100;

          數(shù)值函數(shù)

          ceil返回大于x的最小整數(shù)值

          select?ceil(28.55);?//?29

          floor返回小于x的最大整數(shù)值

          select?floor(28.55);?//?28

          四舍五入 round返回最接近于參數(shù)x的整數(shù),對(duì)參數(shù)x進(jìn)行四舍五入

          select?round(28.55);?//?29
          select?round(28.55,1),round(28.55,0),round(28.55,-1);
          //?28.6?29?30

          截?cái)嗪瘮?shù)

          select?truncate(28.55,1),truncate(28.55,0),truncate(28.55,-1);
          //?28.5?28?20

          取模,返回x被y除后的余數(shù)

          select?mod(11,2);?//?1
          select?book_id,book_name,price,?round(price)?from?bookinfo;

          select?*?from?bookinfo?where?mod(book_id,2)=0;

          字符函數(shù)

          字符串連接

          select?concat('hello','world');
          select?concat_ws('-','hello','world');

          字母轉(zhuǎn)換大小寫

          select?lower('Hello?World');
          select?upper('Hello?World');

          求長度

          select?length('?hello?');

          刪除空格

          select?ltrim('?hello?'),length(ltrim('?hello?'));
          select?rtrim('?hello?'),length(rtrim('?hello?'));
          select?trim('?hello?'),length(trim('?hello?'));

          截取字符串

          select?substring('hello?world',1,5);

          select?substring('hello?world',-5,2);

          獲取指定長度的字符串

          select?left('hello?world',?5);?//?hello
          select?right('hello?world',?5);?//?world

          替換函數(shù)

          select?replace('hello?world','world','mysql');?//?hello?mysql

          格式化函數(shù)

          select?format(1234.5678,2),format(1234.5,2),format(1234.5678,0);
          //1234.57?1234.50?12345

          select?book_id,book_name,format(price,2)from?bookinfo;

          日期和時(shí)間函數(shù)

          查看當(dāng)前的系統(tǒng)日期

          select?curdate();
          //?2020-02-02
          select?curdate()+0;

          select?curtime()+0;

          查看當(dāng)前的系統(tǒng)日期和時(shí)間

          select?now();?//?2020-10-10?12:12:12

          select?sysdate();?//?2020-10-10?12:12:12

          date_add(date,interval expr type): year,month,day,week,hour

          日期的加運(yùn)算
          select?date_add('2020-01-01',?interval?5?month);?//?2020-06-01

          計(jì)算兩個(gè)日期之間間隔的天數(shù)
          select?datediff('2020-02-10','2020-02-01');

          日期格式化
          select?date_format('2020-02-01',?'%Y%m');

          聚合函數(shù)(分組函數(shù))

          | 名稱 | 描述 | | avg() | 返回某列的平均值 | | count() | 返回某列的行數(shù) | | max() | 返回某列的最大值 | | min() | 返回某列的最小值 | | sum() | 返回某列值的和 |

          求圖書信息表中,所有圖書的平均價(jià)格。

          select?avg(price)?from?bookinfo;

          求圖書信息表中,所有圖書的總價(jià)格。

          select?sum(price)?from?bookinfo;

          求圖書信息表中的最大庫存。

          select?max(store)?from?bookinfo;

          求圖書信息表中的最小庫存。

          select?min(store)?from?bookinfo;

          求圖書信息表中有多少種圖書。

          select?count(*)?from?bookinfo;

          按類別進(jìn)行分組, 查詢每種類別下有多少種圖書以及每種類別圖書的庫存總和。

          select?book_category_id?as?'圖書類別',count(book_id)?as?'圖書種類',?sum(store)?as?'庫存總和'?from?bookinfo?group?by?book_category_id;

          信息函數(shù)與加密函數(shù)

          系統(tǒng)信息函數(shù)

          查看當(dāng)前MySQL服務(wù)器版本的版本號(hào)
          select?version();

          查看MySQL服務(wù)器當(dāng)前連接的次數(shù)
          select?connection_id();

          查看當(dāng)前的數(shù)據(jù)庫名
          select?schema();

          查看當(dāng)前登錄的用戶名
          select?user();

          加密函數(shù)

          select?md5('test');

          create?table?myuser(
          ?username?varchar(10),
          ?password?varchar(35)
          );

          insert?into?myuser?values('user1',md5('pwd1'));

          select?*?from?myuser;

          select?*?from?myuser?where?username?=?'user1'?and?password?=?md5('pwd1');

          select?password('rootpwd');

          set?password?=?password('rootpwd');

          select?user,authentication_string?from?mysql.user;

          11.多表連接查詢

          多表連接查詢是從多個(gè)表中獲取數(shù)據(jù)。

          由圖書信息表:(圖書編號(hào)book_id,類別編號(hào)book_category_id,書名book_name

          由圖書類別表:(類別編號(hào)category_id,類別名稱category,父類別parent_id)

          獲取表:(圖書編號(hào)book_id,書名book_name,類別名稱category)

          多表連接的語法結(jié)構(gòu):

          table_reference
          [INNER]?JOIN?|?{LEFT|RIGHT}?[OUTER]?JOIN
          table_reference
          on?conditional_expr

          多表連接 通過查看圖書信息表和圖書類別表 來獲取圖書編號(hào)、圖書名稱、圖書類別

          select?book_id,book_name,category?from?bookinfo?inner?join?bookcategory??on?bookinfo.book_category_id?=?bookcategory.category_id;

          內(nèi)連接

          根據(jù)連接條件從多個(gè)表中查詢選擇數(shù)據(jù),顯示這些表中與連接條件相匹配的數(shù)據(jù)行,組合成新記錄。(內(nèi)連接就是兩者共同都有的

          內(nèi)連接的語法結(jié)構(gòu):

          select?column_list
          from?t1
          [INNER]?JOIN?t2?ON?join_condition1
          [INNER]?JOIN?t3?ON?join_condition2
          ...]
          where?where_conditions;

          由于圖書借閱統(tǒng)計(jì)的需要,想查詢未歸還圖書的圖書編號(hào),圖書名稱,身份證號(hào),姓名,電話,歸還日期, 是否歸還。

          select?borrowinfo.book_id,book_name,borrowinfo.card_id,?name,?tel,?return_date,?status?from?borrowinfo
          inner?join?bookinfo?on?borrowinfo.book_id?=?bookinfo.book_id
          inner?join?readerinfo?on?borrowinfo.card_id?=?readerinfo.card_id
          where?borrowinfo.status?=?'否';

          select?t1.book_id,book_name,t1.card_id,?name,?tel,?return_date,?status?from?borrowinfo?t1
          join?bookinfo?t2?on?t1.book_id?=?t2.book_id
          join?readerinfo?t3?on?t1.card_id?=?t3.card_id
          where?t1.status?=?'否';

          外連接

          外連接將查詢多個(gè)表中相關(guān)聯(lián)的行。

          外連接分為:左外連接 left outer join;右外連接right outer join

          根據(jù)業(yè)務(wù)需要,我們需要查看圖書類別表中的所有類別下都有哪些圖書。

          select?book_id,?book_name,?category?from?bookcategory
          left?join?bookinfo?on?bookcategory.category_id?=?bookinfo.book_category_id
          where?parent_id<>0;

          select?book_id,?book_name,?category?from?bookinfo?a
          right?join?bookcategory?b?on?b.category_id?=?a.book_category_id;

          select?*?from?bookcategory;

          左外連接:顯示左表全部記錄,右表滿足連接條件的記錄。

          右外連接:顯示右表全部記錄,左表滿足連接條件的記錄。

          語法結(jié)構(gòu):

          select?column_list
          from?t1
          left?|?right?[outer]?join?t2?on?join_condition1;

          自連接

          如果在一個(gè)連接查詢中,涉及的兩個(gè)表都是同一個(gè)表,這種查詢稱為自連接

          查詢所有圖書類別的圖書類別編號(hào),類別名稱,上級(jí)分類名稱。

          select?*?from?bookcategory;

          select?s.category_id?as'圖書類別編號(hào)',?s.category?as?'圖書類別名稱',?p.category?as'圖書的上級(jí)分類名稱'?from?bookcategory?s
          inner?join?bookcategory?p
          on?s.parent_id?=?p.category_id;

          多表更新

          update?
          table1?{[inner]?join?|?{left|right}?[outer]?join}?table2
          on?conditional_expr
          set?col1?=?{expr1|default}
          [,col2?=?{expr2|default}]...
          [where?where_condition]

          身份證號(hào)為432xxxxxx的讀者將超時(shí)的圖書86154歸還,根據(jù)描述實(shí)現(xiàn)如下需求:

          1. 更新借閱信息表,將借閱狀態(tài)(status)更新為‘是’。
          2. 更新罰款記錄信息表,更新實(shí)際還書日期和罰款金額,罰款金額為每超出一天扣0.2元。
          3. 同時(shí)更新讀者信息表的余額。(在余額中扣除罰款金額)
          update?readerfee?t1?join?readerinfo?t2?on?t1.card_id?=?t2.card_id
          set?actual_return_date?=?sysdate(),book_fee=datediff(sysdate(),return_date)*0.2,balance?=?balance?-?book_fee
          where?t1.book_id?=?86154?and?t1.card_id?=?'432xxxxxx';

          select?*?from?readerinfo;

          多表刪除

          delete?table1[.*],?table2[.*]
          from?table1?{[inner]join|{left|right}[outer]join}?table2
          on?conditional_expr
          [where?where_condition]

          圖書類別表,圖書信息表:

          由于業(yè)務(wù)需求,需要?jiǎng)h除圖書類別表中在圖書信息表中沒有圖書記錄的類別。

          select?book_id,book_name,category?from?bookcategory_bak?t1
          left?join?bookinfo_bak?t2?
          on?t1.category_id?=?t2.book_category_id
          where?parent_id<>0;

          delete?t1?from?bookcategory_bak?t1
          left?join?bookinfo_bak?t2?
          on?t1.category_id?=?t2.book_category_id
          where?parent_id<>0?and?book_id?is?null;

          select?*?from?bookcategory_bak;

          需要?jiǎng)h除圖書類別表的編程語言的類別,以及圖書信息表中關(guān)于編程語言的圖書記錄。

          select?book_id,book_name,category_id,category?from?bookcategory_bak?t1
          inner?join?bookinfo_bak?t2
          on?t1.category_id?=?t2.book_category_id;

          delete?t1,t2?from?bookcategory_bak?t1
          inner?join?bookinfo_bak?t2
          on?t1.category_id?=?t2.book_category_id
          where?t1.category_id?=?3;?

          多表連接

          根據(jù)連接查詢返回的結(jié)果:內(nèi)連接(inner join),外連接(outer join),交叉連接(cross join)。

          根據(jù)連接條件所使用的操作符:相等連接,不等連接。

          12.自定義函數(shù)

          創(chuàng)建函數(shù)

          CREATE?FUNCTION?函數(shù)名(參數(shù)列表)?RETURNS?返回類型
          BEGIN
          ?函數(shù)體
          END

          調(diào)用函數(shù)

          SELECT?函數(shù)名(參數(shù)列表)

          查看函數(shù)

          SHOW?FUNCTION?STATUS;

          刪除函數(shù)

          DROP?FUNCTION?IF?EXISTS?function_name;

          函數(shù):需要有返回值,可以指定0~n個(gè)參數(shù)

          創(chuàng)建自定義函數(shù):

          create?function?function_name([func_parameter])
          returns?type
          [characteristics..]?routine_body

          Characteristics指定存儲(chǔ)函數(shù)的特性,取值舉例:

          sql security{definer|invoker}指明誰有權(quán)限來執(zhí)行。

          definer表示只有定義者才能執(zhí)行。

          invoker表示擁有權(quán)限的調(diào)用者才可以執(zhí)行,默認(rèn)情況下,系統(tǒng)指定為definer。

          comment?'string':注釋信息,可以用來描述存儲(chǔ)函數(shù)。

          函數(shù)體是由sql代碼構(gòu)成,可以簡單的sql語句。如果為復(fù)合結(jié)構(gòu)需要使用begin...end語句,復(fù)合結(jié)構(gòu)可以包含聲明,流程控制。

          select?length('hello');
          select?date_format(pubdate,'%Y-%m')?from?bookinfo;

          delimiter?//?
          create?function?ym_date(mydate?date)
          returns?varchar(15)
          begin
          return?date_format(mydate,'%Y-%m');
          end//

          delimiter;
          select?ym_date(pubdate)?from?bookinfo;

          創(chuàng)建自定義函數(shù):

          語法格式:

          create?function?function_name([func_parameter])
          returns?type
          [characteristics...]?routine_body
          select?length('hello');

          select?date_format(pubdate,'%Y-%m')?from?bookinfo;
          delimiter?//
          create?function?ym_date(mydate?date)
          returns?varchar(15)
          begin
          return?date_format(mydate,'%Y-%m');
          end//
          delimiter?;

          使用(調(diào)用)自定義函數(shù)
          select?ym_date(pubdate)?from?bookinfo;

          實(shí)例分析函數(shù):

          創(chuàng)建一個(gè)函數(shù)
          delimiter?$$?--定界符
          ---?開始創(chuàng)建函數(shù)
          create?function?user_main_fn(v_id?int)
          returns?varchar(50)
          begin
          --定義變量
          declare?v_userName?varchar(50);
          --給定義的變量賦值
          select?f_userName?info?v_userName?from?t_user_main
          where?f_userId?=?v_id;
          --返回函數(shù)處理結(jié)果
          return?v_userName;
          end?$$?--函數(shù)創(chuàng)建定界符
          delimiter;

          自定義函數(shù)兩個(gè)必要條件:參數(shù),返回值

          創(chuàng)建自定義函數(shù)

          create?function?function_name
          returns
          {string|integer|real|decimal}
          routine_body

          語法格式:

          CREATE?FUNCTION?function_name([func_parameter])
          RETURNS?type
          [characteristics?…?]?routine_body
          1. function_name : 函數(shù)名稱
          2. func_parameter : 函數(shù)的參數(shù)列表
          3. RETURNS type : 指定返回值的類型
          4. Characteristics : 指定存儲(chǔ)函數(shù)的特性
          5. routine_body : 函數(shù)體

          創(chuàng)建無參的自定義函數(shù):

          刪除自定義函數(shù)

          DROP?FUNCTION?[IF?EXISTS]?func_name;
          SELECT?DATE_FORMAT(NOW(),?'%Y年%m月%d日?%H點(diǎn):%i分:%s秒')

          CREATE?FUNCTION?f1()?RETURNS?VARCHAR(30)
          RETURN?DATE_FORMAT(NOW(),?'%Y年%m月%d日?%H點(diǎn):%i分:%s秒');

          SELECT?f1();

          復(fù)合結(jié)構(gòu)體的函數(shù)

          --?將語句結(jié)束符改為$$,為了防止下面的函數(shù)將;看成是語句的結(jié)束
          DELIMITER?$$

          CREATE?FUNCTION?adduser(username?VARCHAR(20))
          RETURNS?INT?UNSIGNED
          RETURN
          BEGIN
          INSERT?INTO?table_1(username)?VALUES(username);
          LAST_INSERT_ID();
          END;

          --?將分隔符改回來
          DELIMITER?;

          流程控制的使用

          常用的流程控制語句:

          1. IF條件判斷語句-if
          2. CASE條件判斷語句-case
          3. WHILE循環(huán)語句-while
          4. LOOP循環(huán)語句-loop
          5. REPEAT循環(huán)語句-repeat

          13.存儲(chǔ)過程

          局部變量以關(guān)鍵字DECLARE聲明

          DECLARE?var_name?[,?varname2,?varname3?…]?date_type?[DEFAULT?value];
          例:DECARE num INT DEFAULE 10;

          內(nèi)部BEGIN…END塊中定義的變量只在該塊內(nèi)有效

          會(huì)話變量的作用范圍為整個(gè)程序

          語法結(jié)果

          create?procedure?proc_name([proc_parameter])
          [characteristics...]?routine_body
          delimiter?//?
          create?procedure?selectproc1()
          begin
          select?book_id,?book_name,?price,?store?from?bookinfo;
          end?//
          delimiter;

          call?selectproc();

          刪除存儲(chǔ)過程:

          drop?procedure?[if?exists]?proc_name;
          創(chuàng)建一個(gè)查詢圖書的編號(hào)、書名、價(jià)格和庫存的存儲(chǔ)過程。
          delimiter?//
          create?procedure?selectproc1()
          begin
          select?book_id,book_name,price,store?from?bookinfo;
          end//
          delimiter?;

          調(diào)用存儲(chǔ)過程
          call?selectproc1();
          創(chuàng)建查詢圖書編號(hào)、書名、圖書類別的存儲(chǔ)過程
          delimiter?//
          create?procedure?proc1()
          begin
          select?book_id,book_name,category?from?bookinfo?t1
          join?bookcategory?t2
          on?t1.book_category_id?=?t2.category_id;
          end//
          delimiter?;

          call?proc1();

          設(shè)計(jì)一個(gè)存儲(chǔ)過程,刪除一個(gè)讀者,并輸出剩余讀者的個(gè)數(shù)。
          delimiter?//
          create?procedure?proc2(in?cid?char(18),?out?num?int)
          begin
          delete?from?readerinfo?where?card_id?=?cid;
          select?count(card_id)?into?num?from?readerinfo;
          end//
          delimiter?;

          select?*?from?readerinfo;
          call?proc2('6545xx',?@num);
          select?@num;


          設(shè)計(jì)一個(gè)存儲(chǔ)過程,實(shí)現(xiàn)交換兩個(gè)數(shù)的處理。
          delimiter?//
          create?procedure?proc3(inout?num1?int,?inout?num2?int)
          begin
          declare?t?int?default?0;
          set?t?=?num1;
          set?num1?=?num2;
          set?num2?=?t;
          end//
          delimiter?;

          set?@n1?=?3,?@n2?=?5;
          call?proc3(@n1,@n2);
          select?@n1,@n2;

          刪除存儲(chǔ)過程
          drop?procedure?proc1;
          drop?procedure??if?exists?proc2;

          存儲(chǔ)過程和函數(shù)的區(qū)別

          存儲(chǔ)過程,存儲(chǔ)過程實(shí)現(xiàn)的功能比較復(fù)制,功能強(qiáng)大,可以執(zhí)行包括修改表等一系列數(shù)據(jù)庫操作。

          存儲(chǔ)函數(shù),實(shí)現(xiàn)的功能針對(duì)性比較強(qiáng)。

          返回值上的不同

          存儲(chǔ)過程:可以返回多個(gè)值,也可以不返回值,只是實(shí)現(xiàn)某種效果或動(dòng)作。

          存儲(chǔ)函數(shù):必須有返回值,而且只能有一個(gè)返回值。

          參數(shù)不同

          存儲(chǔ)過程:存儲(chǔ)過程的參數(shù)類型有三種,in,out,inout。

          存儲(chǔ)函數(shù):參數(shù)類型只有一種,類似于in參數(shù),調(diào)用函數(shù)時(shí)需要按照參數(shù)的類型指定值即可。

          語法結(jié)構(gòu)

          存儲(chǔ)過程,存儲(chǔ)過程聲明時(shí)不需要指定返回類型。

          存儲(chǔ)函數(shù),函數(shù)聲明時(shí)需要指定返回類型,且在函數(shù)體中必須包含一個(gè)有效的return語句。

          調(diào)用方式

          存儲(chǔ)過程,用call語句進(jìn)行調(diào)用

          存儲(chǔ)函數(shù),嵌入在sql中使用的,可以在select中調(diào)用

          14.事務(wù)

          事務(wù)必須滿足的四個(gè)條件:

          atomicity?原子性
          consistency?一致性
          lsolation?隔離性
          durability?持久性

          控制事務(wù)處理

          rollback,回滾會(huì)結(jié)束用戶的事務(wù),并撤銷正在進(jìn)行的所有未提交的修改

          commit,會(huì)提交事務(wù),并使已對(duì)數(shù)據(jù)庫進(jìn)行的所有修改稱為永久性的

          savepoint identifier,允許在事務(wù)中創(chuàng)建一個(gè)保存點(diǎn),一個(gè)事務(wù)中可以有多個(gè)savepoint

          rollback to identifier,把事務(wù)回滾到標(biāo)記點(diǎn)

          事務(wù)處理主要有兩種方法

          begin, rollback, commit來實(shí)現(xiàn)

          1. begin,start transaction開始一個(gè)事務(wù)
          2. rollback事務(wù)回滾
          3. commit事務(wù)確認(rèn)

          直接用set來改變mysql的自動(dòng)提交模式

          1. set autocommit = 0 禁止自動(dòng)提交
          2. set autocommit = 1 開始自動(dòng)提交

          innodb使用事務(wù)

          從Mysql5.5版本開始,InnoDB是默認(rèn)的表存儲(chǔ)引擎。

          innodb是事務(wù)型數(shù)據(jù)庫的首選引擎,支持事務(wù)安全表。

          MySql中 delimiter

          默認(rèn)下,delimiter是分號(hào),在命令行客戶端中,如果有一行命令以分號(hào)結(jié)束,那么回車后,mysql將會(huì)執(zhí)行該命令。

          (告訴mysql解釋器,該段命令是否已經(jīng)結(jié)束了,mysql是否可以執(zhí)行了。)

          什么是存儲(chǔ)引擎:數(shù)據(jù)庫存儲(chǔ)引擎是數(shù)據(jù)庫底層軟件組件。數(shù)據(jù)庫管理系統(tǒng)使用數(shù)據(jù)引擎進(jìn)行創(chuàng)建,查詢,更新和刪除數(shù)據(jù)的操作。

          mysql的核心就是存儲(chǔ)引擎。

          innodb存儲(chǔ)引擎

          • 它為mysql提供了具有提交,回滾和崩潰恢復(fù)能力的事務(wù)安全存儲(chǔ)引擎。
          • 對(duì)于處理巨大數(shù)據(jù)量的數(shù)據(jù)擁有很好的性能
          • innodb存儲(chǔ)引擎支持外鍵完整性約束
          • innodb被用在眾多需要高性能的大型數(shù)據(jù)庫站點(diǎn)上

          設(shè)置存儲(chǔ)引擎:

          1. 設(shè)置服務(wù)器的存儲(chǔ)引擎
          2. 在配置文件my.ini中的mysqld下面設(shè)置需要的存儲(chǔ)引擎
          3. default-storage-engine=InnoDB
          4. 重啟mysql服務(wù)器
          創(chuàng)建表(單個(gè))設(shè)置存儲(chǔ)引擎
          create?table?mytest(
          ?id?int?primary?key,
          ?name?varchar(10)
          )?engine?=?innodb?default?charset?=?utf8;

          修改表的存儲(chǔ)引擎

          alter?table?tablename?engine?=?engineName

          15.管理與維護(hù)

          管理用戶

          USE?mysql;

          select?user?from?user;

          權(quán)限表:存儲(chǔ)賬號(hào)的權(quán)限信息表:user,db,host,tables_priv,columns_privprocs_priv

          各個(gè)權(quán)限表的作用

          tables_priv表用來對(duì)表設(shè)置操作權(quán)限;columns_priv表用來對(duì)表的某一列設(shè)置權(quán)限;procs_priv表可以對(duì)存儲(chǔ)過程和存儲(chǔ)函數(shù)設(shè)置操作權(quán)限。

          使用CREATE USER語句創(chuàng)建新用戶

          語法格式:

          CREATE?USER?“user”@“host”?[IDENTIFIED?BY?“password”];

          使用DROP USER 語句刪除用戶

          語法格式:

          DROP?USER?user[,?user];

          例:使用DROP USER刪除賬戶"rose"@"localhost":
          DROP?USER?"rose"@"localhost";

          示例:

          查看日志文件的路徑
          show?variables?like?'log_error';

          創(chuàng)建新的日志信息表
          flush?logs;

          創(chuàng)建新的日志信息表
          mysqladmin?-uroot?-p?flush-logs



          --------? ?往 期 推 薦??----------

          ? ??

          瀏覽 55
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久久成人免费视频 | 高清五码一区二区三区 | 91视频久久久久久久久久久 | 亚洲天堂一区二区三区在线观看 | 欧美性爱首页大导航 |