SQL( 发音为字母S-Q-L或sequel) 是结构化查询语言( 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) 如何限制输出的行数和开始读取的行数,如何注释代码