目标: 能够清楚说明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 一个字符串 例如...