dml语句包括哪些_MySQL数据操作(DML)语句,入门掌握这些足够了
DML是(Data Manipulation Languages)數(shù)據(jù)定義語言的縮寫
主要包括表記錄的插入insert、更新update、刪除select
插入記錄
insert into table(field1,field2,...fieldn) values(value1,value2,...value)如:向表 emp 中插入以下記錄:+--------+----------+---+------+| ename | hiredate | sal | deptno+--------+---------+----+------+| xxto | 2000-01-01 | kk | 1+--------+---------+---+-------+mysql> insert into emp(ename,hiredate,sal,deptno) value('xxto','2000-01-01','kk',1);在字段是設(shè)置默認(rèn)值、允許為空、自增字段,可以不用在value后寫值,字段名可不用寫
如:只對表中的 ename 和 sal字段顯式插入值
mysql> insert into emp(ename,sal) value ('dony', 1000); mysql> insert into emp(ename,sal) value ('dony', 1000);mysql> select * from emp;+------+-------+-------+------------+---------+--------+| age | ename | birth | hiredate | sal | deptno |+------+-------+-------+------------+---------+--------+| NULL | zzxl | NULL | 2000-01-01 | 2000.00 | 1 || NULL | dony | NULL | NULL | 1000.00 | NULL |+------+-------+-------+------------+---------+--------+2 rows in set (0.00 sec)插入多條值
mysql> insert into emp(ename,sal) value ('name1', 1001), ('name2', 1002);mysql> insert into emp(ename,sal) value ('name1', 1001), ('name2', 1002); mysql> select * from emp;+------+-------+-------+------------+---------+--------+| age | ename | birth | hiredate | sal | deptno |+------+-------+-------+------------+---------+--------+| NULL | zzxl | NULL | 2000-01-01 | 2000.00 | 1 || NULL | dony | NULL | NULL | 1000.00 | NULL || NULL | name1 | NULL | NULL | 1001.00 | NULL || NULL | name2 | NULL | NULL | 1002.00 | NULL |+------+-------+-------+------------+---------+--------+4 rows in set (0.00 sec)更新記錄
update tablename set field1=value1,field2=value2,...fieldn =valuen[where condition]如:將表 emp 中 ename 為 “name1”的 sal 從 1001 更改為 4000
mysql> update emp set sal=4000 where ename='name1';同時更新兩個數(shù)據(jù)表的數(shù)據(jù)
mysql> update emp a, dept b set a.sal=a.sal*b.deptno, b.deptname=a.ename where a.deptno=b.deptno;查詢記錄
select * from tablename[where condition]查詢表中所有字段
mysql> select * from emp;查詢不重復(fù)字段值的記錄(需要使用關(guān)鍵字distinct),如:查詢字段deptno
mysql> select * from emp;+------+-------+-------+------------+---------+--------+| age | ename | birth | hiredate | sal | deptno |+------+-------+-------+------------+---------+--------+| NULL | zzxl | NULL | 2000-01-01 | 2000.00 | 1 || NULL | dony | NULL | NULL | 1000.00 | 2 || NULL | name1 | NULL | NULL | 4000.00 | 1 || NULL | name2 | NULL | NULL | 1002.00 | 2 |+------+-------+-------+------------+---------+--------+4 rows in set (0.00 sec)mysql> select distinct deptno from emp;+--------+| deptno |+--------+| 1 || 2 |+--------+2 rows in set (0.00 sec)根據(jù)條件查詢
mysql> select * from emp where deptno=1;多條件查詢
mysql> select * from emp where deptno=1 and sal<3000;排序和查詢
select * from tablename [where condition] [order by field1 [DESC|ASC], field2 [DESC|ASC,...field[DESC|ASC]]]默認(rèn)是升序排列(ASC)field如:吧emp表中的記錄按照 sal 高低進(jìn)行顯示
mysql> select * from emp order by sal;根據(jù)多個字段排序
從第一個字段排序,遇到相同的值則相同的記錄以第二個字段重新裴谞,以此類推。
mysql> select * from emp order by deptno,sal desc;+------+-------+-------+------------+---------+--------+| age | ename | birth | hiredate | sal | deptno |+------+-------+-------+------------+---------+--------+| NULL | name1 | NULL | NULL | 4000.00 | 1 || NULL | zzxl | NULL | 2000-01-01 | 2000.00 | 1 || NULL | name2 | NULL | NULL | 1002.00 | 2 || NULL | dony | NULL | NULL | 1000.00 | 2 |+------+-------+-------+------------+---------+--------+限制顯示的記錄
select ...[limit offset_start,row_count]
offset_start表示記錄的起始偏移量,如果沒寫則默認(rèn)為0,記錄起始下標(biāo)為0。row_count表示顯示的行數(shù)
mysql> select * from emp order by sal limit 3;mysql> select * from emp order by sal limit 1,4;聚合
對數(shù)據(jù)進(jìn)行匯總、求和、最大值、最小值等條件的過濾
在 emp 表中統(tǒng)計記錄數(shù)
mysql> select count(1) from emp;統(tǒng)計字段相同值的記錄數(shù)
mysql> select deptno, count(1) from emp group by deptno;統(tǒng)計字段相同值得記錄數(shù)和總記錄數(shù)
mysql> select deptno, count(1) from emp group by deptno with rollup;統(tǒng)計字段deptno大于2的記錄數(shù)
mysql> select deptno, count(1) from emp group by deptno having count(1) > 2;統(tǒng)計 字段sal 的總和、最高和最低記錄
mysql> select sum(sal),max(sal),min(sal) from emp;表連接
表連接
內(nèi)連接
內(nèi)連接和外連接的區(qū)別在于僅選出兩張表中互相匹配的記錄
如:顯示出兩張表(empdept)中 字段(deptno)值相同記錄的ename和deptname字段
mysql> select ename, deptname from emp,dept where emp.deptno=dept.deptno;外連接
外鏈接分為左連接和右連接
左連接:包含所有的左邊表的記錄甚至是右邊表中沒有和它匹配的記錄。
右連接:包含所有的右邊表的記錄甚至是左邊表中沒有和它匹配的記錄。
如:查詢表(emp 和 dept)中的字段(ename 和 deptname),條件是兩邊相同值得字段(deptno)
左連接:
mysql> select ename, deptname from emp left join dept on dept.deptno=emp.deptno;右連接:
mysql> select ename, deptname from dept right join emp on dept.deptno=emp.deptno;子查詢
當(dāng)進(jìn)行查詢的時候,需要的條件是另外一個select語句的結(jié)構(gòu),這個時候就要用到子查詢。用于子查詢的關(guān)鍵字主要包括in、not in、=、!=、exists、not exists等。
從 emp 表中查詢出所有部門在 dept 表中的記錄
mysql> select * from emp where deptno in ( select deptno from dept );如果子查詢記錄數(shù)唯一,可以用=代替in
mysql> select * from emp where deptno = (select deptno from dept);表連接:
mysql> select emp.* from emp, dept where emp.deptno=dept.deptno;記錄聯(lián)合
將兩個表的數(shù)據(jù)按照一定的查詢條件查詢出來后,將結(jié)果合并到一起顯示出來
需要使用union和union all關(guān)鍵字來實現(xiàn)
如: 將 emp 和 dept 表中的部門編號的集合顯示出來:
使用union all:全部顯示
mysql> select deptno from emp -> union all -> select deptno from dept;使用union:去除重復(fù)后顯示
mysql> select deptno from emp -> union -> select deptno from dept;選擇操作
顯示數(shù)據(jù)表前50行
SELECT * FROM `庫名`.`表名` ORDER BY `id` DESC LIMIT 0,50;刪除操作
刪除操作
刪除數(shù)據(jù)表指定ID行
delete from `庫名`.`表名` where `id`=82;DELETE FROM tbname WHERE id > 49 AND id < 151修改操作
修改數(shù)據(jù)表指定行的ID值為1
update `庫名`.`表名` set `id`=1 where `id`=2;更改索引值
讓自動索引從3開始
ALTER TABLE `emp` AUTO_INCREMENT=3;查詢結(jié)果輸出到excel文件
select * into outfile '/tmp/tmp.xls' from help_cat where 1 order by cat_id desc limit 0,20;圖片源于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系刪除!
總結(jié)
以上是生活随笔為你收集整理的dml语句包括哪些_MySQL数据操作(DML)语句,入门掌握这些足够了的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python读word文档doc公文标题
- 下一篇: 电脑主板的jfp1怎么插(主机jfp1怎