mysql基础
入门篇
1.选择数据库:使用USE关键字,在执行任意数据库钱,需要选择一个数据库。eg:USE XXXXX;
必须使用USE打开数据库,才能读取其中的数据
2.使用SHOW查看MySQL数据库:SHOW DATABASES;
返回可用数据库的一个列表
3.检索数据::SELECT语句,使用SELECT语句,至少给出两条信息:想选择什么,以及从什么地方选择
SELECT prod_name
FROM products;
这样一条SELECT语句将返回表中所有行,数据没有过滤,也没有排序。
ps:MySQL语句不区分大小写,写成小写也是一样的,就像SELECT和select作用一样,许多SQL开发人员喜欢对所有SQL关键字使用大写,而对所有列和表名使用小写这样更便于阅读和调试。
检索多个列:
SELECT prod_name,prod_id,prod_price
FROM products;
检索所有行:
SELECT *
FROM products;
除非确实需要表中的每个列,否则最好别使用*通配符, 检索不需要的列通常会降低检索和应用程序的性能。
4.DISTINCT关键字:此关键字指示MySQL只返回不同的值:
SELECT DISTINCT vend_id
FROM products;
它必须直接放在列名的前面。
5.限制结果用LIMIT:
SELECT prod_name
FROM products LIMIT 5;
SELECT prod_name
FROM products LIMIT 5,5;
意为返回从行5开始的5行。行0:检索出来的第一行是行0而不是行1,因此LIMIT 1,1;将检索出第二行而不是一行。在行数不够时,MySQL将只返回它能返回的那么多行。
6.排序数据:默认是从小到大,从a到z。为了明确地排序用SELECT语句检索出的数据,可使用ORDER BY子句。ORDER BY子句取一个或多个列的名字,据此对输出进行排序
SELECT prod_name
FROM products
ORDER BY prod_name;
指定排序方向:降序排序使用DESC关键字。
SELECT prod_name
FROM products
ORDER BY prod_name DESC;
像
SELECT prod_name
FROM products
ORDER BY prod_name DESC,prod_name;
这样的就是只对DESC前的的进行排降序。
如果想在多个列上进行降序排序,必须对每个列指定DESC关键字。顺序排序的是ASC 默认顺序所以一般省略。
与LIMIT结合使用:
SELECT prod_name
FROM products
ORDER BY prod_name DESC LIMIT 1;
在给出ORDER BY子句时,应该保证它位于FROM后,LIMIT必须位于ORDER BY后
7.过滤数据:也称为搜索条件。
SELECT prod_name
FROM products
WHERE prod_price < 2.50;
意为筛选出价格小于2.50的行。在同时使用ORDER BY和WHERE子句时,应该让WHERE在前面,先筛选后排序。WHERE子句操作符:<> 和 !=都是不等于的意思。
在执行匹配时不区分大小写,所以会与’FUSES’。单引号用来限定字符串,如果将值与串类型的列进行比较,则需要限定引号。用来与数值列进行比较的值不用引号。如:
SELECT prod_name
FROM products
WHERE prod_name = 'fuses';
不匹配检查:
SELECT prod_name
FROM products
WHERE prod_price <> 2.50;
意为列出所有价格不是2.50的商品。
范围值检查(BETWEEN):
SELECT prod_name
FROM products
WHERE prod_price BETWEEN 5 AND 10 ;
意为检索价格在5和10之间的所有商品。
空值检查:
SELECT prod_name
FROM products
WHERE prod_price IS NULL;
意为这条语句返回没有价格,不是价格为0的所有商品。
8.数据过滤:组合WHERE子句,可以使用结合AND和OR组合。这里注意一个:AND的优先级大于OR,这时候可以使用括号,优先次序:括号>AND>OR。
SELECT prod_name, prod_price
FROM products
WHERE (vend_id = 1002 OR vend_id = 1003 ) AND prod_ price >= 10;
IN操作符:IN取合法值由逗号隔开,全部括在圆括号中.
SELECT prod_name
FROM products
WHERE vend_id IN (1002,1003)
ORDER BY prod_name;
优点:在使用合法选项清单的时候,IN操作符的语法更清楚更直观,计算的次序更容易管理,一般比OR操作符清单执行更快,IN最大优点是可以包含其他SELECT语句,能更动态地建立WHERE子句。
NOT操作符:
SELECT prod_name
FROM products
WHERE vend_id NOT IN (1002,1003)
ORDER BY prod_name;
MySQL中支持使用NOT对IN、BETWEEN和EXISTS子句取反,这和其他的DBMS允许使用NOT对各种条件取反有很大的区别)
9.通配符:用来匹配值的一部分的特殊字符。在搜索子句中使用通配符必须是有LIKE操作符,LIKE指示MySQL后跟的搜索模式使用通配符匹配而不是直接相等匹配进行比较。
最常用通配符百分号(%):在搜索串中,%表示任何字符出现任意次数。%告诉MySQL接受jet之后的任意字符,不管他有多少字符。
例子:为了找出所有以jet起头的产品,可使用以下SELECT语句:
SELECT prod_id,prod_name
FROM products
WHERE prod_name LIKE 'jet%';
注意尾空格:例如在保存词anvil时,如果它后面有一个或多个空格,则子句 WHERE prod_name LIKE '%anvil'
将不会匹配他们,
因为在l后还有多余的字符。解决该问题的的最简单方法就是在最后加上一个%,一个更好的办法就是使用函数。
下划线(_)通配符:与%的用途一样,但下划线只匹配单个字符而不是多个字符。与%能匹配0个字符不一样,_总是匹配一个字符,不能多也不能少。
本系列笔记以《MySQL必知必会》为基础记录,想要学习MySQL的小伙伴一定要入手这本书,明了易懂,干货满满!