DBA成長(zhǎng)之路---mysql數(shù)據(jù)庫(kù)服務(wù)基礎(chǔ)(二)

管理表記錄 

創(chuàng)新互聯(lián)是專業(yè)的乳山網(wǎng)站建設(shè)公司,乳山接單;提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行乳山網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

增加

insert into 庫(kù).表 values(字段值列表);

insert into 庫(kù).表(字段值列表) values(字段值列表);

insert into 庫(kù).表 values(字段值列表),(字段值列表);

查詢

單表查詢

select 字段名列表 from 庫(kù).表 where 條件;

條件匹配的表示方法

數(shù)值比較

        字段名 符號(hào) 值 符號(hào):>  >=  <  <=  =  !=

        字符比較

        字段名 符號(hào) "值"  符號(hào): =  !=

        范圍內(nèi)匹配

        字段名 in (值列表)在...里

        select id,name from user where name in ("apache","root","bob");

        select id,name,uid from user where uid in (1,2,3,4);

        字段名 not in(值類表)不在...里

        select name from user where uid not in(0,1,2,3,4,5);

        字段名 between 值  and 值 在...之間(數(shù)值類型)

        select * from user where id between 10 and 15;

        select name from user where uid between 1 and 10;

        

        匹配空  is null

        字段名 is null

        匹配非空  is not null

        字段名  is not null

        select id from user where name is null;

空的定義

        insert into user(name) values (""),("null"),(null);

        select id,name from user where name="";

        select id,name from user where name="null";

        select id,name from user where name is null;

        MySQL> select id,name from user where id between 45 and 47;

        +-------+----------+

        | id      | name    |

        +-------+----------+

        |  45    |               |

        | 46     | null       |

        | 47     | NULL   |

        +-------+-----------+

        3 rows in set (0.00 sec)

    

        不顯示重復(fù)值

        distinct 字段名

        select shell from user;

        select distinct shell from user;

        mysql> select distinct shell from user;

        +----------------------------+

        | shell                           |

        +----------------------------+

        | /bin/bash                   |

        | /sbin/nologin             |

        | /bin/sync                    |

        | /sbin/shutdown         |

        | /sbin/halt                    |

        | /bin/false                    |

        | NULL                          |

        +----------------------------+

        7 rows in set (0.00 sec)

邏輯匹配: 有多個(gè)條件時(shí)

        邏輯與  and  多個(gè)條件必須都成立

        邏輯或or多個(gè)條件有一個(gè)成立即可

        邏輯非  !取反

        select id,name from user where name="zhangsan"and uid=500 and shell="/bin/bash";

運(yùn)算操作 +  -  *  /  %

        字段名 符號(hào)  字段名

        select uid+gid as heid from user where name='root';

        select uid+gid  heid from user where name='root';

模糊查詢

        where 字段名 like '表達(dá)式'

        _匹配任意一個(gè)字符 % 0個(gè)或多個(gè)字符

        select name from user where name like '____' and uid <= 10;

        select name from user where name like '%a%';

        

正則匹配

        where 字段名 regexp '正則表達(dá)式';

        . ^  $   [ ]  *

        mysql> select name,uid from user where uid regexp '^..$';

         

函數(shù)

        簡(jiǎn)單篩選/統(tǒng)計(jì)

        avg() 集合平均值

        sum()對(duì)集合的各參數(shù)求和

        min() 集合中的最小值

        max() 集合中的最大值

        count() 記錄的各數(shù)

        

查詢排序 

        sql查詢 order by 字段名 asc/desc(降序)

        select name,uid from user where uid between 10 and 50 order by uid ;

查詢分組 

        sql查詢 group by 字段名

        select shell from user where uid between 10 and 50 group by shell;

        和不顯示重復(fù)相似

查詢限制顯示行數(shù) limit

        select shell from user where uid between 10 and 50 limit 1;

        select * from user limit 1;#顯示查詢的前一行

        select * from user limit 2,3;#設(shè)置顯示行范圍  從第2行顯示(行數(shù)開始為0行) 顯示3行

多表查詢

        select 字段名列表 from 表名列表;笛卡爾集

        select 字段名列表 from 表名列表 where 條件;

        create table studb.t1 select name,uid,shell from user limit 3;

        create table studb.t2 select name,uid,homedir from user limit 4;

        select t1.*,t2.homedir from t1,t2 where t1.uid =t2.uid;

嵌套查詢

        where 嵌套查詢:把內(nèi)層的查詢結(jié)果做為外層查詢的查詢條件

        select 字段名列表 from 表名 where 條件 (select 字段名列表 from 表名 where 條件)

        select name,uid from user where uid > (select avg(uid) from user);

        select name from user where name in (select user from mysql.user);

復(fù)制表:作用:快速建表,備份表

        create table 庫(kù).表 sql查詢;

        復(fù)制表

        create database dbbak;

        create table dbbak.user2 select * from user;

        復(fù)制表沒有源表的屬性和鍵值

復(fù)制表結(jié)構(gòu)

        create table dbbak.user3 select * from user where 1=2;

連接查詢

        左連接查詢

        select 字段列表 from  表A left join 表B on 條件

        右連接查詢

        select 字段列表 from  表A right join 表B on 條件

        create table studb.t3 select name,uid,shell from user limit 3;

        create table studb.t4 select name,uid,shell from user limit 5;

        mysql> select * from t3 left join t4 on t3.uid=t4.uid;#以左為主 顯示

        mysql> select * from t3 right join t4 on t3.uid=t4.uid; #以右為主 顯示

        

修改

    批量修改

        update 庫(kù).表 set 字段名=值,字段名='值'

        mysql> update user set age="18";

        修改指定記錄字段的值

        update 庫(kù).表 set 字段名=值,字段名='值' where 條件

        mysql> update user set name="zhangsan" where id=48;

        

刪除

        以行為刪除單位

        delete from 庫(kù).表 where 條件;

        mysql> delete from user where shell is NULL;

        

mysql 鍵值(限制如何給字段賦值)

普通索引 index

        什么是索引 : 類似“一個(gè)書的目錄” 樹型目錄結(jié)構(gòu)

        索引的優(yōu)點(diǎn) : 加快查詢的速度

        索引的缺點(diǎn) : 減慢寫的速度 (insert update delete);占用物理存儲(chǔ)空間

        

使用普通索引  索引index

        索引的使用規(guī)則

        默認(rèn)可以重復(fù),可以賦NULL值

        可以由多個(gè)index字段

        把查詢條件做為索引

        查看decs 表名;

        show index from 表名;

        標(biāo)志 MUL

        創(chuàng)建

        建表時(shí)創(chuàng)建索引:

        mysql> create table t25(

            -> name char(10),

            -> age int,

            -> sex enum("boy","girl"),

            -> index(sex)#索引名 默認(rèn)和字段名相同

            -> index(name)

            -> );

        在已有表創(chuàng)建索引 create index 索引名 on 表名(被賦索引的字段名)

        mysql> create index age on t21(age);

        mysql> show index from t21\G;

        Table: t21

           Non_unique: 1

             Key_name: age

         Seq_in_index: 1

          Column_name: age

            Collation: A

          Cardinality: 4

             Sub_part: NULL

               Packed: NULL

         Null: YES

           Index_type: BTREE

              Comment: 

        Index_comment: 

        

        默認(rèn)使用的索引類型(Index_type):BTREE(二叉樹)

        還支持 hash B+TREE

        

        刪除drop index 索引名 on 表名;

        mysql> drop index a1 on t21;

fulltext 全文索引


unique 唯一索引

一個(gè)表中有多個(gè)unique字段

可以為空 但是有值不能重復(fù)

mysql> create table t211( stu_id char(9), name char(10), sex enum('boy','girl'), unique(stu_id) );

mysql> desc t211;

key標(biāo)識(shí)是UNI 

mysql> alter table t211 modify stu_id char(9) not null;

mysql> desc t211;

key標(biāo)志是PRI 但是不是主鍵

mysql> drop index stu_id on t211;

創(chuàng)建 unique index

mysql> create unique index stu on t211(stu_id);

主鍵

        主鍵使用規(guī)則

        一個(gè)表中只能有一個(gè)primary key

        不允許重復(fù) 不能為空

        查看 decs 表名;

        標(biāo)志 PRI

        創(chuàng)建建表時(shí)創(chuàng)建主鍵:

        mysql> create table t26(

            -> name char(10),

            -> age int,

            -> likes set("a","b","c"),

            -> primary key(name)

            -> );

        mysql> create table t22(

            -> id int primary key,

            -> name char(10)

            -> );

        在已有表創(chuàng)建主鍵:

        mysql> alter table t25 add primary key(name);

        刪除 alter table 表名 drop primary key;

        mysql> alter table t25 drop primary key;

        

        復(fù)合主鍵多個(gè)字段一起做主鍵 字段的值不允許同時(shí)重復(fù)

        查看

        mysql> desc t28;

        建表時(shí)創(chuàng)建主鍵:

        mysql> create table t28(

            -> cip char(15),

            -> port smallint,

            -> status enum("allow","deny") defualt "deny",

            -> primary key(cip,port)

            -> );

        在已有表創(chuàng)建主鍵:

        mysql> alter table t28 add primary key (cip,port);

        刪除

        mysql> alter table t28 drop primary key;

        主鍵一般 與auto_increment 連用

            字段值自動(dòng)增長(zhǎng)

        滿足條件 主鍵 數(shù)值類型

        創(chuàng)建表

        mysql> create table t27(

            -> id int(2) zerofill primary key auto_increment,

            -> name char(10),

            -> class char(4),

            -> index (name)

            -> );

        刪除自動(dòng)增長(zhǎng)的主鍵

        mysql> alter table t27 modify id int(2) unsigned zerofill not null;

        mysql> alter table t27 drop primary key;

    

外鍵 

        作用:限制給字段賦值的。值必須在指定表中指定字段值的范圍里選擇

        表的存儲(chǔ)引擎必須是 innodb

        字段類型要一致

        被參照字段必須要是索引類型的一種

        創(chuàng)建命令

        foreign key(字段名) references 表名(字段名) 

        on update cascade同步更新

        on delete cascade同步刪除

        update 表名 set 字段名=值  where 條件;

        delete from 表名 where 條件

        刪除外鍵

        mysql> show create table xsb;#查看建表命令

        可以查看外鍵名

        alter table 表名 drop foreign key 外鍵名

        

        在已經(jīng)創(chuàng)建的表上添加外鍵

        alter table 表名 add foreign key(字段名) references 表名(字段名) 

        on update cascade同步更新

        on delete cascade同步刪除

mysql 服務(wù)的體系結(jié)構(gòu):(8個(gè)功能模塊)

        連接池:檢查是否可以連接mysql

       sql接口: 執(zhí)行的命令 傳遞給mysqld

        分析器:分析語(yǔ)法錯(cuò)誤

        優(yōu)化器:優(yōu)化執(zhí)行命令

        查詢緩存:數(shù)據(jù)庫(kù)的物理內(nèi)存劃分出的 每次查詢 先找查詢緩存

        存儲(chǔ)引擎

        文件系統(tǒng)

      管理工具:安裝mysql給提供的一些軟件工具

        

mysql存儲(chǔ)引擎:

存儲(chǔ)引擎介紹

        mysql 數(shù)據(jù)庫(kù)服務(wù)軟件自帶的程序。

        不同的存儲(chǔ)引擎有不同的功能和數(shù)據(jù)存儲(chǔ)方式

        查看數(shù)據(jù)庫(kù)服務(wù)支持的存儲(chǔ)引擎

        mysql> show engines;

        | InnoDB             | DEFAULT |#default 默認(rèn)存儲(chǔ)引擎

        | MyISAM             | YES     |

常用的存儲(chǔ)引擎

    myisam

        表.frm 表結(jié)構(gòu)

        表.MYI索引信息

        表.MYD數(shù)據(jù)

        支持表級(jí)鎖(鎖一張表)

        不支持事務(wù) 不支持事務(wù)回滾

   innodb

        表.frm 表結(jié)構(gòu)

        表.ibd表結(jié)構(gòu) 索引信息

        支持行級(jí)鎖(只給當(dāng)前被訪問(wèn)的行加鎖)

        支持事務(wù) 事務(wù)回滾

        事務(wù)日志文件 :記錄對(duì)innodb存儲(chǔ)引擎的表執(zhí)行過(guò)的操作

        /var/lib/mysql/ib_logfile*

        

   

        鎖類型:讀鎖 select 

         寫鎖insert delete update

        鎖粒度:行級(jí)鎖  表級(jí)鎖

        鎖作用:解決并發(fā)訪問(wèn)沖突問(wèn)題

        

 事務(wù):一次從開始訪問(wèn)到訪問(wèn)結(jié)束的過(guò)程

        事務(wù)回滾:一次數(shù)據(jù)訪問(wèn) 任意一步執(zhí)行失敗,恢復(fù)所有操作。

        事務(wù)的特性:一致性,原子性,隔離性

        最典型的事務(wù)操作:銀行轉(zhuǎn)賬

        

        工作如何決定表使用的存儲(chǔ)引擎

        接收寫操作多的表適合使用innodb存儲(chǔ)引擎。(并發(fā)訪問(wèn)大)

        接收讀操作多的表適合使用myisam存儲(chǔ)引擎。(節(jié)省資源)

        

設(shè)置數(shù)據(jù)庫(kù)服務(wù)的存儲(chǔ)引擎

        

        設(shè)置服務(wù)的默認(rèn)存儲(chǔ)引擎

        [mysqld]

        defaulf-storage-engine=myisam

        

        mysql> create table tt1(id int(2));

        mysql> show create table tt1;

        ...

        | tt1   | CREATE TABLE `tt1` (

          `id` int(2) DEFAULT NULL

        ) ENGINE=MyISAM DEFAULT CHARSET=latin1 |

        ...

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

        alter table 表名 engine=存儲(chǔ)引擎;

        

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

        creat table 表名(...)engine=存儲(chǔ)引擎;

        

        

        

        

        

        

網(wǎng)頁(yè)標(biāo)題:DBA成長(zhǎng)之路---mysql數(shù)據(jù)庫(kù)服務(wù)基礎(chǔ)(二)
當(dāng)前地址:http://muchs.cn/article0/ipieio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、網(wǎng)站排名、品牌網(wǎng)站設(shè)計(jì)網(wǎng)站導(dǎo)航、ChatGPT、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)