龙樱 . 2015 / 5 /31
《SQL必知必会》
数据库的概念:
数据库(保存有组织的数据的容器)
数据库管理系统(DBMS)数据库软件
表(table,某种特定的类型数据的结构化清单,同一类型的数据或清单)
列(column,表由列组成,列存储表中某部分的信息)
*数据类型(所允许的数据的类型,每个表列都有相应的数据类型,)
**注意:数据类型及其名称是SQL不兼容的一个主要原因。虽然大多数的基本数据类型得到了一致的支持,但是许多高级的数据类型却没有。更糟的是,偶然会有相同的数据类型在不同的DBMS中具有不同的名称。对此用户毫无办法。
行(row,表中的一个记录)
主键(primary key,一列或一组列,其值能够唯一标识表中的每一行,唯一标识表中每行的这个列(或几列)称为主键)
**主键列中的值不允许修改或更新。主键值不能重用
SQL是什么
SQl是Structured Query Language的缩写。结构化查询语言。
怎么使用SELECT
SQL语句是由简单的英语单词构成的,这些单词称为关键字,每个SQL语句都是由一个或多个关键字构成的,
为了使用SELECT,必须至少给出两条信息——想选择什么,以及从什么地方选择
(1)检索单个列:
输入:SELECT prod_name
FROM Products;
意义:上述语句利用SELECT语句从Products表中检索一个名为prod_name的列,所需的列名写在SELECT关键字后,FROM关键字指向从哪个表中检索数据;
输出: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
提示:如果没有明确排序查询结果,则返回的顺序可能是数据被添加到表中的顺序,也可能不是,只要返回相同数目的行,就是正常的。
多条SQL语句必须用分号分隔,多数DBMS不需要在单条SQL语句后加分号,但是加上没有坏处。
SQL语句不区分大小写,但是一般对SQL关键字使用大写,而对列名和表明使用小写。
空格和\n被忽视
(2)检索多个列:
输入:SELECT prod_id,prod_name,prod_price
FROM Products;
分析:一个表中检索多个列,仍然使用相同的SELECT语句,唯一的不同的是必须在SELECT关键字后给出多个列名,列名之间必须以逗号分隔,但是最后一个列名不能加逗号。
输出:prod_id prod_name prod_price
------- ---------------- -----------
BNBG01 Fish bean bag toy 34900
BNBG02 Bird bean bag toy 34900
BNBG03 Rabbit bean bag toy 34900
总结:从上述输出可以看到,SQL语句一般返回原始的、无格式的数据。数据的格式化是表示问题,而不是检索问题。因此,表示,一般在显示该数据的应用数据中规定。通常很少直接使用实际检索出的数据(没有应用程序提供的格式)
(3)检索所有列:
输入:SELECT *
FROM Products;
分析:如果给定一个通配符(*),则返回表中所有列。列的顺序一般是列在表定义中出现的物理顺序,但并不总是如此。不过,SQL数据很少这样(通常,数据返回给应用程序,根据需要进行格式化,再表示出来)
警告:除非需要所有列,不然最好不要使用通配符(*)
提示:使用通配符有一个大优点。由于不明确指定列名(因为*检索每一列),所以能检索出名字未知的列。
(4)检索不同的值
假如输入:SELECT vend_id
FROM Products;
则会输出:
vend_id
-------
BRS01
BRS01
BRS01
DLL01
DLL01
DLL01
FNG01
FNG01
检索出不同值输入:SELECT DISTINCT vend_id
FROM Products;
分析:只返回不同的vend_id
输出:vend_id
--------
BRS01
DLL01
FNG01
警告:DISTINCT作用于所有的列
(5)限制结果
使用关键字来限制返回的多少行,但是不同的数据库中使用方法不同
输入:(SQL Server和Access)
SELECT TOP 5 prod_name
FROM Products;
输出:prod_name
-----------
8 inch teddy bear
12 inch teddy bear
18 inch teddy bear
Fish bean bag toy
Bird bean bag toy
分析:使用了SELECT TOP 5,只检索前5行数据
输入:(DB2)SELECT prod_name
FROM Products
FETCH FIRST 5 ROWS ONLY
输入:(Oracle)
SELECT prod_name
FROM Products
WHERE ROWNUM <= 5; --使用行计数器ROWNUM来计算行
输入:(MySQL、MariaDB)
SELECT prod_name;
FROM Products
LIMIT 5; --返回不超过5行的数据
输入:SELECT prod_name
FROM Products
LIMIT 5 OFFSET 5;
#第一个数字指从哪儿开始,第二个数字是检索的行数
#如果总共只有9行,那么就返回4行。
#从第0行开始算
注释:SELECT prod_name --这是一条注释
#这是一台注释,该行从开头到行尾都是注释
/* */ 概括的范围内都是注释
【总结 学习如何检索数据 2016/5/31 03:18】