?数据库基础
数据库:保存有组织的数据的容器
表:某种特定类型数据的结构化清单
列:表中的一个字段数据类型:所容许的数据的类型
行:表中的一个记录
主键:一列,其值能够唯一区分表中每个行
SQL是结构化查询语言(Structured Query Language)的缩写
MYSQL 简介
MYSQL是一种DBMS(数据库管理系统),即它是一种数据库软件
MYSQL、ORACLE以及MICROSOFT SQL SERVER等数据库是基于客户机-服务器的数据库。
数据操作流程:用户->客户机->服务器->客户机->用户
使用MYSQL
选择数据库:USE 数据库名
显示所有数据库:SHOW DATABASES
显示某一数据库下的表:SHOW TABLES
检索数据
检索列:SELECT 第一个列,第二个列,,,, FROM 表名
检索所有列:SELECT * FROM 表名
检索结果中重复的列只出现一次:SELECT DISTINCT 列名 FROM 表名
限制结果:SELECT 列名 FROM 表名 LIMIT 数字
SELECT 列名 FROM 表名 LIMIT 数字1,数字2 (从行数字1开始的数字2行,注意行数从零开始)
排序检索数据
升序:SELECT 列名 FROM 表名 ORDER BY 列名
降序:SELECT 列名 FROM 表名 ORDER BY 列名 DESC
过滤数据
过滤:SELECT 列名 FROM 表名 WHERE 列名需满足的条件
例子:SELECT prod_name,prod_price FROM products WHERE prod_price BETWEEN 5 AND 10
空值检查:SELECT 列名 FROM 表名 WHERE 列名 IS NULL
AND操作符:SELECT 列名 FROM 表名 WHERE 列1满足条件1 AND 列2满足条件2
OR操作符:SELECT 列名 FROM 表名 WHERE 列1满足条件1 OR 列2满足条件2
(注意,AND 操作符的优先级大于OR操作符)
IN操作符:SELECT 列名 FROM 表名 WHERE 列名 IN (a,b)
NOT操作符:SELECT 列名 FROM 表名 WHERE 列名 NOT IN (a,b)
(a,b)是枚举!不是范围!NOT 是取反
用通配符过滤
通配符:用来匹配值的一部分的特殊字符
LIKE操作符:WHERE 列名 LIKE ‘字符组合’(LIKE字符是全匹配,与REGEXP匹配部分不同)
%通配符:%表示任何字符出现任意次数
下划线通配符:_ 表示任何字符出现一次
正则表达式进行搜索
正则表达式:用来匹配文本的特殊的串
REGEXP操作符:WHERE 列名 REGEXP ‘字符组合’(列值包含字符组合即满足要求)
区分大小写:WHERE 列名 REGEXP BINARY ‘字符组合’
OR匹配:WHERE 列名 REGEXP ‘值1|值2‘
匹配几个字符之一:WHERE 列名 REGEXP ‘[字符1字符2字符3]’
匹配范围:WHERE 列名 REGEXP ‘[0-9]’
匹配特殊字符:WHERE 列名 REGEXP ‘\\.’
(因为 . 匹配任意字符,所以需用转义字符)
[:lower:] [:upper:] [:cntrl:] [:alnum:] [:print:] ......
匹配多个实例:
* 0个或多个匹配
+ 一个或多个匹配
? 0个或一个匹配
{n} 指定数目的匹配
{n,}不少于指定数目的匹配
{n,m}匹配数目的范围
例子1:WHERE 列名 REGEXP ‘\\([0-9] sticks?\\)’
匹配结果:
TNT (1 stick)
TNT (5 sticks)
?匹配它前面的任何字符的0次或1次出现
例子2:WHERE 列名 REGEXP ‘[[:digit:]]{4}’ (同[0-9][0-9][0-9][0-9])
定位符:
^ 文本的开始
$ 文本的结尾
[[:<:]] 词的开始
[[:>:]] 词的结尾
例子:WHERE 列名 REGEXP ‘^[0-9]’
只有文本开始是数字才满足条件
原文:https://www.cnblogs.com/czw716/p/11768400.html