sql 自学一

一.简介

1.       sql在编程中的应用

sql在应用程序中的三种接口类型:

模块语句——在程序中使用过程,该过程可以通过主调参数向主调函数返回值;

内嵌sql——可以编写程序的过程中内嵌sql语句。

直接调用——用程序直接实现。

2.       特性:连接到数据库,移动游标,动态sql,外连接

二.查询——select语句的使用

Select * from …… where……

Select distinct列名 from …… where

三.表达式,条件语句与运算

1.       数值型运算:数值型运算有加减乘除和取模等。

例如:select sale+0.15 from price

      Select 1-2 from price

      Select sale*0.8 from price

      Select 1/(%)2 from price

2.       大于与大于等于 , 小于与小于等于,不等号(<>!=

例如:SELECT * FROM FRIENDS WHERE AREACODE>=300

      SELECT * FROM FRIENDS WHERE FIRSTNAME <> AL

3.       like 和下划线

a.     检索以BACK开头的记录:SQL>SELECT * FROM PARTS WHERE LOCATION LIKE ‘BACK%’

b.     通配符— — 下划线

查找所有以C:SELECT * FROM FRIENDS WHERE STATE LIKE ‘C_’

c.     这两个通配符也可以联合起来使用

找出所有的第二个字母是L的记录:SELECT * FROM FRIENDS WHERE FIRSTNAME LIKE _L%

4.       逻辑运算 : and ,or not

5.       集合运算 unionintersect(相交),minus(相减)

Union将返回两个查询的结果并去除其中的重复部分:Select name from softball union select name from football

Union all不去掉重复的记录:Select name from softball union all select name from football

Intersect返回两个表中共有的行:Select name from softball intersect select name from football

6.       从属运算:in between

Select * from friends where code in100,381,204

.函数

1.汇总函数:countsumAvemaxminvarianch(方差),stddev(标准差)

2.日期与时间函数:dateadddatediffdatenamedatepartgetdate

 DateAdd(interval, number, date)返回包含一个日期的 Variant (Date),这一日期还加上了一段时间间隔。

DateDiff(timeinterval,date1,date2):函数返回两个日期之间的差值

Datename(datepart,date):返回代表指定日期的指定日期部分的字符串。例如:SELECT datename(month, getdate()) AS 'Month Name'

Getdate():返回当前系统日期和时间。

3.数学函数

4.字符函数

6.其他函数

五、select中的字句

1.order by:排序 order by  列名 desccorder by  列名 ASC

2.group by结果进行分组

 例如:select payee,sum(mount),count(payee) from checks

       Group by payee

3.     having:对进行分组的数据进行限制

  例如:select payee,sum(mount),count(payee) from checks

       Group by payee

        Having summount>100

(错误的表示:where summount>100

六.表的联合

外部联合,内部联合,左联合,右联合,等值联合,不等值联合

1.交叉联合:select * from table1 ,table2  总行数=tb1行数*tb2行数

   2. 等值联合:

SELECT O.ORDEREDON O.NAME O.PARTNUM P.PARTNUM P.DESCRIPTION

FROM ORDERS O PART P

  WHERE O.PARTNUM= P.PARTNUM and O.PARTNUM=76

3.不等值联合:SELECT O.NAME O.PARTNUM P.PARTNUM O.QUANTITY * P.PRICE TOTAL  FROM ORDERS O PART P

WHERE O.PARTNUM > P.PARTNUM

4.     内部联合:是指与个表内的行与本表内的数据相互进行联合,产生的结果行数取决于参加联合的行数,也就是说内部联合的行数取决于WHERE 子句的结果。

例如:SELECT P.PARTNUM P.DESCRIPTION P.PRICE O.NAME O.PARTNUM

FROM PART P  

JOIN ORDERS O

 ON ORDERS.PARTNUM = 54

5.     外部联合:是表间的联合

SELECT  P.PARTNUM P.DESCRIPTION P.PRICE O.NAME O.PARTNUM FROM PART P

RIGHT OUTER JOIN ORDERS O (使用RIGHT OUTER JOIN 它会令SQL 返回右边表集内的全部记录

ON ORDERS.PARTNUM = 54

左联合的例子: SELECT P.PARTNUM, P.DESCRIPTION, P.PRICE, O.NAME ,O.PARTNUM

FROM PART P

 LEFT OUTER JOIN ORDERS O

ON ORDERS.PARTNUM = 54

七.内嵌的sql字句

例如:SELECT * FROM TABLE1

WHERE TABLE1.SOMECOLUMN =somevalue

(SELECT SOMEOTHERCOLUMN FROM TABLE2

WHERE SOMEOTHERCOLUMN = SOMEVALUE)

1.在子查询中使用汇总函数:SELECT O.NAME O.ORDEREDON O.QUANTITY * P.PRICE TOTAL  FROM ORDERS O PART P

 WHERE O.PARTNUM = P.PARTNUM AND

O.QUANTITY * P.PRICE> (SELECT AVG(O.QUANTITY * P.PRICE)

FROM ORDERS O PART P WHERE O.PARTNUM = P.PARTNUM)

2.子查询的嵌套:嵌套就是将一个子查询嵌入到另一个子查询中去

 Select .name,.address, .state from customer

Where name in (select name from orders o, part p where o.partnum=p.partnum

AND

O.QUANTITY * P.PRICE> (SELECT AVG(O.QUANTITY * P.PRICE)

FROM ORDERS O PART P

WHERE O.PARTNUM = P.PARTNUM))

3. 相关子查询:

4.exists如果子查询返回的内容为非空时EXISTS 返回TRUE 否则返回FALSE

SELECT NAME ORDEREDON  FROM ORDERS WHERE EXISTS

(SELECT * FROM ORDERS WHERE NAME ='TRUE WHEEL')

5Some all any

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值