SQL-基础学习1--SELECT,LIMIT,DISTINCT,注释

1.1 基础概念

1.数据库(database)

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

注意:常用的mysql,等是数据库管理系统DBMS;由这些软件创建和操作的容器才是数据库;

2.表(table)

表是一种结构化的文件,可用来存储某种特定类型的数据;可以保存顾客清单,产品目录等其他信息;就像是,把东西往抽屉里放,并不是随便扔在抽屉里就行,而是在抽屉里放一些文件夹,将相关东西放在相关的文件夹里;这里抽屉,便是数据库,是个容器,而文件夹便是 表,是用来存储特定类型的数据;

名称:

表的名称在一个数据库中应该是唯一的;

模式:

关于数据库和表的布局及特性的信息。

比如:定义了数据在表中如何存储,存储什么样的数据,数据如何分解,各部信息如何命名等;

3.列(column)和数据类型

表由列组成。列存储表中某部分的信息。

将表想象成一个电子表格,网格中每一列存储着某种特定的信息。例如,在顾客表中,一列存储顾客编号,另一列存储顾客姓名,而地址、城市、州以及邮政编码全都存储在各自的列中。

数据类型

所允许的数据的类型。每个表列都有相应的数据类型,它限制(或允许)该列中存储的数据

4.行(row)

表中的一个记录。

表中的数据是按行存储的,所保存的每个记录存储在自己的行内。如果将表想象为网格,网格中垂直的列为表列,水平行为表行。

5.主键

一列(或一组列),其值能够唯一标识表中每一行。

表中每一行都应该有一列(或几列)可以唯一标识自己。顾客表可以使用顾客编号,而订单表可以使用订单ID。雇员表可以使用雇员ID或雇员社会安全号。

主键满足的条件:

  • 任意两行都不具有相同的主键值
  • 每一行都必须有一个主键值(主键列不允许NULL值)
  • 主键列中的值不允许修改或更新
  • 主键值不能重用(如果某行从表中删除,它的主键值不能赋给以后的新行)

 

1.2 SQL-Structured Query Language

任务--提供一种从数据库中读写数据的简单有效的方法。

优点:

  • SQL不是某个特定数据库供应商专有的语言。几乎所有重要的DBMS都支持SQL;
  • SQL简单易学。它的语句全都是由有很强描述性的英语单词组成,而且这些单词的数目不多。
  • SQL虽然看上去很简单,但实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。

第2课  检索数据

2.1   SELECT语句

用途是从一个或多个表中检索信息。

检索一列

输入:
SELECT prod_name FROM Products;
输出:
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

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

注意:检索出来的数据是未排序的,因为没有明确排序查询结果;

多条SQL语句用分号隔开;

在处理SQL语句时,其中的所有空格都会被忽略;包括回车符;SQL语句仅以分号结束

检索多列

输入:
SELECT prod_id, prod_name, prod_price
FROM Products;
输出:
prod_id       prod_name                prod_price
---------     --------------------     ----------
BNBG01        Fish bean bag toy        3.4900
BNBG02        Bird bean bag toy        3.4900
BNBG03        Rabbit bean bag toy      3.4900
BR01          8 inch teddy bear        5.9900
BR02          12 inch teddy bear       8.9900
BR03          18 inch teddy bear       11.9900
RGAN01        Raggedy Ann              4.9900
RYL01         King doll                9.4900
RYL02         Queen dool               9.4900

检索所有列

SELECT *
FROM Products;

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

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

2.2   检索不同的值

即只显示不同的值,相同的只显示一次;

关键字:DISTINCT

如:

输入:
SELECT vend_id
FROM Products;
输出:
vend_id
----------
BRS01
BRS01
BRS01
DLL01
DLL01
DLL01
DLL01
FNG01
FNG01

而:

输入:
SELECT DISTINCT vend_id
FROM Products;
输出:
+---------+
| vend_id |
+---------+
| BRS01   |
| DLL01   |
| FNG01   |
+---------+
3 rows in set (0.00 sec)

分析:

SELECT DISTINCT vend_id告诉DBMS只返回不同(具有唯一性)的vend_id行,所以正如下面的输出,只有3行。如果使用DISTINCT关键字,它必须直接放在列名的前面。

注意:不能部分使用DISTINCT

DISTINCT关键字作用于所有的列,不仅仅是跟在其后的那一列。例如,你指定SELECT DISTINCT vend_id, prod_price,除非指定的两列完全相同,否则所有的行都会被检索出来。

2.3   限制结果

SELECT语句返回指定表中所有匹配的行,很可能是每一行。如果你只想返回第一行或者一定数量的行,该怎么办呢?这是可行的,但是在各种DBMS中不一样

在MySQL、MariaDB、PostgreSQL或者SQLite,需要使用LIMIT 子句,像这样:

输入:
SELECT prod_name
FROM Products
LIMIT 5;
输出:
prod_name
-----------------
8 inch teddy bear
12 inch teddy bear
18 inch teddy bear
Fish bean bag toy
Bird bean bag toy

分析▼

上述代码使用SELECT语句来检索单独的一列数据。LIMIT 5指示MySQL等DBMS返回不超过5行的数据.

如果想得到后面5行的数据,像这样:

输入:
SELECT prod_name
FROM Products
LIMIT 5 OFFSET 5;
输出:
prod_name
-------------------
Rabbit bean bag toy
Raggedy Ann
King doll
Queen doll

分析▼

LIMIT 5 OFFSET 5指示MySQL等DBMS返回从第5行起的5行数据。第一个数字是指从哪儿开始,第二个数字是检索的行数。

所以,LIMIT指定返回的行数。带OFFSET的LIMIT指定从哪儿开始。

注意:第0行

第一个被检索的行是第0行,而不是第1行。因此,LIMIT 1 OFFSET 1会检索第2行,而不是第1行。

提示:MySQL和MariaDB快捷键

MySQL和MariaDB支持简化版的LIMIT 4 OFFSET 3语句,即LIMIT 3,4。使用这个语法,,之前的值对应LIMIT, ,之后的值对应OFFSET。

2.4   使用注释

SELECT prod_name    -- 这是一条注释
FROM Products;

分析▼

注释使用-- (两个连字符)嵌在行内。-- 之后的文本就是注释,例如,这用来描述CREATE TABLE语句中的列就很不错。

多行注释
/* SELECT prod_name, vend_id
FROM Products; */
SELECT prod_name
FROM Products;

注释从/*开始,到*/结束,/*和*/之间的任何内容都是注释。这种方式常用于给代码加注释,就如这个例子演示的,这里定义了两个SELECT语句,但是第一个不会执行,因为它已经被注释掉了。

时间: 2024-10-15 15:07:32

SQL-基础学习1--SELECT,LIMIT,DISTINCT,注释的相关文章

sql基础学习

学习参考网站:http://www.runoob.com/sql/sql-tutorial.html 一.SQL命令 1.SELECT 语句 用于从数据库中选取数据. select column_name,column_name from table_name; #数据库中选取某个表格某几列数据 select * from table_name; #数据库中选取某个表格所有列数据 2.SELECT DISTINCT 语句 用于返回唯一不同的值. select distinct column_na

SQL基础学习_04_视图

视图 1. 视图的创建 ? ? 视图就是保存好的SELECT语句,这些SELECT语句执行之后会产生新的表,所以在SQL中,视图和表是不做差别对待的,也就是SQL也可以对视图做一些操作: ? ? 由于视图并不实际保存数据,只是保存了执行的SELECT语句,可以节约存储空间,但是对于大数据量的存储,使用视图来频繁操作的话,势必会占用较大的计算时间,也算是一种用时间换空间的方案. ? ? 通过以下语句创建视图: ? ? CREATE VIEW 视图名称 (<视图列1>,<视图列2>,&

SQL基础学习_02_查询

SELECT语句 1. SELECT语句查询列(字段): ? ? SELECT <列名>? ? FROM <表名>; ? ? 该语句使用了两个SQL子句,SELECT子句列举了希望从表中查询出的列的名称,FROM子句指定选取出的数据的表的名称: ? ? 如: ? ? SELECT shohin_id, shohin_mei, shiire_tanka? ? FROM Shohin;? ? ? SELECT *? ? FROM Shohin ? ? 等: 2. SELECT语句查询行

SQL 基础学习: 和深度学习资料

SQL is a standard language for storing, manipulating and retrieving data in databasee. 关系型数据库:RDBMS(Relational Database Mangement System) SQLite3: Rails默认的轻量级数据库,集成于Rails中,在db/development.sqlite3这个档案中. 用途:单机用途.所以在实际部署的时候会换成MySQL等数据库服务器. MySQL: 目前流行的开

SQL基础学习笔记(三)—约束

约束: 一.创建表时,定义约束 create table emp2( id number(10) constraint emp2_id_nn not null, name varchar2(20) not null, salary number(10,2) ) constraint emp2_id_nn 给约束起个名增加阅读性,不写也行,会自动加上sys_XXXX 作用范围: ①列级约束只能作用在一个列上 ②表级约束可以作用在多个列上(当然表级约束也可以作用在一个列上) 定义方式:列约束必须跟在

SQL基础学习_05_函数、谓词、CASE表达式

函数 算术函数 1. 四则运算: +.-.*./? 2. ABS:求绝对值, ABS(数值) 3. MOD: 求余,MOD(被除数,除数) 4. ROUND:四舍五入,ROUND(对象数值,保留小数的位数) 字符串函数 1. 字符串拼接: ||, str1 || str2 || str3 || - || strn ?AS str_all 2. 字符串长度:LENGTH,LENGTH(str1) AS len_str1 3. 小写转换:LOWER,LOWER(str1) AS low_str 4.

SQL基础学习笔记(一)

感觉SQL,学的云里雾里的,整理一下笔记吧. SQL语言分为三种: DML: Data Manipulation Language 数据操纵语言 DDL:  Data Definition Language 数据定义语言 DCL:  Data Control Language 数据控制语言 select * (表示查询表中所有的列 ) from employees; select employee_id , last_name,email from employees;(查询指定) SELECT

SQL基础学习笔记(二)

向表中插入一条数据 <span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>create table emp1 as select employee_id , last_name , hire_date , salary from employees where 1 = 2</strong></span> 需要注意的是,插入的数据,必须和表中数据种类,一一对应 <

SQL基础学习_03_数据更新

数据的插入 1. 基本INSERT语句 ? ? INSERT的基本语法为: ? ? INSERT INTO ?<表名> (列1, 列2, 列3, ?-) VALUES (值1, 值2, 值3, -)??; ? ? 例如:INSERT INTO Shohin (shohin_mei,shohin_bunrui,hanbai_tanka,shiire_tanka,torokubi) VALUES ('pen','office',100,NULL,'2009-11-11'); ? ? 如果插入的是所