• mysql那些事


    ---恢复内容开始---

    登录

     1 >mysql -uroot -p1234 

    mysql登录 -u+用户 -p 密码

    显示数据库

     1 show databases; 

    使用某个数据库

     1 use xxx; 

    显示数据库表

     1 show tables 

    显示表结构

     1 show columns form xxx;//表名 

    select选择

    使用distinct来输出MYsql只返回不同的值

     1 select distinct email from user//必须放在这个字段的前面 

    部分不能使用这个关键字(这个关键字用于可以用于所有列)除非指定的两个列都不同,否则所有的行都被检索出来

    limit限制结果


     1 select id from user limit 5,10 

    第一个参数为下标从几个开始,从下标为0开始

    第二个参数为要检索的行数

    排序:(asc 正序 desc 逆序)

     1 select id from user order by id limit 0,10 

    必须先进行排序后进行限制结果不然会报错的

    is null和=null的区别

    按照ANSI SQL标准,下面的两个查询都不返回任何行:

    查询一: SELECT * FROM test WHERE data=NULL

    查询二: SELECT * FROM test WHERE data<>NULL

    详细:http://blog.csdn.net/freshlover/article/details/8973266

    where中的not关键字很有用在复杂的语句中

     1 select * from user where id not in(12,13); 

    Like的通配符的进行过滤

    select * from user where name LIKE 'a%';

    注意在这里面的字符是区分大小写的,%代表可以出任意次数。

     1 select * from user where name LIKE 'a_'; 

    _代表一个字符匹配!

    mysql 使用concat来对字符进行连接

     1 select concat(id,'(',name,')') from t_user; 

    mysql 中如果使用时间作为查询条件的话,最好使用Date()函数来修饰这个时间字段

     1 select * from t_user where Date(someTime)='2016-01-01'; 

    因为如果你的数据库的时间是timeStamp类型的话带有时分秒会导致其检索失败;

    group By分组查询

    1 select count(id) as c,position as  p  from t_user group by position having c >10;

    相关组查询中having组查询中的筛选条件,

    select 的顺序

      From 检索的表

      where 查询条件(行级过滤)

      group BY 分组说明

      having 组级过滤

      order by 输出排序的顺序

      Limit 要检索的行数

    利用where语句进行多表查询

     1 select m.sendto,u.name from t_mail as m,t_user as u where m.senderid=u.id group by u.id; 

    利用内联

    ---恢复内容结束---

    登录

     1 >mysql -uroot -p1234 

    mysql登录 -u+用户 -p 密码

    显示数据库

     1 show databases; 

    使用某个数据库

     1 use xxx; 

    显示数据库表

     1 show tables 

    显示表结构

     1 show columns form xxx;//表名 

    select选择

    使用distinct来输出MYsql只返回不同的值

     1 select distinct email from user//必须放在这个字段的前面 

    部分不能使用这个关键字(这个关键字用于可以用于所有列)除非指定的两个列都不同,否则所有的行都被检索出来

    limit限制结果


     1 select id from user limit 5,10 

    第一个参数为下标从几个开始,从下标为0开始

    第二个参数为要检索的行数

    排序:(asc 正序 desc 逆序)

     1 select id from user order by id limit 0,10 

    必须先进行排序后进行限制结果不然会报错的

    is null和=null的区别

    按照ANSI SQL标准,下面的两个查询都不返回任何行:

    查询一: SELECT * FROM test WHERE data=NULL

    查询二: SELECT * FROM test WHERE data<>NULL

    详细:http://blog.csdn.net/freshlover/article/details/8973266

    where中的not关键字很有用在复杂的语句中

     1 select * from user where id not in(12,13); 

    Like的通配符的进行过滤

    select * from user where name LIKE 'a%';

    注意在这里面的字符是区分大小写的,%代表可以出任意次数。

     1 select * from user where name LIKE 'a_'; 

    _代表一个字符匹配!

    mysql 使用concat来对字符进行连接

     1 select concat(id,'(',name,')') from t_user; 

    mysql 中如果使用时间作为查询条件的话,最好使用Date()函数来修饰这个时间字段

     1 select * from t_user where Date(someTime)='2016-01-01'; 

    因为如果你的数据库的时间是timeStamp类型的话带有时分秒会导致其检索失败;

    group By分组查询

    1 select count(id) as c,position as  p  from t_user group by position having c >10;

    相关组查询中having组查询中的筛选条件,

    select 的顺序

      From 检索的表

      where 查询条件(行级过滤)

      group BY 分组说明

      having 组级过滤

      order by 输出排序的顺序

      Limit 要检索的行数

    利用where语句进行多表查询

     1 select m.sendto,u.name from t_mail as m,t_user as u where m.senderid=u.id group by u.id; 

    利用内联 使用inner join on进行内联

    1 select m.sendto,u.name from t_mail as m Inner join t_user as u on  m.senderid=u.id group by u.id;

    外联 查找那些和他没相关的信息也就是另一张表为空

    左外联

    1 select m.sendto,u.name from t_mail as m left outer join t_user as u on  m.senderid=u.id group by u.id;

    右外联

    1 select m.sendto,u.name from t_mail as m right outer join t_user as u on  m.senderid=u.id group by u.id;

    这两种的外连接的区别的是left是以左边的表为主列出他的所有的行,与右边的表进行匹配

    内联和外联的区别是

    是不是将没有关联的字段加入

    插入数据

     1 insert into user values(1,'a');//需要插入该表的所有的字段的数据 

    不推荐 使用上面的用法

    最好是使用指定列名

    1 insert into user(id,name) values(1,'a');//指定列名可以保证数据表结构改变了也可以正常运行

    多条数据插入(用,分隔)

    1 insert into user(id,name) values(1,100),(2,300);

    插入检索出来的数据

     1 insert into user(id,name) select id ,name from user 

    创建一个表

    1 CREATE TABLE info(
    2         id int not null primary key AUTO_INCREMENT,
    3         content char(50)
    4 )

    删除表

     1 drop table user; 

    重命名

     1 rename table info to info2; 

    事务

    start TRANSACTION//开启事务
        insert into info2(id ,name) values(1,'2');
    commit;//提交
  • 相关阅读:
    springboot scheduled多线程
    Oracle sql 小数点前面0不显示
    (转)VIM常用命令集锦
    java 面试题
    关于oracle start with connect by 全表扫描的一点想法
    (转)window.opener方法的使用 刷新父页面
    (转)jQuery “not readonly” selector
    (转)jquery合并单元格
    Java 格式化json为json树
    我的2018
  • 原文地址:https://www.cnblogs.com/lonecloud/p/6228029.html
Copyright © 2020-2023  润新知