第二章:
mysql安装完成后,\h或者直接输入help是很有意思的,可以查看很多东西。
输入quit或exit可以退出mysql。
第三章:使用MySQL
我觉得这些命令之所以这么难以记忆或者使用,有很大的原因是英语基础不过关,很多的命令就是英语的口头翻译。如果是我们自己写的,那一看就明白了,看完多半也一下就能记下。
show databases;
显示所有数据库
use 数据库名;
进入该数据库
show tables;
显示所在库的所有表
show columns from 表名;
或者describe 表名;
显示所在表的字段名及信息
show status
显示服务器状态信息
show create database 库名;show create table 表名;
分别显示创建相应库和表的mysql语句。
第四章:检索数据
这里更重要的是搜索的逻辑和它搜索底层原理的理解。至于语句是一个基于此的个人逻辑实现。比如where条件的设定,group by命令,是对经过第一层检索后形成的结果表的再整理过滤。
以及在查询过程中,把字段当成一个变量来看的思考方向。
select语句:
查一个字段:
select 字段名 from 表名[可以是结果表];
查多个字段:
select 字段名1,字段名2,... from 表名[可以是结果表];
查所有字段
select * from 表名[可以是结果表];
查看一列中不重复的值:[同样的这里的distinct就是去除重复的意思,知道这个单词的意思,这个命令也就记下了]
select distinct 字段名 from 表名;
检索语句结束后,其实后台就相当于已经生成了一个新的结果表了,如果我们有其他的筛选条件,直接加到语句后面就可以了,也就是所谓的子句。比如下面的操作:
限制显示数量:
select 字段名 from 表名 limit 整数;
select 字段名 from 表名 limit 整数1(开始行),整数2(行数);
排序:(默认为升序,若要改为降序,则在最后面加DESC)
单列排序
select 字段名 from 表名 order by 字段名;
多列排序
select 字段名 from 表名 order by 字段名,字段名;
以上若组合,则是from where–>order by -->limit的顺序。
第六章:过滤数据
第七章:数据过滤(AND和OR)
where 条件1 and 条件2 and 条件3 ...
where 条件1 or 条件2 or 条件3 ...
in/not操作符条件筛选。
like操作符
%通配符:在搜索传中,%表示任何字符出现任意次数。
_通配符。只匹配单个字符而不是多个字符。
第九章:用正则表达式进行搜索
[123]是[1|2|3]的另一种书写形式。[^123]这是它的否定形式。
[1-9][a-z][A-Z]是相应范围的搜索。
为了匹配特殊字符,使用双斜线来(相当于转义)设计。比如\\或者\-等等。
*表示0个或多个匹配
+表示1个或多个匹配
?表示0个或1个匹配
{n}指定书目的匹配
{n,}不少于指定数目的匹配
{n,m}匹配书目的范围,m不超过255。
select 字段名 from 表名 where 字段名 REGEXP ‘\\([0-9] sticks?\\)’
解释上面REGEXP后面的语句;\(匹配(;[0-9]匹配0-9之间的数字,sticks?匹配stick及stick后面一个s;\)匹配)。
REGEXP '[[:digit:]]{4}'匹配4位数。
第10章:创建计算字段
检索、计算、转换、格式化数据的作用。
Concat()函数:
要达到这个显示格式:字段1(字段2)这种效果,用Concat()函数。
比如
select Concat(字段1,'(',字段2,')') from 表名 order by 字段名;
Trim函数:去除值左右的空格。RTrim是去除值右边的空格,RTrim是去除值左边的空格。
别名-alias,有时也称为导出列。
最后是创建字段。这个其实就是把字段看成变量的思考方向的实际操作。
第11章:使用数据处理函数
- 文本处理函数:
让我觉得神奇的是Soundex()这个函数,它是根据字符串的发音来搜索的。
- 日期和时间处理函数:
select ... ... where Year(日期字段名) = '2009' and Month(日期字段名) = '9';
上面的查询语句检索出日期字段中时间为2009年9月的所有行。
- 数值处理函数:
第12章:汇总数据
聚集函数(aggregate function)——运行在行组上,计算和返回单个值得函数。
语句:
select 聚集函数(相应的字段名) from 表名;
注意:count()函数
第13章:分组数据(group by)
过滤分组:
GROUP BY AND ORDER BY
select语句顺序:
select 字段 from 表格 where 行级过滤 group by 分组说明 having 组级过滤 order by 排序 limit 检索行数
第15章:子查询(subquery)
子查询就是讲一个select语句当做一个表或者是字段来操作的这样一个查询,类似于封装和面向对象吧,我个人觉得。
就像这样
还有这样:
相关子查询(corrected subquery)
第15章:联结表
SQL最强大的功能之一就是在检索数据的时候能够联结表。
相同数据出现多次不是一件好事,这是关系型数据库设计的基础。关系表的设计就是要保证把信息分解成多个表,然后各表之间通过关系进行关联。
联结是一种机制,用来在一条select语句中关联表。
主键:唯一、非空、不重复;
外键:本表中的他表的主键;
可伸缩性:也就是能够适应不断变化的数据。
内部联结:
select 字段名1,字段名2 from 表1 INNER JOIN 表2 on 条件;
联结多个表:
用where+… …+表名.字段名的形式来完成。
第16章:创建高级联结
使用表别名来简化语句;
使用不同类型的联结:
自联结【使用类别名完成】
自然联结:排除多次出现,实现每个列只返回一次。
外部联结:联结包含了那些在相关表中没有关联行的行。【outer join】
上面句子中的外联结是右联结,左联结则是把RIGHT换成LEFT。
使用带聚集函数的联结。
第17章:组合查询
union连接两个select句子。