MySQL數據操作(DML)語句,入門掌握這些足夠了

2021-01-20 黑碼教主

DML是(Data Manipulation Languages)數據定義語言的縮寫主要包括表記錄的插入insert、更新update、刪除select

插入記錄

insert into table(field1,field2,...fieldn) values(value1,value2,...value)

如:向表 emp 中插入以下記錄:

mysql> insert intoemp(ename,hiredate,sal,deptno) value('zzxl','2000-01-01','2000',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 setsal=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=1and 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 orderby 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 orderby sal limit 3;mysql> select * from emp orderby sal limit 1,4;

聚合

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

在 emp 表中統計記錄數

mysql> select count(1) from emp;

統計欄位相同值的記錄數

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

統計欄位相同值得記錄數和總記錄數

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

統計欄位deptno大於2的記錄數

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

統計 欄位sal 的總和、最高和最低記錄

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

表連接

內連接

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

如:顯示出兩張表(emp、dept)中 欄位(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 -> unionall -> select deptno from dept;

使用 union:去除重複後顯示

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

選擇操作

顯示數據表前50行

SELECT * FROM`庫名`.`表名`ORDERBY`id`DESCLIMIT0,50;

刪除操作

刪除數據表指定ID行

deletefrom`庫名`.`表名`where`id`=82;DELETEFROM tbname WHEREid > 49ANDid < 151

修改操作

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

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

更改索引值

讓自動索引從3開始

ALTERTABLE`emp` AUTO_INCREMENT=3;

查詢結果輸出到excel文件

select * intooutfile'/tmp/tmp.xls'from help_cat where1orderby cat_id desclimit0,20;

圖片源於網絡,如有侵權請聯繫刪除!

相關焦點

  • 《MySQL 入門教程》第 24 篇 DML 語句之更新數據
    上一篇我們介紹了如何使用 INSERT 語句插入數據,本篇繼續學習 MySQL 中的數據更新操作,也就是UPDATE語句。例如,以下更新語句違反了外鍵約束:mysql> UPDATE IGNORE employee -> SET dept_id = 10 -> WHERE emp_id = 1;ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails
  • MySQL數據定義語言(DDL),入門掌握這些足夠了
    DDL是(Data Definition Languages)數據定義語言的縮寫定義了不同的數據段、資料庫、表、列、索引等資料庫對象。常用的語句關鍵字主要包括create、drop、alter等創建資料庫語法:create database dbnamemysql> create database test1;mysql> create database test1 DEFAULT CHARACTER SET utf8;創建默認gbk字符集的資料庫可以用下面的sql
  • 《MySQL 入門教程》第 23 篇 DML 語句之插入數據
    語句;接下來幾篇我們學習一下數據的修改操作,首先是如何插入數據,也就是INSERT語句。23.1 插入單條記錄MySQL 主要使用 INSERT 語句插入數據因為資料庫在插入數據之前將會執行完整性檢查,對於違反約束的數據提示錯誤,而不會生成新的數據。
  • MySQL數據恢復工具binlog2sql
    binlog2sql是一個開源的Python開發的MySQL Binlog解析工具,能夠將Binlog解析為原始的SQL,也支持將Binlog解析為回滾的SQL,以便做數據恢復。binlog2sql參數選項:mysql連接選項,與mysql客戶端的選項一致-h host-P port-u user-p password解析模式--stop-never 持續解析binlog。可選。默認False,同步至執行命令時最新的binlog位置。-K, --no-primary-key 對INSERT語句去除主鍵。可選。
  • MySQL基礎語法,DDL,DML,DQL基礎
    * 用於存儲和管理數據的倉庫。3. 資料庫的特點:1. 持久化存儲數據的。其實資料庫就是一個文件系統2. 方便存儲和管理數據3. 使用了統一的方式操作資料庫 -- SQLMySQL資料庫軟體配置* MySQL服務啟動1. 手動。
  • mysql批量語句,怎麼保證操作都成功?
    今天就討論以下幾個數據批量操作的問題在一個批量操作的sql中,如果一個失敗,其他的會怎麼樣呢對於大數據表,線上更新而不影響用戶使用事務與鎖的關係欄位不匹配,但是,數據表第一條已經插入成功,只是第二條語句出錯了!
  • 這份MySQL知識點總結,數據分析入門必備收藏乾貨
    數據分析崗位需要對企業的資料庫進行管理,這就需要掌握至少一種資料庫軟體的使用。行業內最受歡迎的開源資料庫軟體MySQL,了解起來並不困難,掌握基本的語法和增刪改查,就可以滿足常規的數據處理需求。今天的這篇內容,匯總了MySQL最基礎的語句和操作。
  • 「mysql」mysql調優時必須掌握的慢查詢語句排查命令
    文章目錄前言:開啟並設置慢查詢語句的時間1. 查看是否開啟慢查詢語句2. 開啟慢查詢3. 修改滿查詢定義的時間4. 開啟 記錄沒有使用索引的查詢5.查詢有多少慢查詢記錄分析工具前言:mysql慢查詢日誌用來記錄mysql在相應時間內超過閾值的語句。 閾值定義在long_query_time裡。
  • MYSQL資料庫操作案例
    MySQL中刪除數據表是非常容易操作的, 但是你再進行刪除表操作時要非常小心,因為執行刪除命令後所有數據都會消失。MySQL 中的數據,我們可以使用 SQL UPDATE 命令來操作。MySQL UNION 操作符用於連接兩個以上的 SELECT 語句的結果組合到一個結果集合中。
  • mysql入門基本語句
    開啟/關閉mysql服務:net start/stop mysql(Linux系統:service mysql start/stop)2.登錄mysql:mysql -h主機地址 -u用戶名 -p用戶密碼3.查看一下所有的庫:show databases;4.創建一個資料庫: create database 資料庫名 [charset 字符集]
  • MySql 入門到精通-sql查詢語句的執行過程,你真的知道嗎?
    如下sql 查詢:mysql> select * from T where ID=10;對於這條查詢語句,我們再腦海裡面肯定能知道它能返回 T 表內 ID=10 的數據,但是,我們並不知道它在 MySQL 內部是怎麼執行的。
  • MySQL資料庫的分組操作,語句拼接,列轉行操作
    本文介紹MySQL資料庫的分組操作,語句拼接,列轉行操作。only_full_group_by說明:僅是MySQL5.7中存在,5.6和8.0都沒有,查看sql_modeselect @@sql_mode;在帶有group by 子句的select中,select後的條件列(非主鍵列),要麼是group by 後面的列,要麼需要在函數中示例group by 錯誤select user,host from mysql.user
  • Python如何對MySQL的誤操作快速恢復|建議收藏
    DBA或開發人員,有時會誤刪或者誤更新數據,如果是線上環境並且影響較大,就需要能快速回滾。傳統恢復方法是利用備份重搭實例,再應用去除錯誤sql後的binlog來恢復數據。此法費時費力,甚至需要停機維護,並不適合快速回滾。也有團隊利用LVM快照來縮短恢復時間,但快照的缺點是會影響mysql的性能。
  • python的mysql資料庫操作
    前言上一篇文章我們一起學習了MySQLdb模塊的安裝和資料庫連接,連接了資料庫以後就可以執行資料庫的各種語句了,今天我們再接著學習資料庫的sql語句操作。python的mysql資料庫執行sql語句1.獲取mysql版本#!
  • mysql修改語句UPDATE的使用
    基本常用的就是msyql的增刪改查,差不多就是添加數據,刪除數據,修改數據,查詢出想要的數據。今天介紹一下update的使用,這個關鍵詞就是修改資料庫語句。我們看看在哪些環境會用到修改語句,比如在編輯輸入資料的時候發現資料錄錯了,或者某個信息要修改,這個時候就需要用到update了。
  • mysql慢查詢語句分析總結
    )log_output:日誌存儲方式(FILE表示將日誌寫入文件,TABLE表示寫入資料庫中,默認值為FILE,如果存入資料庫中,我們可以通過select * from mysql.slow_log的方式去查詢,一般性能要求相對較高的建議存文件)我們可以通過show variables like 『%關鍵字%』的方式查詢我們設置的屬性值slow我們有兩種方式設置我們的屬性
  • 《MySQL 入門教程》第 03 篇 管理資料庫
    例如,數據表(Table)、視圖(View)、存儲過程(Stored Procedure)以及觸發器(Trigger)等。其中,表是存儲數據的主要對象。它們之間的關係如下圖所示:本篇主要介紹資料庫的創建、查看、選擇和刪除操作,包括使用 mysql 命令行和 MySQL
  • mysql慢查詢語句分析總結
    ,copying to tmp table、sorting result、sending data等info顯示sql語句,如果發現比較耗時的語句可以複製出來使用explain分析。percona-toolkit包含了很多實用強大的mysql工具包,pt-qurey-digest只是其中一個用於分析慢查詢日誌是工具。
  • MySQL數據導出篇,直接使用mysql命令導出數據到文本文檔
    MySQL管理中,有時候需要把資料庫中的數據導出到外部存儲文件中,MySQL中的數據可以導出SQL文本文件,XML,HTML等文件格式,同樣這些導出也是可以導入到MySQL中,本文給大家介紹使用mysql命令導出文本文件語句格式使用mysql命令導出文本文件語句格式
  • MySQL資料庫安裝及使用入門
    本文作為MySQL的入門教程,介紹如何安裝MySQL及基本使用。登錄資料庫對於開發人員,在實際使用的時候可能通過程序訪問比較多;而對於運維人員則通常是直接登錄到資料庫系統內部進行操作。我們以直接登錄操作為例進行介紹,後面會介紹如果通過程序訪問數據。