SQL语法教育训练

发布 2021-05-11 05:26:28 阅读 3732

目标: 能够清楚说明sql与sunlike系统的连接、简单语法使用、sql效能调整。

期间: 二个星期(下午半天讲师培训,上午自行练习)

sql环境的一些查询指令。

1. sp_help

列出目前的database所有的table

2. sp_columns authors

列出authors这个table所有栏位的资讯。

3. sp_server_info

sql server的设定讯息。

4. sp_who

查出sql server有谁在上面正在做什么事。

5. sp_helpsort

查出sql server的sort order

6. sp_helpserver

查sql server name

单一table的select

1. select* from accn

列出accn这个table所有的资料。

2.select acc_no, name, acc_no_up, dc, eng_name from accn

/ 列出accn这个table内的acc_no, name,acc_no_up,dc,eng_name五个栏位的所有资料。

3.select acc_no, name+’’eng_name frme accn

/ 列出accn这个table内的acc_no及name,eng_name两个栏位字串相加后的资料。

4.select acc_no, name+’’eng_name as “full name” from accn

同上,并替name+’’eng_name两个栏位字串相加后的栏位加上表头名称“full name”

5.select * from accn where acc_no=’1111’

/ 由accn这个table,找出acc_no这个栏位为’1111’的资料。

6.select * from accn order by acc_no

/ 由accn这个table,找出acc_no这个栏位排序由小到大。

7.select acc_no, count (*from accn group by acc_no

/ 由accn这个table,找出acc_no栏位个别计算笔数。

8.select * from accn where name like ’应%’

/ 由accn这个table,找出name栏位开头为“应”的资料。

9.select * from accn where name like ‘%款’

/ 由accn这个table,找出name栏位结尾为“款”的资料。

10.select * from accnwhere name like ‘%版%’

/ 由accn这个table,找出name栏位资料中有“收”的资料。

11.select distinct mak_no from vhed

/ 由vhed个table,找出mak_no栏位,但相同的资料只列出一笔。

mak_no, mak_dat, voh_id fromdb_0003..vhed where voh_id=’4’

/若不在dn_0003的database内,亦可透过指定的方式抓取db_0003..vhed的table,正确的语法database name. owner.

table name’ owner若是自己可省略不打。

13. where可以为in(),not in()

14. select mak_no, mak_dat, voh_id from vhed where voh_id in (‘3’,’4’)

/ 由vhed这个table,找出mak_no, mak_dat, voh_id栏位,voh_id这个栏位为‘3’或‘4’的资料。

15. select * from salm

/ 列出salm这个table所有的资料。

16. select ps_no‘订单号码’,sum(qty)‘合计’from tf_pss where ps_no in (‘sa91010001’,’sa97030001’) group by ps_no

/ 由tp_pss这个table,依ps_no找出qty栏位全计,且ps_no这个栏位为‘sa91010001’,’sa97030001’的资料。

17. select ps_no “订单号码”,sum(qty) “合计” from tf_pss where ps_no in (‘sa91010001’,’sa97030001’) group by ps_no h**ing sum(qty) >1

/ 由tf_pss这个table,依ps_no找出qty栏位合计,且ps_no这个栏位为‘sa91010001’,’sa97030001’的资料,且合计需大于1才列出。

多个table的select

1. select * from mf_pss

/ 列出mf_pss这个table所有的资料。

2. select * from tf_pss

/ 列出tf_pss这个table所有的资料。

3. select * from mf_pss, tf_pss

/ 列出mp_pss及tf_pss这两个table所有的资料,请注意这个资料不是我们所想要的,因为列出来的是指两个table的笔数相乘之后的结果,没能任何关系性,所以请看下面列子。

4. select * from mf_pss, tf_pss where mf_pss. ps_no=tf_pss. ps_no

/ 列出mf_pss及tf_pss这两个table所有的资料,但两个table的ps_no相同的资料合并成一笔列出。

5. select * from mf_pss a, tf_pss b where a. ps_id =

/ 同上例,可将mf_pss取别名a,tf_pss取别名b,如此若要使用很多栏位时,只要在栏位前面的tablename改用别名表示即可,省略打字的时间,亦不容易打错。

6. select a. ps_id, a.

ps_no,a. ps_dd,b. ps_id from tf_pss b, mf_pss a where b.

ps_id=a. ps_id and b. qty>100

/ 列出mf_pss及tf_pss这两个table的某些栏位,两个table的ps_id相同的资料合并成一笔列出,且tf_pss的qty栏位需大于100才列出。

7. select a. ps_id,a.

ps_no, a. ps_dd from mf_pss a, tf_pss b where b. ps_id=a.

ps_id and b. qty >100.

/ 列出mf_pss这个table的某些栏位,但参考到tf_pss这个table的qty栏位需大于100才列出。

8. select ps_id, ps_no, ps_dd from db_0003..mf_pss where (ps_id) in (select ps_id from tf_pss where qty=100)

/ 同上,但请注意第6,7,8三个作法是否类似,但结果不同,在第6,7题会比第8题多出一笔,因为有一个mf_pss有两笔的tf_pss,造成第6,7题所列出的资料可能不是我们所要的,若要避免这个情形,就要使用第8题的作法,总结来说:要列出某一table的资料,却必须参考其它table的条件,则使用in的语法是最正确的。

1. select * from mf_pss where substring (ps_no,3,4) =9703’

/ mf_pss这个table,ps_no这个栏位从第三个byte开始四个byte为’9703’的记录列出来,substring是一个字串函数。

2. select * from mf_pss where ps_no between ‘pc97030001’ and ‘97090003’

/ 由mf_pss这个table,ps_no这个栏位为介于‘pc97030001’and ‘97090003’的资料,包含‘pc97030001’及‘97090003’

3. select ps_no, ps_dd, qty “订单数量”,qty * 1.1 “实际出货数量” from tf_pss

/ 由tf_pss这个table,列出ps_no,,ps_dd,qty三个栏位及qty这个栏位的值乘上1.1之后一起列出。

4. select * into mpss from mf_pss

/ 将mf_pss这个table所有资料写入mpss的table内,注意mpss为新的table

5. select * into tpss from tf_pss

/ 将tf_pss这个table所有资料写入tpss的table内,注意tpss为新的table

6. select * from tpss

7. delete tpss where ps_no = pc97030001’

/将tpss这个table内ps_no为‘pc97030001’的记录删除。

* from mpss where ps_no not in (select ps_no from tpss)

/将mpss这个table内ps_no在tpss找不到的记录列出来不,意思可以找出有表头没有表身或是有表身没有表头的资料。

9. insert into tpss (ps_id, ps_no, ps_dd, qty, itm, wh)

values (‘sa’,’sa00310099’.’2000/3/10’, 5, ‘1’, 0000’)

/ insert into指令可新增记录到table内,例如新增资料到tpss这个table内,资料值就在values后面的资料,若insert全部栏位则tpss后面的栏位可以省略。

10. update tpss set qty=6 where ps_no=’pc97030001’

/ update指令可将栏位值改变,例如将tpss这个table内ps_no为‘pc97030001’的记录数量都改为6

transaction

select * from tpss where ps_no= ‘pc97030001’

sql语法

知识要点 1 transact sql运算符 1 算术运算符。注 null与任何值运算结果为null。运算可用于datetime型数据。2 字符串运算符。3 比较运算符。逻辑常量 ture false。4 逻辑运算符。not 非 and 与 or 或 between 指定范围 like 模糊匹配 5...

SQL语法

distinct 输出唯一值。select distinct from where between and 介于某一范围的数据。where 某行 between and in 属于某一子集合的数据。where 某行 in substring expression 开始位 长度 选取字符串。selec...

SQL语法

一 create table 数据表是数据库中储存数据的基本架构。举例来说,如果我们有一个记载顾客数据的数据表,那字段包括姓名 地址 城市 国家 生日 等等。当我们对数据表下定义时,我们需要注明字段名称,以及那个字段的类型。字段类型可能是一个整数 例如 1 一个实数 例如 0.55 一个字符串 例如...