MySQL---表的增刪改查

增刪改查是使用數據庫時最常用的操作。


insert into 表名 [ ( 字段名 , ( 字段名 ) ) ]
value (value , [, value ] ) ;
這裏寫圖片描述

  • 如果只給表的某幾個字段賦值,則需要制定字段名
  • 給表中所有的字段名添加數據,不必寫字段名
  • 插入的數據應該與字段的數據類型相同。使用desc 表名 可以查看字段類型
  • 數據大小應該在規定的範圍內
  • 在value中列出的數據位置必須與被加入的列位置相對應
  • 字符和日期類型應該包含在單引號中
  • 插入空值時,不指定或 insert into 表名 values(null)
  • 一次添加多條數據 insert into 表名 values(),(),()

在數據插入時,假設主鍵對應的值已經存在,
這裏寫圖片描述

當主鍵存在衝突時,可以進行以下操作:

  1. 更新操作:insert into 表名(字段列表) values(值列表) on duplicate key 字段=新值
    這裏寫圖片描述
  2. 替換: repalce into 表名(包含字段) value(值列表)
    -有衝突->替換信息。
    -沒有衝突->添加新數據
    這裏寫圖片描述


update 表名 set 字段名=數據,[,字段2=數據] [where condition]

將字段所有數據修改
這裏寫圖片描述
將指定字段指定數據修改
這裏寫圖片描述
將數據進行算數修改
這裏寫圖片描述
限制更新量
這裏寫圖片描述

  • update可以用新值更新原有表中的各列
  • set語句指定更新的字段和值,可以指定多個字段
  • where語句指定更新哪些行。沒有where,則更新所有行


delete from 表名 [where condition]
這裏寫圖片描述
在刪除數據時,爲了防止誤刪:
複製一個表
create table 新表名 like 表名
將數據複製到新表
insert into 新表名 select * from 表名
這裏寫圖片描述

delete 與 truncate刪除
delete

  • 刪除整個表的數據,但表結構還在
  • 可以帶where,使用更靈活
  • 可以返回被刪除的記錄數

truncate

  • 刪除速度快
  • 不能使用where
  • 返回0,常用於清除表中數據


select [distinct] *| {column1,column2,...} from tbl_name;

select * from 表名:效率低
這裏寫圖片描述

select 字段名,字段名 from 表名
這裏寫圖片描述

distinct:去除重複行
這裏寫圖片描述

別名select 字段名,字段名 as 別名 from 表名 可以對起別名的字段進行只顯示的數據操作
這裏寫圖片描述

select + where

where語句中常用的運算符:
這裏寫圖片描述

like’ %’
查詢形如 ‘%紅’ 的數據
select * from Friends where name like '%紅'
這裏寫圖片描述

>
查找年齡大於等於4的數據
select * from Friends where age >= 4
這裏寫圖片描述

and
查詢姓‘小’,並且年齡在3~5之間的人
select * from Friends where name like'小%' and age between 3 and 5
這裏寫圖片描述

in
查詢Tel爲 ‘0003’ 的人
這裏寫圖片描述

select的 order by 語句

  • 指定排序的列,可以使用列名也可以使用select語句後指定的別名
  • order by語句位於句尾
  • asc升序(默認),desc降序

對年齡進行逆序排序
select * from Friends order by age desc
這裏寫圖片描述

select + count 統計

count (列名) 返回某一列,行的總數
select count(*)|count(列名) from 表名 where condition

統計表中一共有多少人
select count(*)from Friends
這裏寫圖片描述

統計age大於3的數量
select count(*) from Friends where age>3
這裏寫圖片描述

  • count(*) 會統計一共的記錄數,count(列名)會排除NULL的情況

sum 求和

sum函數返回滿足where條件的行的和
select sum(列名) {,sum(列名)...} from tbl_name [where condition]

求age之和
select sum(age) from Friends
這裏寫圖片描述

平均年齡
select sum(age)/count(age) from Friends
這裏寫圖片描述

  • sum僅對數值起作用,否則結果沒有意義

avg 平均值

avg函數返回滿足where條件的一列的平均值

求平均年齡
select avg(age) from Friends
這裏寫圖片描述

max/min

select max(列名) from 表名 [where condition]
這裏寫圖片描述

group by 分組

select column1,column2, .. from table group by column
爲了明確的展示分組,這裏使用了僱員信息表

  • EMP員工表
  • DEPT部門表
  • SALGRAD工資等級表

顯示每個部門的平均工資和最高工資
mysql> select deptno,avg(sal),max(sal) from EMP group by deptno
這裏寫圖片描述

顯示每個部門的各種崗位的平均工資和最低工資
首先按deptno分組,然後各組再按job進行分組
mysql> select avg(sal),min(sal),job, deptno from EMP group by deptno, job;
這裏寫圖片描述

having
和group by連用
顯示平均工資低於2000的部門和它的平均工資
mysql> select avg(sal) as myavg from emp group by deptno having myavg<2000
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章