SQL基本语句

SQL基本语句

数据库基本操作

1. 选择数据库
    USE crashcourse
2. 查看所有数据库
    SHOW databases;
3. 查看表结构
    SHOW COLUMNS FROM customers
    SHOW CREATE DATABASE 和 SHOW CREATE TABLE 分别用来显示创建特定数据库或表的SQL语句
    SHOW GRANTS 显示授权用户的安全权限

检索语句

WHERE

WHERE 默认不区分大小写  
    BETWEEN 5 AND 10  检索某个范围的值
    IS NULL/IS NOT NULL
    IN () 
    NOT  否定WHERE字句的条件

LIKE

% 任意字符出现任意次数
_ 任意单个字符
LIKE 与 REGEXP 的区别: LIKE在不使用统配符的情况下,会匹配整个列和=没什么区别,而REGEXP默认会在列值内匹配

GROUP BY 和 HAVING

GROUP BY 的一些重要规定
1. GROUP BY 可以包含任意数目的列,这使得能对分组进行嵌套,为数据分组提供更精细的控制
2. 如果在GROUP BY子句中嵌套的分组,数据将在最后规定的分组上进行分组
3. GROUP BY子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数),如果在SELECT中是用表达式,则必须在GROUP BY子句中使用相同的表达式,不能使用别名
4. 除聚集计算语句外,SELECT 语句中的每个列都必须在GROUP BY子句中给出
5. 如果分组中有NULL值,则NULL将作为一个分组返回
6. GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前

过滤分组
HAVING 专门用于过滤分组,且拥有和WHERE子句相同的特性,唯一的区别是 WHERE过滤行,HAVING过滤分组

ORDER BY

默认为ASC

LIMIT

字段拼接

Concat()  e.g. Concat(vend_name, '(', vend_country, ')')
Trim() 去掉串左右两边的空格 RTrim() LTrim()
AS (alias) 别名

数据处理函数

1. 文本处理函数
    Upper()  将文本转换为大写
    Lower()  转换为小写
    Length() 返回串的长度
    Locate() 找出串的一个子串
    Right() 返回串右边的字符
    Soundex() 返回串的SOUNDEX值
2. 日期和时间处理函数
    AddDate() AddTime() Date() ...
    需要注意的是在MySQL中: 指定一个日期,不管是插入或更新还是用WHERE子句进行过滤,日期必须为yyyy-mm-dd
3. 数值处理函数
    Abs() 返回绝对值
    Exp() 指数值
    Mod() 取余
    Rand() 返回一个随机数
    Sqrt() 平方根
4. 聚集函数(基于列处理)
    AVG() 返回某列平均值
    COUNT() 返回行数
    MAX()
    MIN()
    SUM()

子查询

1. 利用子查询进行过滤
2. 作为数据源的子查询
3. 作为计算字段的子查询

联结

组合查询

UNION
两种基本情况 1.在单个查询中从不同的表返回类似结构的数据 2.对单个表执行多个查询,按单个查询返回数据

全文本搜索

目前最常使用的引擎 MyISAM 和 InnoDB 前者支持全文本搜索,而后者不支持
为了进行全文本搜索,必须索引被索引的列,而且要随着数据的改变不断的跟新索引
在索引之后,使用SELECT 与 Match() 和 Against()执行检索
e.g. FULLTEXT(note_text) 对单个列建立索引 
e.g. SELECT note_text FROM productnotes WHERE Match(note_text) Against('rabbit');  Match指定被搜索的列,Against()指定使用的搜索表达式
除非使用BINARY方式,否则全文本搜索不区分大小写
全文本搜索有等级值的概念
BOOLEAN MODE

插入数据 更新和删除数据

INSERT
e.g. INSERT INTO customer(cust_name, cust_email) VALUES('test', 'sss@gmail.com')

UPDATE
不要省略WHERE子句,否则会更新表中的所有行
e.g. UPDATE customers SET cust_email = 'elmer@fudd.com' WHERE cust_id = 10005;

DELETE
不要省略WHERE子句,否则会删除表中的所有行
DELETE FROM customers WHERE cust_id = 10006;
如果想删除表中所有行,可以使用TRUNCATE TABLE语句,他速度比DELETE更快,因为TRUNCATE实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据

DROP  删除整个表而不是其内容
DROP TABLE customers2;

常见引擎介绍

InnoDB是一个可靠的事物处理引擎,它不支持全文本搜索
MEMORY在功能上等同与MyISAM,但由于数据存储在内存而不是在磁盘中,速度很快(特别适合于临时表)
MyISAM是一个性能极高的引擎,它支持全文本搜索,但不支持事务处理
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值