zoukankan      html  css  js  c++  java
  • sql语法

    1.模糊查询

    SELECT * FROM mytable WHERE u_name LIKE '%01%'

    2.创建视图

    create view stu_mj
    as
    select student.NO,student.NAME,student.SEX,student.BIRTHDAY,student.MEMBER,major.MAJOR
    from student,major
    where student.MAJOR_KEY=major.MAJOR_KEY

    3. 为table添加备注

    alter table 表名 comment '注释';

    4. 结果排序

    select *
    from z_users 
    order by followers_count desc   #desc 从大到小 asc 从小到大

    5.注释

    我试了下mysql只能用“#”或‘/*  */’。

    不能用‘--’,要出错。

    http://zhidao.baidu.com/question/174428030.html

    6. BETWEEN

    SELECT * FROM Persons
    WHERE LastName
    BETWEEN 'Adams' AND 'Carter'

    7. IN 

    in比连写几个or方便,而且执行效率更高

    SELECT column_name(s)
    FROM table_name
    WHERE column_name IN (value1,value2,...)

    http://www.w3school.com.cn/sql/sql_in.asp  SQL IN 操作符

    8. group by 分组

    select province, count(*) from users 
    group by province                    #按照province来进行统计

    9. having

    于group by 一起用,取代where,作用和where相同。having支持所有where 的操作符。

    select province, count(*) from users 
    group by province
    having count(*)<100

    10. select子句顺序

    (1) select

    (2) from

    (3) where

    (4) group by

    (5) having

    (6) order by

    (7) limit

    11. inner join,  left join,  right join

    left join: 对于left表,即使没有匹配也会列出。

    right join: 对于right表,即使没有匹配也会列出。

    http://www.jb51.net/article/15386.htm  超详细mysql left join,right join,inner join用法分析

    inner join和where用法差不多。

    WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接。INNER JOIN……ON子句产生的连接称为显性连接。

    WHERE 和INNER JOIN产生的连接关系,没有本质区别,结果也一样。但是!隐性连接随着数据库语言的规范和发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性连接,全部采用显性连接了。

    http://blog.csdn.net/qingtanlang/article/details/2133816  inner join 和where 区别

    12. 自连接和子查询

    自连接和子查询基本上可以互换,但是自连接在效率上可能要高。

    例子:某物品(ID为DT)可能存在问题,因此想要知道生产该物品的供应商生产的其他物品是否也有问题。查询要求首先找到ID为DTNTR的物品的供应商,然后找出这个供应商的全部物品。

    子查询

    select prod_id, prod_name
    from products
    where vend_id = ( select vend_id 
                    from products 
                    where prod_id = 'DT')

    自连接

    select prod_id, prod_name
    from products as p1, products as p2
    where p1.vend_id=p2.vend_id
        and p2.prod_id='DT'

    13. union 

    连接2条或多条select语句。

    union重复值只选取1条,要显示全部重复值用union all

    SELECT column_name(s) FROM table_name1
    UNION
    SELECT column_name(s) FROM table_name2

    http://www.w3school.com.cn/sql/sql_union.asp  SQL UNION 和 UNION ALL 操作符

    14. delete

    删除行

    delete from users
    where id=1000

    15. 触发器 trigger

    一个表最多只有6个触发器: insert,update,delete之前和之后。

    create trigger neworder after insert on orders
    for each row select NEW.order_num

    新表用NEW关键字,旧表用OLD关键字。

    16. 管理事物处理 commit, rollback,savepoint。

    start transaction;
    insert into xxx
    values(6,'asdas');
    commit

    事务一般都是自动提交的,也就是说单写insert,delete就可以了。但是要是写了start transaction,事务就不会自动提交,要等到commit命令才会提交。

    start transaction;
    insert into xxx
    values(6,'asdas');
    rollback

    使用savepoint,rollback只到savepoint的位置。

    start transaction;
    insert into xxx
    values(8,'asdas');
    savepoint d1;
    insert into xxx
    values(9,'asdas');
    rollback to d1;
    commit;

    17. 用户管理

    查看用户

    use mysql;
    select user from user

    创建用户

    create user ben identified by '123'

    查看权限

    show grants for ben

    赋予权限

    grant select on table1 to ben

    18. where exists用法

    例子:找寻和某用户location相同的用户,通过自查询

    exists返回真假 

    select * from tag_users as a
    where exists(select 1 from tag_users where  name='不胖大海' and location=a.location)

     http://www.cnblogs.com/diction/archive/2008/01/18/1043844.html    in和exists的区别与SQL执行效率分析

    例子:从users选择tmp表中没有的id

    select * from users  as t
    where not exists
    (select 1 from tmp  as a where a.id=t.id )

    用in来执行相同的查询

    select * from users  as t
    where t.id not in 
    (select id from tmp)
  • 相关阅读:
    硬件的效率与一致性
    深入理解SPI机制-服务发现机制
    spring 之7种重要设计模式
    list里放map list 放list
    jvm 三种编译
    几种不同格式的json解析
    Java知识点梳理——集合
    判断2个list中是否有相同的数据(相交)Collections.disjoint
    键相同,比较两个map中的值是否相同
    Map类型数据导出Excel--poi
  • 原文地址:https://www.cnblogs.com/phoenix13suns/p/2811506.html
Copyright © 2011-2022 走看看