《SQL必知必会》

本地数据库me_nine,已经导入数据

前言:
    *一般而言,主键是一列,但也可以多个列组合作为主键。如果没有主键,更新
     删除特定行就极为困难,因为你无法保证操作只涉及相关行
    *SQL语言只有很少的词,设计的目的是为了提供一种从数据库中读写数据的简单
     有效的方法
    *基础SQL通用于所有DBMS,但各家DBMS扩展了一些不同的功能,提供了不同的实现
    *SQL关键字大小写都行。表名,列名和值默认都不区分大小写(但可以配置)
    *使用*通配符会降低性能
     
第N章:基本语句 
    *增加:
        *不要使用没有给出列的插入语句,防止后期表结构变化
    *删除:
        *删除规范,先用select测试删除条件是否正确
    *修改: 
    *查询:
        *is null可以判断字段是否为空。但要注意为空,空值,空格三者是不同的 
        *多个逻辑关系and or 记得用括号分组,保证执行顺序
        *子查询,用in有一个好处,可以更动态的构建条件
         select * from user where id in(select id from user where id=1); 
        *模糊搜索 % 通配符不匹配空格。模糊搜索性能不高,不应过度使用
        *正则表达式是一个很有用的小工具,MySQL支持部分正则 
        *使用distinct可以查询没有重复的字段。(查询多个列时,关键字作用域所有的列,
         把所有的列看成一个整体)
        *查询结果可以使用非检索列排序,也可以使用多个列排序,也可以用desc关键字倒序
         select name from user order by id,name desc;  
        *查询结果可以使用各种函数处理(比如处理文本,数值运算,处理时间),但是不同DBMS语法可能不同
        *查询结果汇总函数:COUNT() SUM() AVG() MAX() MIN() 
        *查询结果分组 group by 、having
        *对于多表查询,我们可以用IN,嵌套简单语句去实现多表查询。
         我们也可以使用下面连接查询更高效的完成。
        *多表查询:
            内连接、  
            *inner join  on关键字:select v.vend_id,v.vend_name,p.vend_id,p.prod_name from 
            vendors v inner join products p on v.vend_id=p.vend_id;
            
            *也可以用简单的等值语法,但建议使用上面的SQL规范: select v.vend_id,v.vend_name,p.vend_id,p.prod_name from 
            vendors v,products p where v.vend_id=p.vend_id;

            外连接、
            *left outer join  on左连接关键字: SELECT Customers.cust_id, Orders.order_num FROM 
            Customers LEFT OUTER JOIN Orders ON Customers.cust_id = Orders.cust_id; 
            *right outer join  on右连接关键字:左右其实一样。可以调整from,where表顺序转换。
            
            自连接、
            *铁锅炖自己:
            SELECT c1.cust_id, c1.cust_name, c1.cust_contact FROM Customers AS c1, Customers AS c2 
            WHERE c1.cust_name = c2.cust_name AND c2.cust_contact = 'Jim Jones'; 
            
            自然连接、
            *不清楚咯
        
        *组合查询(union all对结果集进行汇总,union自动去掉order_num的重复数据)
            select * from orders where order_num=20005 union all
            select * from orders where order_num=20005
         
第N章:性能
    *视图为虚拟的表,为了重用SQL,视图创建之后和真是的表一样使用
     create view cust_orderNum as 
     select c.cust_id,count(1) as orderNum from customers  c,orders  o where c.cust_id=o.cust_id group by cust_id;

    *存储过程
    *事务
    *游标
    *高级SQL特性 
    
    
    
    
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值