SQL


 1. 在使用%匹配的时候,不能匹配null值.
 2. 对于计算字段,在数据库完成的速度比在应用程序完成的快。
 3.  trim():去掉字符两端的空格。ltrim()|rtrim():去掉两端空格。
 4.  MySql中连接:contact(var1,var2)
 5.  select now():返回当前日期.
 6.  MySql 取子串:substring(str,pos):pos表示位置,从1开始,包含pos,到字符串最后.
         substring(str,pos,len):从pos开始,共取出len 位.
 7. left(str,len):取出左边的len个字符|right(str,len):取出右边的len个字符
 8. SELECT cust_name, cust_contact
    FROM Customers
    WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green');//根据发音来过滤.
 9. Mysql 可以使用year()函数从日期中提取年份.
 10. avg(distinct row_name):只对不同值的进行计算.
 11.  group by: 
      1).group by子句中列出的每一列都必须是检索列或有效的表达式.
      2).如果分组列中包含具有NULL值的行,则NULL将作为一个分组返回。如果列中有多行NULL值,它们将分为一组.
     SELECT cust_id, COUNT(*) AS orders
     FROM Orders
     GROUP BY cust_id
     HAVING COUNT(*) >= 2;
     按照cust_id进行分组,然后再对其进行统计出现的次数,最后过滤次数大于2的.
 12. HAVING 的功能和where的类似,只是having可以用在聚集函数中进行过滤.
     sql语句的顺序:select ->from->where->group by->having->order by
 13. 作为计算字段使用子查询:
     SELECT cust_name, cust_state,
           (SELECT COUNT(*) 
            FROM Orders 
            WHERE Orders.cust_id = Customers.cust_id) AS orders
    FROM Customers 
 14. 内联接(等值联接): 必须是包含满足条件的行.
     标准格式语法:
     SELECT vend_name, prod_name, prod_price
     FROM Vendors INNER JOIN Products
     ON Vendors.vend_id = Products.vend_id;
    简单等值语法:
    SELECT cust_name, cust_contact
    FROM Customers, Orders, OrderItems
    WHERE Customers.cust_id = Orders.cust_id
    AND OrderItems.order_num = Orders.order_num
    AND prod_id = 'RGAN01';//两种方式均可.
 15. 外链接:需要查询包含没有关联行的那些行.
     1).左外联接:将左表全部查询出来.
     SELECT Customers.cust_id, Orders.order_num
     FROM Customers LEFT OUTER JOIN Orders
     ON Customers.cust_id = Orders.cust_id;
     2).右外联接:将右表全部查询出来.
 16. UNION:可以将两个select查询的结果组合到一起(和where的作用差不多),多数好的DBMS使用内部查询优化程序,
     在处理各条SELECT语句前组合它们。理论上讲,这意味着从性能上看使用多条WHERE子句条件还是UNION应该没有实际的差别。
     注意: UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔
         (因此,如果组合四条SELECT语句,将要使用三个UNION关键字)。
          UNION中的每个查询必须包含相同的列、表达式或聚集函数(不过,各个列不需要以相同的次序列出)。
          列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含转换的类型
              (例如,不同的数值类型或不同的日期类型)。
    Union会自动删除掉重复的结果行,如果不想删掉重复的行,可以使用UNION ALL.
17. Insert SELECT :将查询的结果插入到另外一个表里面去:
    insert into customers(id,name)
    select id,name from orders
18. select into :将一个表的数据复制到另外一个表中(DB2不支持)
    select * into customerCopy from customers//将会创建一个customerCopy表,
    并且将查询到的数据全部导入到创建的表中.如果只想导入某几列,则具体列出来即可.
    不管从多少表中检索数据,最终都只能导入到一个表中.

19. ifnull(exp1,exp2): 如果exp1的值为null,则使用exp2的值,否则使用exp1的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值