当前位置:首页 > 数据库 > mysql那些事

mysql那些事

2022年11月09日 21:31:24数据库7

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

登录

 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;//提交

 

作者:lonecloud
来源链接:https://www.cnblogs.com/lonecloud/p/6228029.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/database/69044.html

标签: MySQL
分享给朋友:

“mysql那些事” 的相关文章

MySQL触发器

MySQL触发器 触发器是一种特殊的存储过程,触发器和存储过程一样是一个能完成特定功能、存储在数据库服务器上的SQL片段,但是触发器无需调用,当对数据库表中的数据执行DML操作时自动触发这个SQL片段的执行,无需手动调用. 在MySQL中,只...

MYSQL的存储过程

MYSQL的存储过程 概述 什么是存储过程? mysql5.0版本开始支持存储过程; 简单的说,存储过程就是一组sql语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于java语言中的方法; 存储过程就是数据库s...

Linux安装MySQL(超详细)

Linux安装MySQL(超详细)

1 查看是否已经安装 Mysql rpm -qa | grep mysql 我之前装过一次! 如果你查看出来有东西,可以使用下面命令将其删除 rpm -e 文件名   2 下载官方 Mysq...

JDBC连接时所犯错误1.字符集设置不合适2.连接MySQL8.0社区版时时区不一致3..包名不能以Java.命名4.驱动被弃用

Microsoft JDBC Driver 的主页为:https://msdn.microsoft.com/en-us/data/aa937724.aspx 下载所需驱动 今天连接时报了四次错,记录下来 1.java.sql.SQLException:...

MySQL查询JSON类型字段中某个属性值

MySQL查询JSON类型字段中某个属性值

只支持MySQL5.7以上的版本 user表中有如下数据: id profile 1 {“age”: 20, “name”: “...

MySQL学习(4)︱数据库的查询

MySQL学习(4)︱数据库的查询

在SQL中,使用select语句来查询数据。不同的关系数据库,select语法会有细微差别,在MySQL官网可以查询到支持的select语法。 SQL语法: SELECT column_name1, column_name2//...

mysql查询结果中文显示成了问号

character-set-server = utf8    collation-server = utf8_general_ci   然后 service  mysq...

mysql查询字段为null 返回0

SELECT   IF(AVG(字段) IS NULL,0, 字段) as 重命名   From  xxx 作者:键盘侠007 来源链接:https://blog.csdn.net/qq_29072049/a...

mysql 查询某字段最小的记录

根据我所遇到的应用情况,总结了以下3中简单的语句 1. select *,(select field from table t2 order by field) s from table t1  2. select t1.* from table...

MYSQL查询大于某个时间的数据

今天: SELECT * FROM 表名 WHERE TO_DAYS( 时间字段名) = TO_DAYS(NOW()); 昨天: SELECT * FROM...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。