MySQL必知必会1-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 '\\.'

你可能感兴趣的:(MySQL必知必会1-9)