1. 程式人生 > >運維基本功之mariadb基本操作

運維基本功之mariadb基本操作

font 說明 語句 varchar ack lec 重復值 count 某個字段

mariadb作為mysql數據庫的升級改版,最大的不同恐怕要屬存儲引擎的變更,數據庫對於事務的支持,使得熱備數據庫數據得以實現。本文討論有關mariadb的基本操作增(insert)/刪(delete)/改(update)/查(select);所有操作基於示例來說明。

  例1:MariaDB [m33student]> create table student (id tinyint unsigned primary key, name varchar(20) not null, age tinyint unsigned,sex char(1) default "m" );

      MariaDB [m33student]> desc student;       

+-------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
| id | tinyint(3) unsigned | NO | PRI | NULL | |
| name | varchar(20) | NO | | NULL | |


| age | tinyint(3) unsigned | YES | | NULL | |
| sex | char(1) | YES | | m | |
+-------+---------------------+------+-----+---------+-------+

上例演示了建表過程,()內定義了各字段及屬性。

若刪除剛創建的表student:MariaDB [m33student]> drop table student;

*查看索引(索引的存在極大優化了數據庫查詢速度,但當新數據插入時,索引降低了插入速度)


  MariaDB [m33student]> show indexes from student\G;(\G選項調整了輸出效果)

*增加唯一性約束條件

  MariaDB [m33student]> alter table student add unique key (phone);

*刪除列

  MariaDB [m33student]> alter table student drop phone;

*創建索引

  MariaDB [m33student]> create index age_index on student(phone);

  例2:MariaDB [m33student]> insert into student (id,name,sex) values (4,‘Sarah‘,‘f‘),(5,‘Mily‘,‘f‘),(6,‘Jack‘,default);

上例演示了同時插入多行的情況。

  例3:MariaDB [m33student]> delete from emp where id=1;

     MariaDB [m33student]> delete from emp;

上例演示了刪除表中單行記錄以及所有記錄。

  例4:MariaDB [m33student]> update student set phone=‘18438613802‘ where id=2;

     MariaDB [m33student]> update emp set phone=‘18438613802‘ ;

上例演示了針對某一行記錄的某個字段的改動,以及對整個表“phone”字段的改動。

註意,對於查詢操作而言,由於其可能會涉及到多表聯查,函數等功能,因此sql語句會復雜一些。

  **查詢當前登錄的賬戶:

            MariaDB [hellodb]> select user();

  **查詢當前數據庫的版本信息:

            MariaDB [hellodb]> select version();

  **查詢當前使用的數據庫:

            MariaDB [hellodb]> select database();

  例5:MariaDB [hellodb]> select count(*) from scores where score > 50;

     MariaDB [hellodb]> select count(distinct classid) from students;

上例中出現了count函數,count() 返回表中滿足where條件的行的數量,如沒有Where條件,列出所有行的總數。第二行中count函數中又套用了distinct函數,旨在去除重復值。

  **最大值,最小值,平均值,求和函數的應用分別為:

    select max(score) /min(score)/avg(score)/sum(score) from scores;

  算平均值時,註意null不會參與組函數,所以要先用ifnull將null轉為0:MariaDB [hellodb]> select avg(ifnull(score,0)) from scores;

  例6:select courseid,avg(nullif(score,0)) as avg from scores group by courseid having avg>60;

上例中as avg 作為avg(nullif(score,0))的別名設置,可以省略as,執行後將以courseid為分組只顯示均值大於的行,字段為courseid,avg。

  **取前6行;取第7,8,9行

    select * from students limit 6;

    select * from students limit 6,3;

  **以年齡排序後,顯示年齡最大的前10位同學的信息

    MariaDB [hellodb]> select * from students order by age desc limit 10;

        

  

運維基本功之mariadb基本操作