Chapter 1 ~ 2 (了解SQL 及 检索数据)

        SQL( 发音为字母S-Q-Lsequel是结构化查询语言( Structured Query Language) 的缩写。 SQL是一种专门用来与数据库沟通的语言。

   SQL语句是由简单的英语单词构成的。 这些单词称为关键字, 每个SQL语句都是由一个或多个关键字构成的。

 

        数据库(database):    保存有组织的数据的容器(通常是一个文件或一组文件)。 

       而我们通常用数据库这个术语来代表我们所使用的数据库软件,这种说法是不正确的,比如MySQL, SQLite这些数据库软件应该称为数据库管理系统 即 DBMS  data base management system)。数据库是通过DBMS创建和操纵的容器, 而具体它究竟是什么, 形式如何, 各种数据库都不一样。

  首先我们打开数据库软件,比如MySQL,然后我们要创建一个数据库,然后进入该库中,在该库中创建一个表(table 表可以创建很多个),然后在表中添加列和行(列和行也可以创建很多个)。

  当你使用了这句命令mysql> use tysql(这里的tysql为你自己创建的某个数据库),就代表你进入了tysql库中,然后当你不使用use进入另外的库的话,那么你就会一直在这个tysql库中。

  基本信息的查看
  mysql> select version();            # 查看mysql数据库管理系统的版本

  1、创建数据库
   mysql> create database tysql;      # 创建tysql数据库
   mysql> show databases;		      # 显示所有的数据库
   mysql> drop database tysql;		  # 删除tysql数据库
   
  2、使用数据表
   mysql> use tysql;            	  # 进入tysql库中
   mysql> create table products;      # 在tysql库中创建表
   mysql> show tables;  			  # 显示tysql数据库中所有的表
   mysql> drop table products;  	  # 删除tysql数据库中的products表




SELECT:
  SQL语句使用得最多的大概就是SELECT语句了。 它的用途是从一个或多个表中检索信息。


 检索单个列:

mysql-> SELECT prod_name
     -> FROM Products;

    上述语句利用SELECT语句从Products表中检索一个名为prod_name的列。 所需的列名写在SELECT关键字之后, FROM关键字指出从哪个表中检索数据。

 SQL语句必须以分号(;)作为结束标志。

 而且SQL语句是不区分大小写的,也就是说你大小写混合写也是可以通过的。

 输入上面的语句后其输出语句如下:

+---------------------+
| prod_name           |
+---------------------+
| Fish bean bag toy   |
| Bird bean bag toy   |
| Rabbit bean bag toy |
| 8 inch teddy bear   |
| 12 inch teddy bear  |
| 18 inch teddy bear  |
| Raggedy Ann         |
| King doll           |
| Queen doll          |
+---------------------+
9 rows in set (0.00 sec)

        在上面的输出数据中,是没有经过排序的,其输出情况可能是根据数据最初添加到表中的顺序来排列的

    SQL语句可以写成长长的一行,也可以分别写在多行,当然了,最后都必须以分号结束

mysql-> SELECT prod_name
     -> FROM Products;

         
mysql-> SELECT prod_name FROM Products;


mysql-> SELECT
     -> prod_name
     -> FROM
     -> Products;

上述的三种格式其输出结果都是一样的,看自己喜欢哪一种就用哪一种


    检索多个列:

        

mysql-> SELECT prod_id, prod_name, prod_price
     -> FROM Products;

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

+---------+---------------------+------------+
| prod_id | prod_name           | prod_price |
+---------+---------------------+------------+
| BNBG01  | Fish bean bag toy   |       3.49 |
| BNBG02  | Bird bean bag toy   |       3.49 |
| BNBG03  | Rabbit bean bag toy |       3.49 |
| BR01    | 8 inch teddy bear   |       5.99 |
| BR02    | 12 inch teddy bear  |       8.99 |
| BR03    | 18 inch teddy bear  |      11.99 |
| RGAN01  | Raggedy Ann         |       4.99 |
| RYL01   | King doll           |       9.49 |
| RYL02   | Queen doll          |       9.49 |
+---------+---------------------+------------+
9 rows in set (0.00 sec)


    检索所有列:

    使用SELECT语句检索所有列就不必一一列出他们的列名。在实际列名的位置使用星号(*)通配符就可以了

mysql> SELECT *
    -> FROM products;        -- 输入情况,下面为输出(后面这句是注释)
+---------+---------+---------------------+------------+------------------------
-----------------------------------------------+
| prod_id | vend_id | prod_name           | prod_price | prod_desc
                                               |
+---------+---------+---------------------+------------+------------------------
-----------------------------------------------+
| BNBG01  | DLL01   | Fish bean bag toy   |       3.49 | Fish bean bag toy, comp
lete with bean bag worms with which to feed it |
| BNBG02  | DLL01   | Bird bean bag toy   |       3.49 | Bird bean bag toy, eggs
 are not included                              |
| BNBG03  | DLL01   | Rabbit bean bag toy |       3.49 | Rabbit bean bag toy, co
mes with bean bag carrots                      |
| BR01    | BRS01   | 8 inch teddy bear   |       5.99 | 8 inch teddy bear, come
s with cap and jacket                          |
| BR02    | BRS01   | 12 inch teddy bear  |       8.99 | 12 inch teddy bear, com
es with cap and jacket                         |
| BR03    | BRS01   | 18 inch teddy bear  |      11.99 | 18 inch teddy bear, com
es with cap and jacket                         |
| RGAN01  | DLL01   | Raggedy Ann         |       4.99 | 18 inch Raggedy Ann dol
l                                              |
| RYL01   | FNG01   | King doll           |       9.49 | 12 inch king doll with
royal garments and crown                       |
| RYL02   | FNG01   | Queen doll          |       9.49 | 12 inch queen doll with
 royal garments and crown                      |
+---------+---------+---------------------+------------+------------------------
-----------------------------------------------+
9 rows in set (0.00 sec)

因为列数比较多,所以显示不完全,因此会显示结果很乱。


    检索不同的值:

mysql> SELECT vend_id
    -> FROM products;
+---------+
| vend_id |
+---------+
| BRS01   |
| BRS01   |
| BRS01   |
| DLL01   |
| DLL01   |
| DLL01   |
| DLL01   |
| FNG01   |
| FNG01   |
+---------+
9 rows in set (0.00 sec)

如上面的所示,因为供应商可以提供多个商品,因此,当显示多个商品的供应商时,就会在不同的行中显示相同名字的供应商,现在可以使用DISTINCT关键字来先出相同的,只留下唯一的一个

mysql> SELECT DISTINCT vend_id
    -> FROM products;
+---------+
| vend_id |
+---------+
| BRS01   |
| DLL01   |
| FNG01   |
+---------+
3 rows in set (0.04 sec)

DISTINCT 关键字可以作用于所有的列,不仅仅是其后跟着的一列,如果后面很有多个列名,其DISTINCT 关键字都可以作用到。


    限制结果:

       SELECT语句返回指定表中所有匹配的行, 很可能是每一行。 如果你只想返回第一行或者一定数量的行,则使用 LIMIT 关键字来限制所显示的行数

mysql> SELECT prod_name
    -> FROM products
    -> LIMIT 5;
+---------------------+
| prod_name           |
+---------------------+
| Fish bean bag toy   |
| Bird bean bag toy   |
| Rabbit bean bag toy |
| 8 inch teddy bear   |
| 12 inch teddy bear  |
+---------------------+
5 rows in set (0.00 sec)

这里因为最后一句limit 5,因此只显示了五行,从首行一直往下数五行,其中首行为第0行,而不是第一行

mysql> SELECT prod_name
    -> FROM products
    -> LIMIT 5 OFFSET 5;
+--------------------+
| prod_name          |
+--------------------+
| 18 inch teddy bear |
| Raggedy Ann        |
| King doll          |
| Queen doll         |
+--------------------+
4 rows in set (0.00 sec)

这里的LIMIT 5 OFFSET 5 ,是指输出限制为5行,然后从第5行开始数,而不是从默认的第0行开始数


    使用注释:

    由于我们需要解释我们某些输入的意思,却有不执行它们,因为注释只是为了方面看代码的人员了解这句代码是做什么用的。

    在SQL语句中可以使用以下方式来进行注释

mysql> SELECT prod_name     -- 这是一条注释
    -> FROM products        # 这也是一条注释
    -> LIMIT 5;             /* 没看错,这依然是一条注释 */
+---------------------+
| prod_name           |
+---------------------+
| Fish bean bag toy   |
| Bird bean bag toy   |
| Rabbit bean bag toy |
| 8 inch teddy bear   |
| 12 inch teddy bear  |
+---------------------+
5 rows in set (0.00 sec)

注释的方式有三种其中 -- 跟 # 都只是注释跟在其后面的一行,而 /*  */可以注释多行


上面学习总结:

    1)了解如何创建数据库并如何进入该库,还有就是在该库中创建表,删除表

    2) 如何使用SQL的 SELECT 语句来检索 单个表列, 多个表列 及 所有表列

    3) 如何返回不同的值

    4) 如何限制输出的行数和开始读取的行数,如何注释代码


你可能感兴趣的:(Chapter 1 ~ 2 (了解SQL 及 检索数据))