select 列名 from 表;正则表达式
SQL语句不区分大小写算法
在处理SQL语句的时候,空格是忽略的。sql
限制结果 只会输出若干条,例如:SELECT 列名 FROM 表 LIMIT 5;数据库
返回很少于5行,有助于性能提高。安全
LIMIT 5,5; 返回从行5开始的5行,新版本的LIMIT 5 OFFSET 5;函数
排序检索数据性能
指定排序方向 默认升序ASC 若是要降序排列 DESCspa
通常状况下排序不区分大小写code
使用ORDER BY 和 LIMIT 找出一列的最大值或最小值排序
SELECT 列 FROM 表 WHERE 条件
支持 = <> != < <= >= BETWEEN
BETWEEN 常与 AND 连用
IN 和 OR 有相同的功能
可是IN具备以下优势:
搜索是区分大小写的
%能够匹配0个、一个、多个字符,可是不能匹配到NULL
下划线(_)通配符 只能匹配单个字符
LIKE 和 REGEXP 的差异 LIKE 不能匹配到行内的内容 可是REGEXP能够匹配到行内的内容
正则表达式匹配不区分大小写
若是要区分大小写 须要使用BINARY关键字 如
WHERE prod_name REGEXP BINARY 'Jey .000'
复制代码
进行OR匹配 如1000|200|300
匹配几个字符之一 [123] Ton 匹配1或2或3
匹配范围[1-3]
匹配特殊字符 '.'
定位符 ^ 文本的开始 $文本的结束
建立计算字段
拼接 将值联结到一块儿构成单个值
能够使用Concat()函数实现
RTrim()函数去掉值右边的全部空格
相似的还有LTrim() Trim()
AS 使用别名
Upper()将文本转换为大写 对应的还有Lower()
Left() 返回串左边的字符
Length() 返回串的长度
Locate() 找到串的一个子串
SubString() 返回子串的字符
Soundex() 返回串的SOUNDEX值
SOUNDEX是一个将任意文本字符串转化为描述其语音表示的字母数字模式的算法
Abs() 返回一个数的绝对值
Cos () 返回一个角度的余弦
Exp 返回一个数的指数值
Mod 返回除操做的余弦
Pi 返回圆周率
Rand() 返回一个随机数
Sin() 返回一个角度的正弦
Sqrt() 返回一个数的平方根
Tan() 返回一个角度的正切
AVG() 返回某列的平均值 只能用于单列 忽略值为NULL的行
COUNT() 返回某列的行数 COUNT(*) 对全部行的数目 进行统计 COUNT(column) 对指定列中具备值的行进行计数,忽略NULL值。
MAX() 返回某列的最大值
MAX() 对文本数据进行计算时 返回最后一行
MIN () 返回某列的最小值 MIN ()对文本数据进行计算时 返回最前面一行
SUM() 返回某列的值的和
DISTINCT()
GROUP BY
HAVING
HAVING和WHERE的差异
WHERE在数据分组前进行过滤
HAVING在数据分组后进行过滤
SELECT -> FROM -> WHERE -> GROUP BY ->HAVING -> ORDER BY -> LIMIT
SELECT 列 FROM 表 WHERE 条件 IN( SELECT 条件 FROM 表 WHERE 另外一个条件)
复制代码
建议格式化SQL
相关子查询 涉及到外部查询的子查询
Join
SELECT vend_name,prod_name,prod_price FROM vebdors INNER JOIN products ON vendirs.vend_id = products.vend_id
复制代码
笛卡儿积 由没有联结条件的表关系返回的结果是笛卡儿积
SELECT p1.prod_id,p1.prod_name FROM products AS p1,products AS p2
WHERE p1.vend_id = p2.vend_id AND p2.prod_id = 'DTNTR'
复制代码
必须由两条或者两条以上的SELECT语句构成
每一个查询必须包含相同的列表达式或聚合函数
UNION会从查询结果中集中的自动去除了重复的行
两个最常使用的引擎为MyISAM和InnoDB,
前者支持全文本搜索,然后者不支持。
INSERT INTO Customers VALUES(***)
复制代码
简单 可是并不安全 不建议使用
在表名后的括号里明确地给出列名是一种繁琐而安全的方式,建议使用
为了提高总体的性能
若是数据检索是重要的,就能够在INSERT 和 INTO 之间加入LOW_PRIORITY
提升INSERT的性能 由于MySQL用单条INSERT语句处理多个插入比使用多条INSERT语句快
由三部分组成
删除的是表的内容而不是表
若是要删除全部行 可以使用TRUNCATE TABLE 语句
CREATE TABLE 表名 IF NOT EXISTS
复制代码
InnoDB 是一个可靠的事务处理引擎,不支持全文本搜索
MEMORY 在功能上等同于MyISAM 可是数据存储在内存(不是磁盘),速度很快
MyISAM 是一个性能极高的引擎,支持全文本搜索,但不支持事务处理
DROP TABLE
复制代码
RENAME TABLE
复制代码
视图仅仅是用于查看存储在别处的数据的一种设施,视图自己不包含数据
CREATE VIEW 语句来建立
复制代码
所谓的存储过程 就是为之后的使用而保存的一条或者多条MySQL语句的集合
主要有三个好处, 简单 安全 高性能
CREATE PROCEDURE productpricing()
BEGIN
SELECT ...
FROM
END;
复制代码
CALL productpricing()
复制代码
删除相似表的删除
只能用于存储过程
使用游标的步骤
CREATE PROCEDURE processorders()
BEGIN
DECLARE ordernumbers CURSOR
FOR
SELECT order_num FROM orders;
END;
复制代码
打开游标 OPEN
关闭游标 CLOSE
触发器是MySQL响应一下任意语句而自动执行的一条MySQL语句
支持 DELETE INSERT UPDATE
使用CREATE TRIGGER 建立
例如
GREATE TRIGGER new AFTER INSERT ON products FOR EACH ROW SELECT “***”
复制代码
事务:指一组SQL语句
回退:指撤销指定SQL语句的过程
提交:指将未存储的SQL语句结果写入数据库表
保留点:指事务处理中设置的临时占位符
开始事务
START TRANSACTION
...
ROLLBACK
复制代码