MySQL必知必会1-9
2017-12-09 本文已影响9人
废柴社
1 了解SQL
SQL=structured query language,是用来与数据库通信的语言;
数据库(database)
数据库管理系统(DBMS)
文件,表、列、行;
主键(可以由多列组成,非必需但建议每个表都有),满足以下性质
- 任意两行都不具有相同的主键值
- 每个行都必须具有一个主键值(即主键不可为NULL值)
SQL非专用语言,几乎所有重要的DBMS都支持SQL
2 什么是MySQL
MySQL是一种DBMS;
三个可用来与MySQL交互的工具:
- mysql命令行实用程序
- MySQL Administrator
- MySQL Query Browser
3 使用MySQL
连接至MySQL需要:
- 主机名
- 端口
- 用户名与口令
选择数据库
USE dbname
了解数据库和表 --SHOW
SHOW DATABASES; #返回可用数据库的列表
SHOW TABLES; # 返回一个数据库内的表的列表
SHOW COLUMNS FROM customers # 返回表的列属性信息,和sas中的contents 过程一致,需要提供表名
SHOW STATUS ; # 返回服务品状态;
4 检索数据
- 检索单个列
SELECT prod_name
FROM products;
SQL语句不区分大小写,但通常习惯对SQL关键字大小,对列和表名小写
- 检索多个列
SELECT prod_name,prod_id,prod_price
FROM products;
#检索所有列,其中*是通配符;
SELECT *
FROM products;
- 检索不同的行 DISTINCT
SELECT DISTINCT vend_id
FROM products;
- 限制结果数量 LIMIT
SELECT prod_name
FROM products
LIMIT 5; #返回结果不多于5行;
SELECT prod_name
FROM products
LIMIT 5,5; #返回结果从第5行开始的5行;
5 排序检索数据
子句 SQL语句由句子构成,已使用的如SELECT语句中的FROM子句,排序需要用到ORDER BY 子句。
- 排序数据
SELECT prod_name
FROM products
ORDER BY prod_name; #单列排序
… ORDER BY prod_name,prod_price; #多列排序
… ORDER BY prod_price DESC; #价格降序排序
- ORDER BY 和 LIMIT组合,可以检索到一列中的最大或最小值
SELECT prod_price
FROM products
ORDER BY prod_price
LIMIT 1;
6 过滤数据
-
使用WHERE子句
同时使用时,order by 应该在where 子句之后 -
WHERE子句可用操作符
= 单个值过滤
!= <> 不等于/不匹配检查
between 范围内检查,需要两个值,用and连接 -
空值检查
…
WHERE prod_price IS NULL
7数据过滤?[6续]
-
组合WHERE子句
AND
OR
AND优先级高于OR,多个组合时,使用小括号标出先后顺序。 -
IN 操作符——指定条件范围
-
NOT 否定操作,否定其后任何条件
8 用通配符进行过滤
- LIKE操作符
- 百分号(%)通配符——代表可匹配0、1或多个字符
SELECT prod_id,prod_name
FROM products
WHERE prod_name LIKE 'jets%'
- 下划线(_)通配符——代表可匹配1个字符
不过度使用通配符,其它操作符能达到同样目的时,使用其它操作符
确有需要使用时,除非绝对有必要,不把通配符放在过滤条件的最前面,放在最前面是最慢的
9 正则表达式
正则表达式的目的是匹配文本:将一个模式(正则表达式)与一个文本串进行比较。
- 基本字符匹配 REGEXP
#返回含有1000的行,此时和like很类似,但like需要用通配符组合实现同样的功能
SELECT prod_name
FROM products
WHERE prod_name REGEXP '1000'
#.在正则表达式中表示匹配任意一个字符
SELECT prod_name
FROM products
WHERE prod_name REGEXP '.000'
#进行OR匹配
…… WHERE prod_name REGEXP '1000|2000'
#匹配几个字符之一,这里指匹配1或2或3,即1 Ton 或2 Ton 等都返回
…… WHERE prod_name REGEXP '[123] Ton'
#匹配范围,如上例,也可以使用[1-3]
#匹配特殊字符,如. [] 等正则表达示中的特殊字符;用\\作为前导进行引用,下例表示匹配.
…… WHERE prod_name REGEXP '\\.'