打算系统性复习数据库的相关知识,所用的书为《MySQL必知必会》,三天内复习完SQL的一些知识。
day1:第一章 -第十一章
第1章 了解SQL
数据库(datebase):保存有组织的数据的容器。区别:DBMS(数据库管理系统):C/S结构
模式(schema):关于DB和表的布局及特性的信息。
主键(primary key)
SQL(Structured Query Language):结构化查询语言
第2章 MySQL简介
MySQL三个工具 :命令行 MySQL Administrator( MySQL 管理器) MySQL Query Browser
第3章 使用 MySQL
选择数据库:USE xxx ;
展示数据库: SHOW DATABASES(FROM 表名); = DESCRIBE 表名
(INFORMA-TION_SCHEMA :获取过滤模式信息)
第4章 检索数据
SELECT 列名1,列名2 所有列(*)
FROM 表名
检索不同的行:DISTINCT SELECT DISTINCT 行名 FROM 表名
限制结果:LIMIT
SELECT 列名1
FROM 表名
LIMIT 5;(和数组一样,行号从0开始) LIMIT 5,4(行5后的四行) =LIMIT 4 OFFSET 5 LIMIT 放在SELECT最后面
完全限定: 表名.列名 数据库名.列名
第5章 排序检索数据
SELECT 列名1
FROM 表名
ORDER BY 列名1 DESC(降序 ASC升序,默认);
LIMIT 5;
第6章 过滤数据
SELECT 列名1
FROM 表名
WHERE 表名 =xx;(字符串要‘’,数值不用)
<> != 不等于
范围值检查:BETWEEN AND
空值检查: IS NULL(在过滤数据时,一定要验证返回数据中确实给出了过滤列具有NULL的行)
第7章 数据过滤
①结合WHERE子句:
AND操作符(优先级比OR高,所以最好要加圆括号)
SELECT 列名1
FROM 表名
WHERE 表名 1=xx AND 表名 2=xx ;
OR操作符
IN操作符
WHERE 表名 IN(A,B);
NOT操作符 NOT IN
第八章 用通配符进行过滤 通配符:匹配值的一部分的特殊字符
①LIKE操作符 (LIKE是谓词不是操作符)
%通配符 WHERE prod_name LIKE 'jet%'; 尾空格处理办法: 尾部加%,或者使用函数。%不能匹配NULL
_通配符 WHERE prod_name LIKE '_jet';
attention:最好不要将通配符放在搜索模式的开始处。(速度最慢)
第九章 用正则表达式进行搜索
作者的《正则表达式必知必会》
基本字符匹配 REGEXP .XXX (匹配任意一个字符) REGEXP使用^和$(开始和结束)匹配整个列值 (LIKE匹配整个串 ,REGEXP匹配子串)
区分大小写:BINARY | (OR) [123](几个之一) =[1|2|3]
否定: [^123]
匹配范围:[0-9]
匹配特殊字符:使用转义 \\ \\ - :查找-
匹配字符类:
重复元字符:
定位元字符:
^双重用途:[]否定 ,还可以指串的开始处。
mysql> select 'hello' REGEXP '[0-9]';
+------------------------+
| 'hello' REGEXP '[0-9]' |
+------------------------+
| 0 |
+------------------------+
1 row in set (0.00 sec)
第10章 创建计算字段
拼接字段:Concat函数
SELECT Concat(vend_name,'(',vend_country,')') 将两个字符连接起来
RTrim()删除右侧多余空格 LTrim()删除左侧多余空格 Trim 去掉串左右两边的空格
别名:AS
算术计算
mysql> SELECT 2*3
->
-> ;
+-----+
| 2*3 |
+-----+
| 6 |
+-----+
Now()函数 返回当前日期和时间
mysql> SELECT Now()
-> ;
+---------------------+
| Now() |
+---------------------+
| 2018-09-25 10:06:42 |
+---------------------+
1 row in set (0.00 sec)
第11章 使用数据处理函数
文本处理函数:
soundex():对串进行发音比较
日期和时间处理函数:
日期格式:yyyy-mm-dd
要用日期,最好使用Date() 具体时间用Time()
Month() Day()也很好用
数值处理函数: