mysql那些事
---恢复内容开始---
登录
>mysql -uroot -p1234
mysql登录 -u+用户 -p 密码
显示数据库
show databases;
使用某个数据库
use xxx;
显示数据库表
show tables
显示表结构
show columns form xxx;//表名
select选择
使用distinct来输出MYsql只返回不同的值
select distinct email from user//必须放在这个字段的前面
部分不能使用这个关键字(这个关键字用于可以用于所有列)除非指定的两个列都不同,否则所有的行都被检索出来
limit限制结果
select id from user limit 5,10
第一个参数为下标从几个开始,从下标为0开始
第二个参数为要检索的行数
排序:(asc 正序 desc 逆序)
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关键字很有用在复杂的语句中
select * from user where id not in(12,13);
Like的通配符的进行过滤
select * from user where name LIKE 'a%';
注意在这里面的字符是区分大小写的,%代表可以出任意次数。
select * from user where name LIKE 'a_';
_代表一个字符匹配!
mysql 使用concat来对字符进行连接
select concat(id,'(',name,')') from t_user;
mysql 中如果使用时间作为查询条件的话,最好使用Date()函数来修饰这个时间字段
select * from t_user where Date(someTime)='2016-01-01';
因为如果你的数据库的时间是timeStamp类型的话带有时分秒会导致其检索失败;
group By分组查询
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语句进行多表查询
select m.sendto,u.name from t_mail as m,t_user as u where m.senderid=u.id group by u.id;
利用内联
---恢复内容结束---
登录
>mysql -uroot -p1234
mysql登录 -u+用户 -p 密码
显示数据库
show databases;
使用某个数据库
use xxx;
显示数据库表
show tables
显示表结构
show columns form xxx;//表名
select选择
使用distinct来输出MYsql只返回不同的值
select distinct email from user//必须放在这个字段的前面
部分不能使用这个关键字(这个关键字用于可以用于所有列)除非指定的两个列都不同,否则所有的行都被检索出来
limit限制结果
select id from user limit 5,10
第一个参数为下标从几个开始,从下标为0开始
第二个参数为要检索的行数
排序:(asc 正序 desc 逆序)
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关键字很有用在复杂的语句中
select * from user where id not in(12,13);
Like的通配符的进行过滤
select * from user where name LIKE 'a%';
注意在这里面的字符是区分大小写的,%代表可以出任意次数。
select * from user where name LIKE 'a_';
_代表一个字符匹配!
mysql 使用concat来对字符进行连接
select concat(id,'(',name,')') from t_user;
mysql 中如果使用时间作为查询条件的话,最好使用Date()函数来修饰这个时间字段
select * from t_user where Date(someTime)='2016-01-01';
因为如果你的数据库的时间是timeStamp类型的话带有时分秒会导致其检索失败;
group By分组查询
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语句进行多表查询
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进行内联
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;
外联 查找那些和他没相关的信息也就是另一张表为空
左外联
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;
右外联
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是以左边的表为主列出他的所有的行,与右边的表进行匹配
内联和外联的区别是
是不是将没有关联的字段加入
插入数据
insert into user values(1,'a');//需要插入该表的所有的字段的数据
不推荐 使用上面的用法
最好是使用指定列名
insert into user(id,name) values(1,'a');//指定列名可以保证数据表结构改变了也可以正常运行
多条数据插入(用,分隔)
insert into user(id,name) values(1,100),(2,300);
插入检索出来的数据
insert into user(id,name) select id ,name from user
创建一个表
CREATE TABLE info(
id int not null primary key AUTO_INCREMENT,
content char(50)
)
删除表
drop table user;
重命名
rename table info to info2;
事务
start TRANSACTION//开启事务
insert into info2(id ,name) values(1,'');
commit;//提交
mysql那些事的更多相关文章
- mysql那些事之索引篇
mysql那些事之索引篇 上一篇博客已经简单从广的方面介绍了一下mysql整体架构以及物理结构的内容. 本篇博客的内容是mysql的索引,索引无论是在面试还是我们日常工作中都是非常的重要一环. 索引是 ...
- mysql那些事(6) WHERE条件 字符串的引号
前言:所谓的坑,两个意思,一个是软件本身的bug,一个是使用者常犯的错误. phper在日常开发中经常和mysql打交道.特别是在没有分层的中小应用中,phper开发要关注sql语句的实现. 入正题, ...
- mysql那些事(5)建表存储引擎的选择
在mysql见表的时候,会遇到选择存储引擎:MyISAM和InnoDB.究竟用哪种存储引擎好呢? 1.MyISAM:表锁:支持全文索引:读并发性能较好. 2.InnoDB:行锁:支持事务,支持外键:写 ...
- mysql那些事(4)建库建表编码的选择
mysql建数据库或者建表的时候会遇到选择编码的问题,以前我们都是习惯性的选择utf8,但是在mysql在5.5.3版本后加了utf8mb4的编码,utf8mb4可以存4个字节Unicode,mb4就 ...
- mysql那些事(3)小数如何存储
创建mysql数据表的时候,经常会遇到存储小数(浮点数)的情况,如:价格,重量,身高等. 目前大的公司流行三种存储方案: 1.将数据扩大10的倍数达到使用整数类型存储目的. 比如价格,我们经常以分为单 ...
- mysql那些事(2)时间类型数据如何存储
几乎每次数据库建模的时候,都会遇到时间类型数据存储的问题. mysql存储时间通常选择这四种类型:datetime.timestamp.int和bigint四种方式,到底使用什么类型,需要看具体的业务 ...
- mysql那些事(1)手机号与座机号码如何存储
创建mysql数据表的时候,经常会遇到手机号码和座机号码数据的存储问题. 先说手机号码:很多人喜欢使用数字来进行存储,手机号不涉及到运算,并且有时候要带括号,加号之类的字符,有时候还要以0开头.所以, ...
- MYSQL 那些事
1.一条update语句 1.先通过引擎找到对应的行数据,并加锁 2.对行数据进行修改并调用引擎接口修改这条数据,然后释放锁(此时并没有把数据在磁盘上做出修改) 3.redo log在内存中生成这条u ...
- PHP基础之与MySQL那些事
前言 这篇文章会对PHP的MySQL扩展库,MySQLI的扩展库,SQL批量执行,事务控制等等进行一些简单的讲解. MySQL扩展 PHP中MySQL扩展,虽然因为安全的原因,在PHP5.6及往上不在 ...
随机推荐
- 强大的Cmder
why 漂亮,包装并美化了各个shell 带task功能,能记忆,能执行脚本 配合win10的bash,能实现类似xshell的功能 注意点 需要注意的一点,Cmder来源于另外一个项目ConEmu, ...
- Linuxc - C语言下return 0的意义
两条指令同时执行,前提是第一条指令返回0.否则不执行第二条指令. root@jiqing-virtual-machine:~/cspace/les3# gcc main.c -o main.out & ...
- JavaSE-反射-获取类或者对象的四种方法
1.使用Class类的静态方法Class.forName("xxxx"); 新建一个要想要获取的类 package org.burning.sport.javase.classlo ...
- esp8266 终于装上固件了!半个月了!开始进军简单粗暴的lua语言!!
第一次测试2017-10-2720:33:33 感谢这位大神的汇总资料太详细了 http://www.cnblogs.com/yangfengwu/p/7524326.html --first tes ...
- centos如何安装python库?
通过yum install安装,先解决yum不能安装python库的问题 yum install -y epel-release #先安装epel源,参考http://sharadchhetri. ...
- <script>元素在XHTML中的用法
编写XHTML代码的规则要比编写HTML严格得多,例如如下代码: <script type="text/javascript"> function compare(a, ...
- 微信小程序实战:天气预报
接触微信小程序也有一段时间了,以天气预报练一下手. 主要实现了以下功能: (1) 首页图标式菜单,便于以后扩展功能 (2)首页顶部滚动消息 (3)页面右上角三点菜单转发功能,便于小程序的传播 (4)天 ...
- linux指令--ls
本篇博客转自http://www.cnblogs.com/peida/archive/2012/10/23/2734829.html,在原作者基础上做了修改和总结. ls命令是linux下最常用的命令 ...
- 20165220 学习基础和C语言基础调查
# # # # 我觉得我打游戏(不知道算不算一技之长)毕竟从小学一年级就接触到了各种形形色色的游戏,讲道理其实我的游戏天赋毕竟还是很大的,从意识到感觉我觉得都比大多数人好一些,其实吧打游戏打得好也是很 ...
- MySQL中时间函数NOW()和SYSDATE()的区别
mysql中日期函数还是比较常用的.主要有NOW()和SYSDATE()两种,虽然都表示当前时间,但使用上有一点点区别. NOW()取的是语句开始执行的时间,SYSDATE()取的是动态的实时时间. ...