美文网首页
mysql增删改查

mysql增删改查

作者: adtk | 来源:发表于2017-09-19 18:08 被阅读0次

    https://www.oschina.net/translate/node-mysql-tutorial?cmp&p=1#

    insert

    //into可省略,
    //值可以是表达式,可以为default(默认值)
    //NULL可用于自增的值,
    //不能省略可空字段
    insert into user values (NULL,'x','h');
    
    //多插入,逗号隔开
    inser into user values (NULL,'x','h'),(NULL,'x','h');
    
    //只插入必须的值
    inser into user (name,pwd) values ('x','h');
    
    //insert set:只能插入一个
    inser into user set name='x',pwd="h";
    
    //插入查询的数据:insert select
    insert bbs_class (bbs_class.name) select user.name from user where user.id>5;
    
    

    update

    单表更新:
    update user set pwd=pwd+'加密';  //值可为表达式
    
    //不加条件更新全部
    update user set pwd=pwd+'加密' where id=1;  //加限定条件
    

    delete

    单表删除:
    //不加条件就会删除所有
    delete from user where id=1;
    
    

    查询:select

    //查询user表中所有的id与name,*为所有列
    select id,name from user
    
    //user.id,user.name是为了区分表的数据
    select user.id,user.name from user
    
    //查询列并给一个别名,as可省略,
    //别名可用于group by,order by,having子句
    select id as ID,name as User from user
    
    //条件,不加条件查询全部
    select id,name from user where id=1
    
    //查询结果分组:group by
    //以name为条件分组,重复的只取第一个(就是去重...)
    select id,name from user group by name;//最后的name可以为下标从1开始,表示前面出现的列
    
    //对分组进行条件指定:having
    //最后的id必须在前面出现才能,或者用聚合函数
    select id,name,is_admin from user group by 3 having id>1;
    
    //对查询结果进行排序:order by
    select id,name from user order by id desc;//以id倒序排列
    
    select id,name from user order by name,id desc;//以name正序排列,再以id倒序排列
    
    //限制数量,编号从0(第1条)开始,编号和id无关  
    //(页码-1)*记录数)
    select id,name from user limit 2;//从第1条开始获取2条
    select id,name from user limit 0,3;//从第1条开始获取3条
    

    存储过程

    1、使用了存过程,相似的删,改,增等操作就变得轻松了,且便于管理!
    2、因为SQL语句已经预编绎过了,因此运行的速度比较快。
    3、可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。
    4、运行比较稳定,不会有太多的错误。只要一次成功,以后都会按这个程序运行。
    5、主要是在服务器上运行,减少对客户机的压力。
    6、可包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。
    7、可在单个存储过程中执行一系列SQL语句。
    8、可从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。

    //创建存储过程
    create procedure sp1(in userid int unsigned) select * from user where id=userid;
    //调用
    call sp1(3);
    //删除
    drop procedure sp1;
    
    

    例子:获取帖子列表并且带上回复贴数量

    //用count()计算group分组后每组的数,再与bbs 左外连接
    select a.*,b.len from bbs a left join 
    (select bbs_reply.bbs_id,count(*) len from  bbs_reply group by bbs_reply.bbs_id) as b 
    on a.id=b.bbs_id
    

    相关文章

      网友评论

          本文标题:mysql增删改查

          本文链接:https://www.haomeiwen.com/subject/yqxgsxtx.html