MySQL

ENGINE 存储引擎:  MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能

常用以下两种:ENGINE=MyISAM  或  ENGINE=InnoDB

  • MyISAM:管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择。适于并发情况下,对读取速度要求比较快的应用。
  • InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能。适于大尺寸写多读少的应用中。

Tips:

1. 最初连接到mqsql时,没有任何数据库打开供使用,在执行任意数据库操作前,需要选择一个数据库:

use mysql:
SELECT * FROM products;

必须使用 use 打开数据库,才能读取其中的数据。

 

2.DISTINCT 检索不同的行。

返回不同的值(过滤重复值),应用于所有列而不仅是前置它的列。但是应用多个列时,所有行都将被检索出来。

3.LIMIT 限制结果

 #返回从第一行开始的5行 vend_id,这里的第一行指 行0 而不是 行1
SELECT vend_id FROM products LIMIT 5;
 
#返回从第5行(行4)开始的6行
SELECT vend_id FROM products LIMIT 4,6;

这里的第一行指 行0 而不是 行1

4. ORDER BY 排序检索数据

order by 子句可以取1个或多个列的名字

1)当使用多个列对结果进行排序时,首先按选择的第一个 列A 进行排序,仅在多个行具有相同的A值时,才对产品按 列B 排序; 如果列A中所有的值是唯一的,则不会按 列B 排序

2)默认升序,升序的关键字是 ASC。要使用降序排列,须制定关键字 DESC

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

DESC 关键字只应用到直接位于其前面的列名,如果想在多个列上进行降序排列,必须对每个列制定 DESC 关键字。

5. LIMIT 关键字位于 ORDER BY 之后,ORDER BY 位于 WHERE 之后。

6. NULL无值

与字段包含0、空字符串、仅仅包含空格不同。

空值检查:不用 = ,用 is

SELECT prod_name FROM products WHERE prod_price IS NULL;

 

7.WHERE 过滤数据

1)AND 检索满足所有给定的条件

2)OR 检索匹配任意条件的行

WHERE 可以包含任意数目的 AND 和 OR 操作符,允许两者结合以进行复杂和高级的过滤,但应该使用圆括号明确的分组操作符,以避免因操作副优先级带来的问题。

3)IN 指定条件范围。IN操作符可以包含 SELECT 语句

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


SELECT prod_id,prod_price,prod_name
FROM products WHERE vend_id=1002 OR vend_id=1003
ORDER BY prod_price;

以上两句都是要选择出供应商1002和1003制造的所有产品。

4)NOT 否定not关键词之后所跟的任何条件

SELECT prod_name FROM products WHERE prod_price IS NOT NULL;

8. 通配符 

使用通配符,必须是要LIKE操作符。

LIKE 指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。 

1)百分号%,表示任何字符出现任何次数,可在搜索模式中任意位置使用,并且可以使用多个。

%匹配给定位置的0个、1个、多个字符

2)下划线_, 只匹配单个字符而不是多个字符。

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

 

9.正则表达式 REGEXP

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

使用 REGEXP检索列prod_name 包含文本1000的行。

SELECT  prod_name FROM products
WHERE PROD_NAME LIKE '1000'
ORDER BY prod_name;

使用 LIKE 检索列 prod_name 值为1000的行。

  • LIKE与 REGEXP区别在于:LIKE 匹配整个列,REGEXP 在列值内匹配

REGEXP  1)使用 | 进行 OR 匹配;   检索出prod_name中包含 1或2或3的行

SELECT prod_name FROM products
WHERE prod_name REGEXP '1|2|3';

2)使用 [ ]  匹配任何单一字符;  检索出 prod_name 中包含 1 Ton 或 2 Ton 或 3 Ton 的行

[ ] 是另一种形式的OR

SELECT prod_name FROM products
WHERE prod_name REGEXP '[123] Ton';

[123] Ton是 [1|2|3] Ton 的缩写

3)使用 ^ 否定集合;    [^123]是匹配出123这些字符外的数据。

^在集合中,用来否定该集合。否则,用来指串的开始处。

4)使用-定义一个范围;  [1-5] 匹配1到5

SELECT prod_name FROM products
WHERE prod_name REGEXP '[1-5] Ton';

5)使用\\为前导来匹配特殊字符;即转义

 

10.函数

MySQL使用 Concat( )函数拼接串,即把多个传连接起来形成一个较长的串。

Concat( ) 需要一个或多个指定的串,各个串之间用逗号分隔。

RTrim( ) 函数去掉值右边的所有空格

LTrim( ) 函数去掉左边的所有空格

Trim( ) 函数去掉串左右两边的空格

Now( ) 函数返回当前日期和时间:SELECT Now();

SELECT Concat(RTrim(vend_name),'(',RTrim(vend_country),')')
FROM vendors
ORDER BY vend_name;

 

11.别名

使用 AS 关键字赋予别名。

SELECT Concat(RTrim(vend_name),'(',RTrim(vend_country),')') AS vend_title
FROM vendors
ORDER BY vend_name;

将及那个过计算得到的数据赋予到列名为 ‘vend_title’ 的新列。 

 

12.日期和时间

函数:

Year( )  返回一个日期的年份部分

Date( )  返回一个日期时间的日期部分

Time( )  返回一个日期时间的时间部分

Now( )  返回当前的日期和时间

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

Note:日期勿忘使用单引号 ‘ ’ 

13.数据挖掘公式常用的数值处理函数

常用数值处理函数
函 数说 明
Abs( )返回一个数的绝对值
Exp( )返回一个数的指数值
Rand( )返回一个随机数
Sqrt( )返回一个数的平方根
Mod( )返回除操作的余数

 

 

 

 

 

 

 

14.SQL 聚集函数

SQL 聚集函数
函 数说 明
AVG( )返回某列的平均值
COUNT( )返回某列的行数
MAX( )返回某列的最大值
MIN( )返回某列的最小值
SUM( )返回某列值之和

 

 

 

 

 

 

 

SELECT COUNT(*) AS num_items,
MIN(prod_price) AS price_min,
AVG(prod_price) AS price_avg
FROM products;

 

注释 SQL 语句

单行注释: -- (双减号)

多行注释:/* ... */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值