達夢資料庫學習筆記

weixin_42240199發表於2021-01-03

1、基礎CRUD操作

1)插入單條資料

insert into 模式名.表名 [(列名 1,,列名 n)] values(1,, 值 n);

2)插入多條資料

insert into dmhr.student values(1001,'Sid'),(1002,'Kat');

3)插入多條資料(需要先建立新表tab)

insert into dmhr.tab select stuName from dmhr.student; 

4)建立新表並從其他資料表中查詢資料插入到新表中

create table dmhr.stu1 as select stuNo,stuName from dmhr.student;

5)刪除資料

delete from 模式名.表名 [where 條件] 

6)修改資料

update 模式名.表名 set1=1,,列 n=值 n [where 條件] 

7)查詢資料`

select 列名 1,,列名 n from 模式名.表名 [where 條件] 

2、資料查詢

1)查詢基礎語法結構

Select1,,列 n from[where 條件] [group by 分組列 1,,
列 n] [having 篩選分組條件] [order by 排序列 1,,列 n]

2)條件查詢常用表示式
a) 查詢中使用別名
b) 關係運算子:>、<、=、!=、>=、<=
c) 邏輯運算子:and、not、or
d) 範圍運算:
i. 關係和邏輯運算子組合
ii. between … and
iii. in (值 1,…,值 n)
e) 模糊查詢
i. like
ii. 掌握 % 和 _ 兩個特殊符號在 模糊查詢中的 作用
f) null 值和非空查詢
i. is null
ii. is not null
3)查詢分組、多列分組、聚合函式
a) sum() 求和
b) count() 統計梳理
c) max() 求最大值
d) min() 求最小值
e) avg() 求平均值
4)刪選分組
a) having 篩選分組條件
5)查詢排序
a) order by 分組列名列表
6)分頁查詢
a) top分頁

Select top 每頁顯示條數 列名列表 fromwhere id not in (   Select top 偏移量條數 id from) 

b) limit分頁

Select 列名列表 from[] limit 偏移量,每頁顯示條數 

c) 偽列分頁
i. rowid

Select rowid, 列名列表 fromwhere rowid between 起始編號 and 結束編號

ii. rownum

select t. 列名列表 from ( select rownum num, 列名列表 from 表名 where rownum < maxValue ) t where num > minValue 

3、實戰演練

1)查詢價格在 50.0 到 100.0 元之間的商品資訊

select * from vspace.i_goods where price>=50 and price<=100;

2)查詢商品標題中包含”肉”的商品資訊

select * from vspace.i_goods where goods_title like '%肉%';

3)查詢購買訂單數量超過 11 個的使用者手機號碼

select phone from vspace.i_order where ammount>11;

4)請使用 top,limit 和偽列三種方式實現商品資訊的分頁查詢,要求沒有顯示 3 條資料,顯示 第 5 頁的資料

select *from vspace.i_goods limit 1,2,3;

select top 15 *from vspace.i_goods;

select top 3 *from vspace.i_goods where vspace.goods_id not in (
     select top 12 vspace.goods_id from vspace.i_goods
);

select rowid,*from vspace.i_goods where rowid between 13 and 15;

5) 從商品資訊列表中查詢包含”五花肉”的商品標題資訊,並從標題中擷取出”五花肉”這個字串

select *from vspace.i_goods where goods_title like '%五花肉%';
select substring('豬五花肉',2,3);

7)查詢最近 10 天的訂單資訊

select* from vspace.i_order where datediff (DD,order_date,curdate)<=10;

8)查詢統計最近一個月的總銷售額

select sum(sum_price) from vspace.i_order where datediff (DD,order_date,curdate)<30;

相關文章