【学习02】使用MySQL简单入门

一、使用MySQL

1.1、连接

  MySQL与所有客户机—服务器DBMS一样,要求在能执行命令之前登 录到DBMS。登录名可以与网络登录名不相同(假定你使用网络)。MySQL 在内部保存自己的用户列表,并且把每个用户与各种权限关联起来。
  在最初安装MySQL时,很可能会要求你输入一个管理登录(通常为 root)和一个口令。如果你使用的是自己的本地服务器,并且是简单地 试验一下MySQL,使用上述登录就可以了。但现实中,管理登录受到密切保护(因为对它的访问授予了创建表、删除整个数据库、更改登录和 口令等完全的权限)。
  为了连接到MySQL,需要以下信息:

  • 主机名(计算机名)——如果连接到本地MySQL服务器,为localhost;
  • 端口(如果使用默认端口3306之外的端口);
  • 一个合法的用户名;
  • 用户口令(如果需要)。

1.2、选择数据库

  在你最初连接到MySQL时,没有任何数据库打开供你使用。在你能执行任意数据库操作前,需要选择一个数据库。为此,可使用USE关键字。
定义:
  关键字(key word) : 作为MySQL语言组成部分的一个保留字。决 不要用关键字命名一个表或列。附录E列出了MySQL的关键字。
例如,为了使用crashcourse数据库,应该输入以下内容:
USE mustkownmysql;
在这里插入图片描述
记住,必须先使用USE打开数据库,才能读取其中的数据。

1.3、了解数据库和表

  数据库、表、列、用户、权限等的信息被存储在数据库和表中(MySQL 使用MySQL来存储这些信息)。不过,内部的表一般不直接访问。可用 MySQL的SHOW命令来显示这些信息(MySQL从内部表中提取这些信息)。 请看下面的例子:
输入:SHOW DATABASES;
输出:
  在这里插入图片描述
分析: SHOW DATABASES;返回可用数据库的一个列表。包含在这个列 表中的可能是MySQL内部使用的数据库(如例子中的mysql和 information_schema)。当然,你自己的数据库列表可能看上去与这里的 不一样。
   为了获得一个数据库内的表的列表,使用SHOW TABLES;,如下所示:
输入: SHOW TABLES;
输出:
   在这里插入图片描述
分析: SHOW TABLES;返回当前选择的数据库内可用表的列表。 SHOW也可以用来显示表列:
输入: SHOW COLUMNS FROM customers;
输出:
   在这里插入图片描述
分析: SHOW COLUMNS 要求给出一个表名(这个例子中的FROM customers),它对每个字段返回一行,行中包含字段名、数据 类型、是否允许NULL、键信息、默认值以及其他信息(如字段cust_id 的auto_increment)。

什么是自动增量? 某些表列需要唯一值。例如,订单编号、 雇员ID或(如上面例子中所示的)顾客ID。在每个行添加到表中时,MySQL可以自动地为每个行分配下一个可用编号,不 用在添加一行时手动分配唯一值(这样做必须记住最后一次使用的值)。这个功能就是所谓的自动增量。如果需要它,则必须在用CREATE语句创建表时把它作为表定义的组成部分。

所支持的其他SHOW语句还有:

  • SHOW STATUS,用于显示广泛的服务器状态信息;
  • SHOW CREATE DATABASE和SHOW CREATE TABLE,分别用来显示创 建特定数据库或表的MySQL语句;
  • SHOW GRANTS,用来显示授予用户(所有用户或特定用户)的安 全权限;
  • SHOW ERRORS和SHOW WARNINGS,用来显示服务器错误或警告消息。
       值得注意的是,客户机应用程序使用与这里相同的MySQL命令。显示数据库和表的交互式列表、允许交互式创建和编辑表、便于数据录入和编辑或允许管理用户账号和权限等的应用全都使用你可以直接执行的相同的MySQL命令完成它们的工作。
    在mysql命令行实用程序中,执行命令 HELP SHOW;显示允许的SHOW语句。

二、检索数据

介绍如何使用SELECT语句从表中检索一个或多个数据列。

2.1、SELECT语句

   SQL语句是由简单的英语单词构成的。这些单词称 为关键字,每个SQL语句都是由一个或多个关键字构成的。大概,最经常 使用的SQL语句就是SELECT语句了。它的用途是从一个或多个表中检索信息。
   为了使用SELECT检索表数据,必须至少给出两条信息——想选择什 么,以及从什么地方选择。

2.2、检索单个列

从简单的SQL SELECT语句开始介绍:
输入:SELECT prod_name FROM products;
分析: 上述语句利用SELECT语句从products表中检索一个名为 prod_name的列。所需的列名在SELECT关键字之后给出,FROM 关键字指出从其中检索数据的表名。此语句的输出如下所示:
输出:
   在这里插入图片描述

未排序数据 如果读者自己试验这个查询,可能会发现显示输 出的数据顺序与这里的不同。出现这种情况很正常。如果没有明确排序查询结果,则返回的数据的顺序没有 特殊意义。返回数据的顺序可能是数据被添加到表中的顺序,也可能不是。只要返回相同数目的行,就是正常的。

如上的一条简单SELECT语句将返回表中所有行。数据没有过滤(过 滤将得出结果集的一个子集) ,也没有排序。后面博客将讨论这些内容。

结束SQL语句 多条SQL语句必须以分号(;)分隔。MySQL 如同多数DBMS一样,不需要在单条SQL语句后加分号。但特定的DBMS可能必须在单条SQL语句后加上分号。当然,如果 愿意可以总是加上分号。事实上,即使不一定需要,但加上分号肯定没有坏处。如果你使用的是mysql命令行,必须加上 分号来结束SQL语句

SQL语句和大小写 请注意,SQL语句不区分大小写,因此 SELECT与select是相同的。同样,写成Select也没有关系。 许多SQL开发人员喜欢对所有SQL关键字使用大写,而对所有列和表名使用小写,这样做使代码更易于阅读和调试。

使用空格 在处理SQL语句时,其中所有空格都被忽略。SQL 语句可以在一行上给出,也可以分成许多行。多数SQL开发人员认为将SQL语句分成多行更容易阅读和调试。

2.3、检索多个列

   要想从一个表中检索多个列,使用相同的SELECT语句。唯一的不同是必须在SELECT关键字后给出多个列名,列名之间必须以逗号分隔。

当心逗号 在选择多个列时,一定要在列名之间加上逗号,但 最后一个列名后不加。如果在最后一个列名后加了逗号,将出 现错误。

下面的SELECT语句从products表中选择3列:
输入:

SELECT prod_id,prod_name,prod_price  
FROM products;

分析: 与前一个例子一样,这条语句使用SELECT语句从表products 中选择数据。在这个例子中,指定了3个列名,列名之间用逗 号分隔。此语句的输出如下:
输出:
   在这里插入图片描述

数据表示 从上述输出可以看到,SQL语句一般返回原始的、 无格式的数据。数据的格式化是一个表示问题,而不是一个 检索问题。因此,表示(对齐和显示上面的价格值,用货币 符号和逗号表示其金额)一般在显示该数据的应用程序中规
定。一般很少使用实际检索出的原始数据(没有应用程序提 供的格式)。

2.4、检索所以列

   除了指定所需的列外(如上所述,一个或多个列),SELECT语句还可 以检索所有的列而不必逐个列出它们。这可以通过在实际列名的位置使 用星号(*)通配符来达到,如下所示:
输入:

SELECT *  
FROM products;

分析: 如果给定一个通配符(*),则返回表中所有列。列的顺序一般 是列在表定义中出现的顺序。但有时候并不是这样的,表的模 式的变化(如添加或删除列)可能会导致顺序的变化。

使用通配符 一般,除非你确实需要表中的每个列,否则最 好别使用*通配符。虽然使用通配符可能会使你自己省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应 用程序的性能。

检索未知列 使用通配符有一个大优点。由于不明确指定列 名(因为星号检索每个列),所以能检索出名字未知的列。

2.5、检索不同的行

正如所见,SELECT返回所有匹配的行。但是,如果你不想要每个值 每次都出现,怎么办?例如,假如你想得出products表中产品的所有供 应商ID:
输入:

SELECT vend_id 
FROM products;

输出:

  在这里插入图片描述
  SELECT语句返回14行(即使表中只有4个供应商),因为products表 中列出了14个产品。那么,如何检索出有不同值的列表呢?
  解决办法是使用DISTINCT关键字,顾名思义,此关键字指示MySQL 只返回不同的值。
输入:

SELECT DISTINCT vend_id 
FROM products;

分析: SELECT DISTINCT vend_id告诉MySQL只返回不同(唯一)的 vend_id行,因此只返回4行,如下面的输出所示。如果使用 DISTINCT关键字,它必须直接放在列名的前面。

输出:
  在这里插入图片描述

不能部分使用DISTINCT DISTINCT关键字应用于所有列而 不仅是前置它的列。如果给出SELECT DISTINCT vend_id, prod_price,除非指定的两个列都不同,否则所有行都将被 检索出来。

2.6、限制结果

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

SELECT  prod_name
FROM products
LIMIT 5;

分析: 此语句使用SELECT语句检索单个列。LIMIT 5指示MySQL返回 不多于5行。此语句的输出如下所示:
输出:

   在这里插入图片描述
为得出下一个5行,可指定要检索的开始行和行数,如下所示:
输入:

SELECT  prod_name
FROM products
LIMIT 5,5;

分析: LIMIT 5, 5指示MySQL返回从行5开始的5行。第一个数为开始 位置,第二个数为要检索的行数。此语句的输出如下所示:

输出:
   在这里插入图片描述
所以,带一个值的LIMIT总是从第一行开始,给出的数为返回的行数。 带两个值的LIMIT可以指定从行号为第一个值的位置开始。

行0 检索出来的第一行为行0而不是行1。因此,LIMIT 1, 1 将检索出第二行而不是第一行。

在行数不够时 LIMIT中指定要检索的行数为检索的最大行 数。如果没有足够的行(例如,给出LIMIT 10, 5,但只有13 行),MySQL将只返回它能返回的那么多行。

2.7、使用完全限定表名

   迄今为止使用的SQL例子只通过列名引用列。也可能会使用完全限定 的名字来引用列(同时使用表名和列字)。请看以下例子:
输入:

SELECT  products.prod_name
FROM mustkownmysql.products;

   这条SQL语句在功能上等于本章最开始使用的那一条语句(假定products 表确实位于crashcourse数据库中),但这里指定了一个完全限定的列名。
   有一些情形需要完全限定名。现在, 需要注意这个语法,以便在遇到时知道它的作用。

猜你喜欢

转载自blog.csdn.net/weixin_43800761/article/details/102897497