数据库(二)
数据库基础
数据库(database):保存有组织的数据的容器(通常是一个文件或一组文件)
表(table):某种特定类型数据的结构化清单(存储在表中的数据是同一种类型的数据或清单)
² 数据库中的每个表都有一个名字来标识自己。这个名字是唯一的,即在同一个数据库中没有其他的表具有相同的名字。在不同的数据库中可以使用相同的表名。
² 模式:关于数据库和表的布局及特性的信息。(可以用来描述数据库中特定的表,也可以用来描述整个数据库和其中表的关系)
列(column):表中的一个字段,所有表都是由一个或多个列组成的。
² 表由列组成。列存储表中某部分的信息。
数据类型:所允许的数据的类型。每个表列都有相对应的数据类型,它限制或允许该列中存储的数据。(在创建表时必须特别关注所用的数据类型)
² 数据类型限定了可存储在列中的数据种类(例如,防止在数值字段中录入字符值)。数据类型还帮助正确地分类数据,并在优化磁盘使用方面起重要作用。
行(row):表中的一个记录。(表中的数据是按行存储的,所保存的每个记录存储在自己的行内。如果将表格想象为网格,网格中垂直的列为表列,水平为表行)
表列 |
表行 |
||
|
|
|
|
|
|
|
主键(primary key):一列(或一组列),其值能够唯一标识表中每一行。
² 表中的任何列都可以作为主键,只要它满足以下条件:
Ø 任意两行都不具有相同的主键值;
Ø 每一行都必须具有一个主键值(主键列不允许NULL值);
Ø 主键列中的值不允许修改或更新;
Ø 主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)。
² 主键通常定义在表的一列上,但并不是必需这么做,也可以一起使用多个列作为主键。在使用多列作为主键时,上述条件必须应用到所有列,所有列值的组合必须是唯一的(但单个列的值可以不唯一)。
² SQL语句是由简单的英语单词构成的,这些单词称为关键字,每个SQL语句都是由一个或多个关键字构成的。不区分大小写。所有空格都被忽略,SQL语句可以写成长长的一行,也可以分写在多行。
² 关键字(keyword):作为SQL组成部分的保留字。关键字不能用作表或列的名字。
检索数据
1、 SELECT语句:(从一个或多个表中检索信息)
² 为了使用select检索表数据,必须至少给出两条信息—想选择什么,以及从什么地方选择。
l 检索单个列:
select列名 from 表名;
l 检索多个列:(最后一个列名后不加逗号)
select 列名1,列名2,列名3 from 表名
l 检索所有列:
select * from 表名;
± 注意使用通配符 * :一般而言,除非确实需要表中的每一列,否则最好别使用通配符。虽然使用通配符能让自己省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能。
± 检索未知列:使用通配符的一个大优点。由于不明确指定列名(因为星号检索每一列),所以能检索出名字未知的列。
l 检索不同的值:
select distinct 列名 from 表名;
± distinct 关键字必须直接放在列名的前面。distinct 关键字作用于所有的列,不仅仅是跟在其后的那一列。
l 限制结果:
± 在SQL Sever和Access中使用select时,可以使用top关键字来限制最多返回多少行
select top 5 列名 from 表名;
± DB2
select 列名 from 表名 fetch first 5 rows only;
± Oracle
select 列名 from 表名 where rownum <=5;
± Mysql、MariaDB、PostgreSQL、SQLite
select 列名from 表名 limit 5;
select 列名 from 表名 limit 4 offset 5(limit 4,5);
(从第4行起的后面5行数据)
± 第一个被检索的行是第0 行,而不是第1行。因此,limit 1 offset 1会检索第2行,而不是第1行。
l 使用注释
± -- (后面有一个空格)
± #
± /* */
数据库基础
数据库(database):保存有组织的数据的容器(通常是一个文件或一组文件)
表(table):某种特定类型数据的结构化清单(存储在表中的数据是同一种类型的数据或清单)
² 数据库中的每个表都有一个名字来标识自己。这个名字是唯一的,即在同一个数据库中没有其他的表具有相同的名字。在不同的数据库中可以使用相同的表名。
² 模式:关于数据库和表的布局及特性的信息。(可以用来描述数据库中特定的表,也可以用来描述整个数据库和其中表的关系)
列(column):表中的一个字段,所有表都是由一个或多个列组成的。
² 表由列组成。列存储表中某部分的信息。
数据类型:所允许的数据的类型。每个表列都有相对应的数据类型,它限制或允许该列中存储的数据。(在创建表时必须特别关注所用的数据类型)
² 数据类型限定了可存储在列中的数据种类(例如,防止在数值字段中录入字符值)。数据类型还帮助正确地分类数据,并在优化磁盘使用方面起重要作用。
行(row):表中的一个记录。(表中的数据是按行存储的,所保存的每个记录存储在自己的行内。如果将表格想象为网格,网格中垂直的列为表列,水平为表行)
表列 |
表行 |
||
|
|
|
|
|
|
|
主键(primary key):一列(或一组列),其值能够唯一标识表中每一行。
² 表中的任何列都可以作为主键,只要它满足以下条件:
Ø 任意两行都不具有相同的主键值;
Ø 每一行都必须具有一个主键值(主键列不允许NULL值);
Ø 主键列中的值不允许修改或更新;
Ø 主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)。
² 主键通常定义在表的一列上,但并不是必需这么做,也可以一起使用多个列作为主键。在使用多列作为主键时,上述条件必须应用到所有列,所有列值的组合必须是唯一的(但单个列的值可以不唯一)。
² SQL语句是由简单的英语单词构成的,这些单词称为关键字,每个SQL语句都是由一个或多个关键字构成的。不区分大小写。所有空格都被忽略,SQL语句可以写成长长的一行,也可以分写在多行。
² 关键字(keyword):作为SQL组成部分的保留字。关键字不能用作表或列的名字。
检索数据
1、 SELECT语句:(从一个或多个表中检索信息)
² 为了使用select检索表数据,必须至少给出两条信息—想选择什么,以及从什么地方选择。
l 检索单个列:
select列名 from 表名;
l 检索多个列:(最后一个列名后不加逗号)
select 列名1,列名2,列名3 from 表名
l 检索所有列:
select * from 表名;
± 注意使用通配符 * :一般而言,除非确实需要表中的每一列,否则最好别使用通配符。虽然使用通配符能让自己省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能。
± 检索未知列:使用通配符的一个大优点。由于不明确指定列名(因为星号检索每一列),所以能检索出名字未知的列。
l 检索不同的值:
select distinct 列名 from 表名;
± distinct 关键字必须直接放在列名的前面。distinct 关键字作用于所有的列,不仅仅是跟在其后的那一列。
l 限制结果:
± 在SQL Sever和Access中使用select时,可以使用top关键字来限制最多返回多少行
select top 5 列名 from 表名;
± DB2
select 列名 from 表名 fetch first 5 rows only;
± Oracle
select 列名 from 表名 where rownum <=5;
± Mysql、MariaDB、PostgreSQL、SQLite
select 列名from 表名 limit 5;
select 列名 from 表名 limit 4 offset 5(limit 4,5);
(从第4行起的后面5行数据)
± 第一个被检索的行是第0 行,而不是第1行。因此,limit 1 offset 1会检索第2行,而不是第1行。
l 使用注释
± -- (后面有一个空格)
± #
± /* */