運維基本功之mariadb基本操作
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基本操作