MySQL SELECT语句详解(查询)

    MySQL支持SQL标准,同时在SQL标准上面做了拓展,有不一样的语法和数据库特性。本文记录MySQL数据库的SQL语句,并不是针对SQL,虽有有很大的相似之处。

    在学习和使用过程中的MySQL版本是:5.7.17。

    本文针对MySQL4.1及其以上版本的使用。


一、MySQL引入的主题的主要变化过程:

4——InnoDB引擎,增加事务处理,并,改进全文本搜索等。

4.1——函数库、子查询、集成帮助等的重要增加。

5——存储过程、触发器、游标、视图等的增加。


二、DOS窗口登录MySQL数据库

首先使用cmd打开DOS命令行界面,然后分成两种情况:

扫描二维码关注公众号,回复: 3068343 查看本文章

1)没有在环境变量中配置MySql Server的path路径

    配置方法如下:在系统环境变量的path变量名中添加下面路径的bin目录:C:\Program Files\MySQL\MySQL Server 5.7\bin

,这个路径是具体情况而定,不管MySQL安装在那个盘中,一定是MySQL Server 的bin目录。配置了环境变量之后的使用方法见下面。

    假如没有配置环境变量,还可以这样使用:

    在DOS命令行中使用cd进入到上面路径的bin目录下,然后按照“配置了环境变量”的使用方法进行操作。

2)已经在环境变量中配置过MySQL Server的path路径

在DOS窗口中键入下面语句
mysql -h localhost -u root -p 登录MySQl数据库。-h表示主机名,这里在本地;-u表示登录用户;这里是root用用户;-p是用户密码
show databases;回车 显示当前用户下已有的数据库。MySQL数据库中的命令必须以 ; 结尾
use + 数据库名; 使用该数据库
show tables; 显示数据库中的表

show columns from + 表名;

显示表列,包括列名,各种完整性,数据类型等详细信息
exit;回车 退出数据库登录
create user 'test'@'localhost' identified by '123456'; root用户下创建test用户。@表示访问的主机名,identified by表示密码。localhost表示允许本机IP(127.0.0.1)访问(使用局域网的主机IP使用下面一条语句)
create user 'test_1'@'%' identified by '123456' root用户下创建test_1用户。允许使用外网Ip访问,本机当然可以
flush privileges; root用户下刷新授权

三、MySQL语句详解

    在MySQL数据库连接工具Navicat和DOS命令行中,都可以使用下面的MySQL语句来进行MySQL的操作。假如有表products。

SELECT查询语句
语句示例
解释说明
SELECT prod_name FROM products; SELECT表示查询的列。可以有多列,列名之间使用“,”分割开来;FROM表示使用的表
SELECT * FROM products; 检索所有的列。能够检索出表中未知的列
SELECT DISTINCT vend_id FROM products; DISTINCT消除检索中相同的行。如果DISTINCT后面跟了不止一个列,DISTINCT作用于每一个列,即DISTINCT的作用是消除不同的行。
SELECT prod_name FROM products LIMIT x, y; LIMIT用于限制检索出来的行数。意思是从第x行开始的y行。

SELECT products.prod_name FROM crashcourse.products;

使用完全限定。product表示一张表,crashcourse表示一个数据库,数据库中有products表。
SELECT prod_name FROM products ORDER BY prod_name ORDER BY子句表示使用列进行排序。默认的排序方向是英语字母升序排列,排序使用的列还可以是非检索的列。
SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price, prod_name;
ORDER BY子句按多个行进行排序。多个列排序时,排序完全按照语句中列的顺序进行,即后面列的排序是在前面排序结果的基础上面进行。ORDER BY子句位于FROM之后,LIMIT之前,位置不当会产生错误信息。
SELECT prod_id, prod_price,prod_name FROM products ORDER BY prod_price DESC,prod_name;

指定ORDER BY子句的排序方向。ASC指定为按照字母升序排列,默认的;DESC指定为降序排列。当有多个列排序时,一个DESC/ASC只作用于一个列。

SELECT products, prod_price FROM products WHERE prod_price = 2.50; WHERE子句过滤数据。WHERE子句位于FROM之后,ORDER BY子句之前。
SELECT prod_name, prod_price FROM products WHERE prod_name = 'fuses'; WHERE子句进行数据过滤。加上''表示字符串。
SELECT prod_name,prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;
BETWEEN进行范围值检查。第一个为开始值,第二个为结束值,该范围中包括这两个值。
SELECT prod_name FROM products WHERE prod_price IS NULL;
WHERE进行空值过滤。空值与字段包含0、空字符串或仅仅包含空格不同。
SELECT  prod_id,prod_price,prod_name FROM products WHERE vend_id = 1003 AND prod_price <= 10; AND操作符:用于WHERE子句中的关键词,用来指示检索满足所有给定条件的行。过滤每增加一条就使用一个AND。
SELECT prod_name, prod_price FROM products WHERE vend_id = 1002 OR vend_id = 1003;

OR操作符:WHERE子句中使用的关键字,表示检索匹配任意给定条件的行。

SELECT prod_name,prod_price FROM products WHERE vend_id = 1024 OR vend_id = 1003 AND prod_price >= 10; AND操作符和OR操作符的计算次序:AND优先级高于OR。建议:无论使用默认的优先级次序还是使用括号改变计算优先次序,都建议使用括号,这样子很明确。
SELECT prod_name,prod_price FROM products WHERE vend_id IN (1002, 1003) ORDER BY prod_name;

IN操作符:用在WHERE子句中指定要匹配的清单的关键字,功能和OR相当。使用IN关键字有如下优点:

1)IN执行速度比OR快。

2)使用IN更加清晰明了,使用较少的OR

3)IN可以包含其他SELECT语句,使得能够更加动态建立WHERE子句。

SELECT prod_name, prod_price FROM products WHERE vend_id NOT IN (1002, 1003) ORDER BY prod_name; NOT操作符:WHERE子句中用来否定后跟条件的关键字。MySQL支持使用NOT对IN,BETWEEN和EXISTS子句进行取反,这与多数其他DBMS允许使用NOT对各种条件取反有很大的差别。
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE 'jet%';

LIKE谓词:用于WHERE子句中过滤数据,通配符搜索模式放置到LIKE谓词之后。

通配符搜索模式:由通配符或者通配符和字面值共同组成的搜索条件。通配符匹配从字符串首端开始进行模式匹配,不是从串的中间某个位置开始匹配。

NULL:通配符不能匹配NULL

注意首尾空格:首尾空格在肉眼识别上面对串没有区别,但是在计算机进行模式匹配时会有影响。

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

%(百分号)通配符:任意字符出现任意次数,可以是0次。

通配符使用技巧

1)尽量不使用通配符,因为通配符执行起来很慢。

2)尽量1不要再搜索模式开始处使用通配符,开始处的通配符搜索起来是最慢的。

SELECT prod_id,prod_name FROM products WHERE prod_name LIKE '_ ton anvil';

_(下划线)通配符:匹配单个字符。

通配符使用技巧

3)通配符不要放错位置。

   


WHERE子句操作符
操作符 说明
=
等于
<>  或   != 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于
BETWEEN 在指定的两个值之间


注意:

1)关系数据库设计理论认为,如果没有明确规定检索结果的排序方式,检索结果没有顺序之分;MySQL中也没有顺序之分。

2)在SQL中,有的区分大小写,有的不区分大小写,所以应该按照规范书写SQL语句。

3)在处理SQL语句时,会将所有的空格忽略掉。

4)mySQL第一行为行0。


猜你喜欢

转载自blog.csdn.net/d13419467942/article/details/81046544