记录的详细操作
拷貝表
拷貝結(jié)構(gòu) 與數(shù)據(jù)
create table copy_table select *from customer ;
僅拷貝結(jié)構(gòu)
create table copy_table select *from customer where 0 > 1;
共同點: 索引 描述(自增) 不能以下語法中
記錄的詳細操作
[] 表示可選的
{}表示必選的
增
insert [into] 表名[字段名] value|values(字段值....);
into 可省略
[字段名] 可選
如果寫了 你后面的值 必須與 寫的字段匹配
不寫 后面的值 必須和表的結(jié)構(gòu)完全匹配
value 插入一條記錄
values 插入多條記錄
改
update 表名 set 字段名 = 新的值[,字段n = 新值n] [where 條件]
可以同時修改多個字段 用逗號隔開 注意最后一個字段不能加逗號
where 可選
有就 修改滿足條件的記錄
沒有就全部修改
刪
delete from 表名 [where 條件]
where 可選
有就 刪除滿足條件的記錄
沒有就全部刪除
如果你需要全部刪除 請使用truncate table 表名
delete 是逐行比對 刪除 效率低
delete刪除的行號會保留
查詢
完整的查詢語句
select [distinct] {* | 字段名 | 聚合函數(shù) | 表達式} from 表名
[where 條件
group by 字段名
having 條件
order by 字段名
limit 顯示的條數(shù)]
注意: 關(guān)鍵字的順序必須與上述語法一致
簡單查詢
1.* 表示所有列 都顯示
2.也可以手動指定要顯示的列 可以是多個
3.distinct 用于去除重復的記錄,只取出完全相同的記錄
4.表達式 支持四則運算
執(zhí)行順序
def select()
from() 打開文件
where() 讀取每一行并判斷是否滿足條件
group() 對數(shù)據(jù)進行分組
having() 再分組之后進行過濾 having不單獨出現(xiàn) 僅用于分組之后進行過濾
distinct() 去重
order() 用于對篩選后的數(shù)據(jù) 進行排序
limit() 限制顯示的條數(shù)
最后根據(jù)select后制定的字段來顯示數(shù)據(jù)
where
從硬盤上讀取數(shù)據(jù)時的一個過濾條件
在沒有索引的情況下 挨個比較 效率低
where 條件不能用于篩選分組后的數(shù)據(jù)
group by
作用:給數(shù)據(jù)分組方便統(tǒng)計
按照某一字段給數(shù)據(jù)分組select *from 表名 group by 字段名
有兩種情況
1.sql_mode中 沒有設(shè)置 ONLY_FULL_GROUP_BY 顯示每個組的第一條記錄 沒有意義 所以新版中 自O(shè)NLY_FULL_GROUP_BY
2.sql_mode中有設(shè)置 ONLY_FULL_GROUP_BY 直接報錯原因是: * 表示所有字段都要顯示 但是 分組后 記錄的細節(jié)被隱藏 只留下了這意味著:只有出現(xiàn)在group by 后面的字段才能被顯示
聚合函數(shù):
將一堆數(shù)據(jù)經(jīng)過計算,得到一個數(shù)據(jù)
sum() 求和
avg() 求平均數(shù)
max()/min() 求最大值 / 最小值
count() 個數(shù)
having
用于對分組后的數(shù)據(jù)進行過濾
having不會單獨出現(xiàn) 都是和group by 一起出現(xiàn)
與where的區(qū)別
相同點: 都用于過濾數(shù)據(jù)
不同點:
1.where是最先執(zhí)行 用于讀取硬盤數(shù)據(jù)
having 要等到數(shù)據(jù)讀取完之后 才能進過濾 比where晚執(zhí)行
2.where中不能使用聚合函數(shù)
having中可以
order by [desc,asc]
用于對記錄進行 排序
desc為降序
asc為升序
limit
用于限制顯示的條數(shù)
limit [start,]count
# 看看表里前三條數(shù)據(jù)
select *from 表名 limit 3;
# 看看表里的3-5條
select * from 表名 limit 2,3;
limit 常用于 數(shù)據(jù)的分頁展示 比如騰訊新聞 的上拉加載新的而一頁
select *from emp limit 0,10; 第一頁 頁數(shù) 減1 乘以條數(shù) 得到起始位置
select *from emp limit 10,10; 第2頁
select *from emp limit 20,10; 第3頁
多表查詢的方式
1.笛卡爾積查詢
用坐標中的一條記錄 去鏈接另一張表的所有記錄
就像是把 兩張表的數(shù)據(jù)做了一個乘法
用 where 篩選出正確的數(shù)據(jù)
select *from emp,dept where emp.dept_id = dept.id;
on關(guān)鍵字
作用 用于多表查詢是 進行條件限制
2.內(nèi)連接查詢
inner join
select *from emp inner join dept on emp.dept_id = dept.id;
3.左外連接
left join
左邊表中的數(shù)據(jù)完全顯示 右邊表中的數(shù)據(jù)匹配上才顯示
select *from emp left join dept on emp.dept_id = dept.id;
4.右外連接
right join
左邊表中的數(shù)據(jù)匹配上才顯示 右邊表中的數(shù)據(jù)完全顯示
select *from emp right join dept on emp.dept_id = dept.id;
5. 全外鏈接
full join mysql不支持 oracle支持
可以通過union 間接實現(xiàn)
union 表示合并查詢 意思是把多個查詢結(jié)果合并在一起顯示
要求是 被合并的表結(jié)構(gòu)必須相同,默認去除重復
union all合并但是不去除重復
select *from emp right join dept on emp.dept_id = dept.id
union
select *from emp left join dept on emp.dept_id = dept.id;
總結(jié):多表鏈接 在書寫時 按照填空來書寫
如果左邊要全部顯示 用left join
右邊全部顯示 用right join
全部顯示 把左鏈接的結(jié)果和右鏈接的結(jié)果 合并
當然 也可以更多表一起查 但是 沒有意義 并且你要盡量避免 太多表 一起查
最多三張 在多對多的時候
子查詢
將上一次查詢的結(jié)果 作為本次查詢的原始數(shù)據(jù)(或是查詢條件)
拷貝結(jié)構(gòu) 與數(shù)據(jù)
create table copy_table select *from customer ;
僅拷貝結(jié)構(gòu)
create table copy_table select *from customer where 0 > 1;
共同點: 索引 描述(自增) 不能以下語法中
記錄的詳細操作
[] 表示可選的
{}表示必選的
增
insert [into] 表名[字段名] value|values(字段值....);
into 可省略
[字段名] 可選
如果寫了 你后面的值 必須與 寫的字段匹配
不寫 后面的值 必須和表的結(jié)構(gòu)完全匹配
value 插入一條記錄
values 插入多條記錄
改
update 表名 set 字段名 = 新的值[,字段n = 新值n] [where 條件]
可以同時修改多個字段 用逗號隔開 注意最后一個字段不能加逗號
where 可選
有就 修改滿足條件的記錄
沒有就全部修改
刪
delete from 表名 [where 條件]
where 可選
有就 刪除滿足條件的記錄
沒有就全部刪除
如果你需要全部刪除 請使用truncate table 表名
delete 是逐行比對 刪除 效率低
delete刪除的行號會保留
查詢
完整的查詢語句
select [distinct] {* | 字段名 | 聚合函數(shù) | 表達式} from 表名
[where 條件
group by 字段名
having 條件
order by 字段名
limit 顯示的條數(shù)]
注意: 關(guān)鍵字的順序必須與上述語法一致
簡單查詢
1.* 表示所有列 都顯示
2.也可以手動指定要顯示的列 可以是多個
3.distinct 用于去除重復的記錄,只取出完全相同的記錄
4.表達式 支持四則運算
執(zhí)行順序
def select()
from() 打開文件
where() 讀取每一行并判斷是否滿足條件
group() 對數(shù)據(jù)進行分組
having() 再分組之后進行過濾 having不單獨出現(xiàn) 僅用于分組之后進行過濾
distinct() 去重
order() 用于對篩選后的數(shù)據(jù) 進行排序
limit() 限制顯示的條數(shù)
最后根據(jù)select后制定的字段來顯示數(shù)據(jù)
where
從硬盤上讀取數(shù)據(jù)時的一個過濾條件
在沒有索引的情況下 挨個比較 效率低
where 條件不能用于篩選分組后的數(shù)據(jù)
group by
作用:給數(shù)據(jù)分組方便統(tǒng)計
按照某一字段給數(shù)據(jù)分組select *from 表名 group by 字段名
有兩種情況
1.sql_mode中 沒有設(shè)置 ONLY_FULL_GROUP_BY 顯示每個組的第一條記錄 沒有意義 所以新版中 自O(shè)NLY_FULL_GROUP_BY
2.sql_mode中有設(shè)置 ONLY_FULL_GROUP_BY 直接報錯原因是: * 表示所有字段都要顯示 但是 分組后 記錄的細節(jié)被隱藏 只留下了這意味著:只有出現(xiàn)在group by 后面的字段才能被顯示
聚合函數(shù):
將一堆數(shù)據(jù)經(jīng)過計算,得到一個數(shù)據(jù)
sum() 求和
avg() 求平均數(shù)
max()/min() 求最大值 / 最小值
count() 個數(shù)
having
用于對分組后的數(shù)據(jù)進行過濾
having不會單獨出現(xiàn) 都是和group by 一起出現(xiàn)
與where的區(qū)別
相同點: 都用于過濾數(shù)據(jù)
不同點:
1.where是最先執(zhí)行 用于讀取硬盤數(shù)據(jù)
having 要等到數(shù)據(jù)讀取完之后 才能進過濾 比where晚執(zhí)行
2.where中不能使用聚合函數(shù)
having中可以
order by [desc,asc]
用于對記錄進行 排序
desc為降序
asc為升序
limit
用于限制顯示的條數(shù)
limit [start,]count
# 看看表里前三條數(shù)據(jù)
select *from 表名 limit 3;
# 看看表里的3-5條
select * from 表名 limit 2,3;
limit 常用于 數(shù)據(jù)的分頁展示 比如騰訊新聞 的上拉加載新的而一頁
select *from emp limit 0,10; 第一頁 頁數(shù) 減1 乘以條數(shù) 得到起始位置
select *from emp limit 10,10; 第2頁
select *from emp limit 20,10; 第3頁
多表查詢的方式
1.笛卡爾積查詢
用坐標中的一條記錄 去鏈接另一張表的所有記錄
就像是把 兩張表的數(shù)據(jù)做了一個乘法
用 where 篩選出正確的數(shù)據(jù)
select *from emp,dept where emp.dept_id = dept.id;
on關(guān)鍵字
作用 用于多表查詢是 進行條件限制
2.內(nèi)連接查詢
inner join
select *from emp inner join dept on emp.dept_id = dept.id;
3.左外連接
left join
左邊表中的數(shù)據(jù)完全顯示 右邊表中的數(shù)據(jù)匹配上才顯示
select *from emp left join dept on emp.dept_id = dept.id;
4.右外連接
right join
左邊表中的數(shù)據(jù)匹配上才顯示 右邊表中的數(shù)據(jù)完全顯示
select *from emp right join dept on emp.dept_id = dept.id;
5. 全外鏈接
full join mysql不支持 oracle支持
可以通過union 間接實現(xiàn)
union 表示合并查詢 意思是把多個查詢結(jié)果合并在一起顯示
要求是 被合并的表結(jié)構(gòu)必須相同,默認去除重復
union all合并但是不去除重復
select *from emp right join dept on emp.dept_id = dept.id
union
select *from emp left join dept on emp.dept_id = dept.id;
總結(jié):多表鏈接 在書寫時 按照填空來書寫
如果左邊要全部顯示 用left join
右邊全部顯示 用right join
全部顯示 把左鏈接的結(jié)果和右鏈接的結(jié)果 合并
當然 也可以更多表一起查 但是 沒有意義 并且你要盡量避免 太多表 一起查
最多三張 在多對多的時候
子查詢
將上一次查詢的結(jié)果 作為本次查詢的原始數(shù)據(jù)(或是查詢條件)
轉(zhuǎn)載于:https://www.cnblogs.com/liangchengyang/p/9648522.html
總結(jié)
- 上一篇: 找靓机app怎么清灰
- 下一篇: 摩托范 哈罗摩托