增刪改查是使用數據庫時最常用的操作。
增
insert into 表名 [ ( 字段名 , ( 字段名 ) ) ]
value (value , [, value ] ) ;
- 如果只給表的某幾個字段賦值,則需要制定字段名
- 給表中所有的字段名添加數據,不必寫字段名
- 插入的數據應該與字段的數據類型相同。使用
desc 表名
可以查看字段類型 - 數據大小應該在規定的範圍內
- 在value中列出的數據位置必須與被加入的列位置相對應
- 字符和日期類型應該包含在單引號中
- 插入空值時,不指定或
insert into 表名 values(null)
- 一次添加多條數據
insert into 表名 values(),(),()
在數據插入時,假設主鍵對應的值已經存在,
當主鍵存在衝突時,可以進行以下操作:
- 更新操作:
insert into 表名(字段列表) values(值列表) on duplicate key 字段=新值
- 替換:
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