mysql(一)
数据库:保存有组织的数据的容器;数据库管理系统或数据库软件为DBMS
表:数据库中具体数据的体现,由某种特定类型数据的结构化清单;清单不同表不同,清单和表名在不同库中可以相同
列:表中的一个字段,所有表由一个或多个列组成,一个库的表的每列名都不同才能被查询到
行:表中的一个记录且数据是按行存储,保存的每个记录存储在自己的行内,垂直为列,水平为行
主键:一列或一组列,其值能够唯一区分表中的每一行,一个表中只能有一个主键,且不允许为空值
主键是数据表的唯一索引,比如学生表里有学号和姓名,姓名可能有重名的,但学号确是唯一的,你要从学生表中搜索一条纪录如查找一个人,就只能根据学号去查找,这才能找出唯一的一个,这就是主键
客户机提出需求,服务器软件解决需求
SHOW COLUMNS FROM classes;和SELECT * FROM classes;的区别?
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153040905-1836304491.jpg)
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153046836-1651062120.jpg)
SHOW COLUMNS FROM classes;和DESC +表名结果一致;对一个表中的所有字段返回一行,其中包括字段名、数据类型等;和DESCRIBE+表名结果一样
检索不同的行:
SELECT DISTINCT +列名 FROM +表名;只显示不同的列名的值
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153129166-1932586664.jpg)
限制结果:
SELECT+列名 FROM +表名 LIMIT+n;只显示前n行的值,从第一行开始
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153142987-266548248.jpg)
SELECT+列名 FROM +表名 LIMIT+ n,m;只显示从n开始后的m行的值,行数不够有多少显示多少
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153151854-1600030627.jpg)
使用完全限制的表明:
MariaDB [hellodb]> SELECT classid FROM classes;
MariaDB [hellodb]> SELECT classes.classid FROM classes;
MariaDB [hellodb]> SELECT classes.classid FROM hellodb.classes;
MariaDB [hellodb]> SELECT hellodb.classes.classid FROM hellodb.classes;
以上四种的结果都是一样的,用的是完全限制名的语法。
5、排序数据:针对需要列
默认按原始表的数据排序顺序显示,若更新或删除,顺序会受影响??
子句:SQL语句由子句构成,如SELECT的FROM
ORDER BY:必须放在最后
单个列和多个列,都是按照ORDER BY后面规定的顺序进行,先name再age,默认升序
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153156626-941398140.jpg)
指定排序方向:降序DESC,只作用位于其前面的列名
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153350438-1336909908.jpg)
先降序再升序:
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153358651-1476258149.jpg)
多个列的降序排序需注意必须对每个列指定DESC关键字
在排序顺序时如何去区分大小写?如a和A的位置,a和B a和Z? 默认不区分大小写,也可特殊指定
利用ORDER BY和LIMIT找出最值:
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153432837-1583765701.jpg)
6、过滤数据 WHERE 针对所有行,放在ORDER BY的前面
WHERE子句操作符:
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153450806-867941402.jpg)
WHERE后面的描述是字符串的时候需要用引号引起来,不区分大小写
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153518364-1587093709.jpg)
范围值检查:BETWEEN
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153529232-748508228.jpg)
空值检查:IS NULL IS NOT NULL
select 列名 from 表名 where 列名 is not null;
7、数据过滤:WHERE,AND,OR
AND:用来WHERE子句中的关键字,都满足,每添加一条就要使用一个AND
OR:或,匹配任一条件的行
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153646973-753690526.jpg)
AND和OR一起使用时,注意:AND在计算次序中优先级更高,使用圆括号,应改为:
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153732880-757500521.jpg)
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153741371-637836204.jpg)
IN:和OR的效果一样
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153753871-142700143.jpg)
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153804008-515840853.jpg)
NOT:否定后跟条件的关键字
8、通配符:创建特定数据的搜索模式,WHERE子句中有特殊含义的字符
LIKE:必须和通配符搭配起来使用
%:后面任何字符出现任意次数,可在任意位置使用且可使用多个通配符(0、1、多个),但不能匹配NULL
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153829992-1514591472.jpg)
_:后面只匹配单个字符而不是多个字符
使用通配符的技巧:
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153839327-1415103726.jpg)
9、正则表达式介绍:
用来匹配文本的特殊的串(字符集合)。
.匹配任意一个字符:
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153854906-1734857333.jpg)
LIKE和REGEXP区别:LIKE利用通配符匹配而不是直接相等匹配比较,REGEXP在列值内进行匹配,可以相等
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153917408-1275902576.jpg)
|:或
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023153928233-1435422148.jpg)
[]:匹配任何单一字符,是另一种OR语句的表现
匹配范围:[0-9] [a-z]
匹配特殊字符:利用\\转义来匹配特殊的字符如. ,等,匹配\用\\\ \\的意思是MYSQL解释一个,正则表达式解释一个
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023154036760-184995189.jpg)
匹配字符类:
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023154046326-171255216.jpg)
匹配多个实例:
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023154057593-482506175.jpg)
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023154103430-1080001123.jpg)
定位符:
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023154157002-810739527.jpg)
![](https://img2018.cnblogs.com/blog/1473362/201810/1473362-20181023154204602-1389190794.jpg)