快速入门MySQL

一、 检索数据

DISTINCT 此关键字指示MySQL只返回不同的值。

SELECT DISTINCT vend_id
FROM products;

SELECT语句返回所有匹配的行,它们可能是指定表中的每个行。
为了返回第一行或前几行,可使用LIMIT子句。

SELECT prod_name
FROM products
LIMIT 5;
SELECT prod_name
FROM product
LIMIT 5,5;

LIMIT 5,5指示MySQL返回从行5开始的5行。第一个数为开始位置,第二个数位要检索的行数。

为了明确地排序用SELECT语句检索出的数据,可使用ORDER BY子句。
为了进行降序排序,必须指定DESC关键字。

SELECT prod_id,prod_price,prod_name
FROM products
ORDER BY prod_price DESC,prod_name;


二、过滤数据

在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。

SELECT product_name,product
FROM products
WHERE product_price=2.50;

为了检查某个范围的值,可使用BETWEEN操作符。其语法与其他WHERE子句的操作符稍有不同,因为它需要两个值,即范围的开始值和结束值。

SELECT prod_name,prod_price
FROM products
WHERE prod_price BETWEEN 5 AND 10;

IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。

SELECT prod_name,prod_price
FROM products
WHERE vend_id IN(1002,1003)
ORDER BY prod_name;

此SELECT语句检索供应商1002和1003制造的所有产品。

WHERE子句中的NOT操作符有且只有一个功能,那就是否定它之后所跟的任何条件。

SELECT prod_name,prod_price
FROM products
WHERE vend_id NOT IN(1002,1003)
ORDER BY prod_name;

最常使用的通配符是百分号%。在搜索串中,%表示任何字符出现任意次数。例如,为了找出所有以词jet起头的产品,可使用以下SELECT语句:

SELECT prod_id,prod_name
FROM products
WHERE prod_name LIKE 'jet%';

下划线 _ 通配符,下划线的用途与%一样,但下划线只匹配单个字符而不是多个字符。



三、用正则表达式进行搜索

基本字符匹配:

SELECT prod_name
FROM products
WHERE prod_name REGEXP '1000'
ORDER BY prod_name;

检索列prod_name包含文本1000的所有行。

.点是正则表达式语言中一个特殊的字符。它表示匹配任意一个字符。| 是搜索两个串之一。[]是匹配几个字符之一。[a-z]匹配任意字母字符。

为了匹配特殊字符,必须用\为前导。\-表示查找,\.表示查找.为了匹配反斜杠\字符本身,需要使用\\。多数正则表达式实现使用单个反斜杠转义特殊字符,以便能使用字符本身,但MySQL要求两个反斜杠。
在这里插入图片描述
匹配连在一起的4位数字:

SELECT prod_name
FROM products
WHERE prod_name REGEXP '[[:digit:]]{4}'
ORDER BY prod_name;

[:digit:]匹配任意数字,{4}确切地要求它前面的字符出现4次。

定位符
LIKE和REGEXP的不同在于,LIKE匹配整个串而REGEXP匹配子串。利用定位符,通过用^开始每个表达式,用$结束每个表达式,可以使REGEXP的作用与LIKE一样。



四、使用函数

Concat()拼接串,即把多个串连接起来形成一个较长的串。Concat()需要一个或多个指定的串,各个串之间用逗号分隔。别名(alias)是一个字段或值的替换名。

在这里插入图片描述
大多数SQL实现支持以下类型的函数。

  1. 用于处理文本串(如删除或填充值,转换值为大写或小写)的文本函数。
  2. 用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)。
  3. 用于处理日期和时间值并从这些值中提取特定成分(例如,返回两个日期之差,检查日期有效性)的日期和时间函数。
  4. 返回DBMS正使用的特殊信息(如返回用户登录信息,检查版本细节)的系统函数。

在这里插入图片描述

SELECT cust_id,order_num
FROM orders
WHERE Date(order_date)='2005-09-01';

仅将给出的日期与列中的日期部分进行比较,而不是将给出的日期与整个列值进行比较。

检索2005年9月下的所有订单。
在这里插入图片描述



五、汇总数据,分组数据,使用子查询

在这里插入图片描述

创建分组

分组是在SELECT语句的GROUP BY子句中建立的。
在这里插入图片描述

过滤分组

在这里插入图片描述

WHERE和HAVING的区别

WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤。

GROUP BY和ORDER BY的区别
在这里插入图片描述

SELECT子句顺序

在这里插入图片描述
在这里插入图片描述

子查询

在这里插入图片描述
在这里插入图片描述



六、联结表,组合查询

可用UNION操作符来组合数条SQL查询。利用UNION,可给出多条SELECT语句,将它们的结果组合成单个结果集。
在这里插入图片描述
SELECT语句的输出用ORDER BY子句排序。在用UNION组合查询时,只能使用一条ORDER BY子句,它必须出现在最后一条SELECT语句之后。
在这里插入图片描述



七、创建表和操纵表

在这里插入图片描述

指定默认值
CREATE TABLE orderitems
(
order_num int NOT NULL,
quantity int NOT NULL DEFAULT1,
PRIMARY KEY(order_num)
)ENGINE=InnoDB;
引擎类型
  • InnoDB是一个可靠的事务处理引擎。
  • MEMORY在功能等同于MyISAM,但由于数据存储在内存中,速度很快。
  • MyyISAM是一个性能极高的引擎,它支持全文本搜索,但不支持事务处理。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值