日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

dml语句包括哪些_MySQL数据操作(DML)语句,入门掌握这些足够了

發布時間:2023/12/3 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dml语句包括哪些_MySQL数据操作(DML)语句,入门掌握这些足够了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DML是(Data Manipulation Languages)數據定義語言的縮寫

主要包括表記錄的插入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);

在字段是設置默認值、允許為空、自增字段,可以不用在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';

同時更新兩個數據表的數據

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;

查詢不重復字段值的記錄(需要使用關鍵字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)

根據條件查詢

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]]]默認是升序排列(ASC)field

如:吧emp表中的記錄按照 sal 高低進行顯示

mysql> select * from emp order by sal;

根據多個字段排序

從第一個字段排序,遇到相同的值則相同的記錄以第二個字段重新裴谞,以此類推。

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表示記錄的起始偏移量,如果沒寫則默認為0,記錄起始下標為0。row_count表示顯示的行數

mysql> select * from emp order by sal limit 3;mysql> select * from emp order by sal limit 1,4;

聚合

對數據進行匯總、求和、最大值、最小值等條件的過濾

在 emp 表中統計記錄數

mysql> select count(1) from emp;

統計字段相同值的記錄數

mysql> select deptno, count(1) from emp group by deptno;

統計字段相同值得記錄數和總記錄數

mysql> select deptno, count(1) from emp group by deptno with rollup;

統計字段deptno大于2的記錄數

mysql> select deptno, count(1) from emp group by deptno having count(1) > 2;

統計 字段sal 的總和、最高和最低記錄

mysql> select sum(sal),max(sal),min(sal) from emp;

表連接

表連接

內連接

內連接和外連接的區別在于僅選出兩張表中互相匹配的記錄

如:顯示出兩張表(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;

子查詢

當進行查詢的時候,需要的條件是另外一個select語句的結構,這個時候就要用到子查詢。用于子查詢的關鍵字主要包括in、not in、=、!=、exists、not exists等。

從 emp 表中查詢出所有部門在 dept 表中的記錄

mysql> select * from emp where deptno in ( select deptno from dept );

如果子查詢記錄數唯一,可以用=代替in

mysql> select * from emp where deptno = (select deptno from dept);

表連接:

mysql> select emp.* from emp, dept where emp.deptno=dept.deptno;

記錄聯合

將兩個表的數據按照一定的查詢條件查詢出來后,將結果合并到一起顯示出來

需要使用union和union all關鍵字來實現

如: 將 emp 和 dept 表中的部門編號的集合顯示出來:

使用union all:全部顯示

mysql> select deptno from emp -> union all -> select deptno from dept;

使用union:去除重復后顯示

mysql> select deptno from emp -> union -> select deptno from dept;

選擇操作

顯示數據表前50行

SELECT * FROM `庫名`.`表名` ORDER BY `id` DESC LIMIT 0,50;

刪除操作

刪除操作

刪除數據表指定ID行

delete from `庫名`.`表名` where `id`=82;DELETE FROM tbname WHERE id > 49 AND id < 151

修改操作

修改數據表指定行的ID值為1

update `庫名`.`表名` set `id`=1 where `id`=2;

更改索引值

讓自動索引從3開始

ALTER TABLE `emp` AUTO_INCREMENT=3;

查詢結果輸出到excel文件

select * into outfile '/tmp/tmp.xls' from help_cat where 1 order by cat_id desc limit 0,20;

圖片源于網絡,如有侵權請聯系刪除!

總結

以上是生活随笔為你收集整理的dml语句包括哪些_MySQL数据操作(DML)语句,入门掌握这些足够了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。