sql語句其實不難,尤其對於那些英語稍好一些的人來說! 最最最重要的就是搞清楚sql語句的執行順序!!!數據就像沙子, 語句就是篩子, 沙子按照順序經過給定的篩子,留下來的就是你要的!!! 並不是寫在前面的就先執行!!! 如下: SELECT *, SUM(pnum) '商品總數量' (4) FRO ...
最最最重要的就是搞清楚sql語句的執行順序!!!數據就像沙子, 語句就是篩子, 沙子按照順序經過給定的篩子,留下來的就是你要的!!!
並不是寫在前面的就先執行!!! 如下:
SELECT *, SUM(pnum) '商品總數量' (4)
FROM products (1)
GROUP BY con (2)
HAVING SUM(pnum) > 200; (3)
這句sql語句其實是先執行 (1) FROM products 從products表中篩選所有數據
再執行(2) GROUP BY con 將數據按照con欄位進行分組
再執行(3) HAVING SUM(pnum) > 200 篩選出pnum總數大於200的分組
最後執行(4) SELECT * , SUM(pnum) 將層層過濾的數據顯示出來
註意: 頂哥較懶, 下文的sql語句統統小寫啦
如遇諸如 : Incoreect string value : ..... 之類的報錯請通過以下sql語句查看自己的資料庫預設編碼是否和輸入環境的編碼一致:
SHOW VARIABLES LIKE 'character%';
l 數據定義語言:簡稱DDL(Data Definition Language),用來定義資料庫對象:資料庫, 表, 列等. 關鍵字: create , alter , drop 等
l 數據操作語言:簡稱 DML(Data Manipulation Language), 用來對資料庫中表的記錄進行更新. 關鍵字:insert , delete, update等
l 數據控制語言:簡稱 DCL(Data Control Language), 用來定義資料庫的訪問許可權和安全級別,及創建用戶
l 數據查詢語言:簡稱DQL(Data Query Language), 用來查詢資料庫中表的記錄. 關鍵字:select, from, where 等
DDL --database相關操作
create database demo; # 創建名為demo的資料庫(預設編碼)
create database if not exists demo; # 不存在則創建demo資料庫
create database demo character set ‘gbk’; # 創建名為demo gbk編碼的資料庫
show databases; # 列出mysql伺服器中所有的資料庫
show create database demo; # 查看demo資料庫的定義信息
crop database demo; # 刪除資料庫demo
select database(); # 查看正在使用的資料庫
use demo; # 使用demo 資料庫
DDL—table相關操作
create table demo( # 創建demo表, 指定 id 欄位為主鍵約束,
id int primary key, # name 欄位為非空約束
name varchar(12) not null
);
create table demo1 like demo; # 創建demo1表,表結構和demo表相同
show tables ; # 查看資料庫中所有的表
desc demo; # 查看demo表的結構(Tips:為何是desc? describe是秒速的意思!
drop table demo; # 刪除demo表
drop table if exists demo; # demo表存在則刪除
alter table demo add address varchar(20); # 為demo表增加地址欄位
alter table demo modify address varchar(30); # 修改表中欄位的類型長度
alter table demo change address addr varchar(30); # 修改表中欄位名
alter table demo drop addr; # 刪除表中的欄位
rename table demo to dmeo1; # 將demo表重命名為demo1
alter tabel demo1 character set 'gbk'; #將demo1表的編碼修改為gbk
DML 相關操作
插入表記錄: insert
insert into demo(id, name) values(1, "song");
insert into demo(id) values(2); # 無數據欄位會使用null
更新表記錄:update
update demo set id = 1, name = 'song'; # 將demo表中記錄全部更新
update demo name = 'hui' where id = 2; # 將id為2的記錄名字更新為hui
刪除表記錄
delete from demo; # 刪除demo表中的所有數據
delete from demo where name = 'song'; # 刪除demo表中name為song的記錄
truncate table demo; # 摧毀demo表並重建同結構的表
DQL 相關操作
select * from demo ; # 查詢demo表中所有的數據
select id, name from demo; # 查詢demo表中id 和 name 列的數據
select id as 編號, name as 姓名 from demo as 學生表; # 使用別名,as 可以省略
select distinct name, age from demo; # 去除重覆值
select math + english 總成績 from student; # 從學生表中查詢熟悉和英語的總分並使用別名
select name , age + 10 from student; # 查詢姓名年齡,並將每個人的年齡增加10歲
select * from student where math > 100 or english > 100; # 查詢任意一科超過100的學生
select * from student where name like '_宋%寶'; # 查詢所有名字第二個字是宋且以寶結尾的學生
select * from student where age > 12 order by id asc, age desc; # 查詢年齡大於12的按照id升序排序顯示,id一樣時按照年齡降序排序
select max(age) from student; # 查詢學生表中年齡最大的
select * from student where age > 18 group by sex having name is not null; # 查詢 年齡大於18的按照性別進行分組,且姓名不為空的記錄
Tips: having 和where的區別:
having 是在分組後對數據進行過濾
where 是在分組前對數據進行過濾
having 後面可以使用聚合函數
where 後面不可以使用聚合函數
select * from student limit 0, 3 ; # 查詢索引從0開始,共3條記錄
Tips: 起始索引 = (當前頁頁碼數 -1 ) * 每頁顯示條數
#查詢第一頁的數據信息
select * from sudent limit 0, 3;
#查詢第二頁的數據信息
select * from student limit 3, 3;
可關註公眾號,隨時隨地查閱相關文章