关于DBMS的杂记
关于数据库操作
记事
- 階層型データベース
階層型数据库是一种将数据组织成层级结构的数据模型。数据以类似树状结构的方式进行组织,可以表示具有父子关系的数据。这种数据模型主要在上世纪六十年代到七十年代被IBM的IMS(信息管理系统)广泛使用。然而,由于当前关系数据库成为主流,因此階層型数据库的使用并不常见。
- リレーショナルデータベース(RDB)
关系数据库(RDB)是一种用于管理表格形式数据的数据库。在RDB中,数据被分成多个关联的表,并通过关系(relation)连接它们。表格由行和列组成,行代表每个数据记录,列代表数据的属性(字段)。RDB使用称为结构化查询语言(SQL)的语言来操作数据。RDB通常被用于商业应用程序和Web应用程序等领域。主要的RDB产品包括Oracle、MySQL、Microsoft SQL Server和PostgreSQL等。
- オブジェクト指向データベース
面向对象数据库(OODB)是将面向对象编程概念应用于数据库的一种解决方案。OODB使用对象来表示数据。对象由属性(数据字段)和方法(操作)构成。此外,它还能表示对象之间的关系。OODB与面向对象编程语言具有高度的兼容性,可以在程序中操作对象而无需访问数据库,从而提高开发效率。主要的OODB产品包括ObjectStore、Versant Object Database和ZODB(Zope Object Database)。然而,与关系数据库相比,当规模变大时,OODB可能存在性能问题,因此在使用时需要注意。
- XMLデータベース
XML数据库是专门设计用于存储和管理XML文档的数据库。由于XML可以使用标签以层次结构表示数据,因此XML数据库非常适合管理具有层次结构的数据。在XML数据库中,可以创建一个包含XML文档字段的表。此外,还可以使用XPath和XQuery等XML查询语言在XML数据库中搜索数据。XML数据库尤其适用于文档管理和Web应用程序开发等领域。代表性的XML数据库产品包括eXist、MarkLogic和Tamino等。
- キー・バリュー型データストア
键值型数据存储是以键值对的方式管理数据的一种数据存储。由于数据与键一起保存,可以快速访问。此外,它也适用于分布式环境下的使用。键值型数据存储具有简单灵活的结构和简化的数据模型,因此具有高可扩展性和高可用性的特点。常见的用途包括缓存、会话存储、会话管理器、计数器、日志数据等。代表性的键值型数据存储包括Redis、Memcached、Amazon DynamoDB、Apache Cassandra、Riak等。
-
- 行単位でデータを読み書きする
-
- 1つのセルには1つのデータしか入れられない
-
- SQLは機能により3種類に分けられるが、最も使われるのはDML
-
- セミコロン;で終わる
- 大文字小文字は区別されない
- DDL データ定義言語
DDL是数据定义语言(Data Definition Language)的缩写,是用于定义数据库结构(模式)的语言。DDL包含以下命令:
-
- CREATE: テーブル、インデックス、ビュー、ストアドプロシージャなどのデータベースオブジェクトを作成します。
-
- ALTER: 既存のデータベースオブジェクトの構造を変更します。例えば、テーブルに新しい列を追加するなどの変更が可能です。
-
- DROP: データベースオブジェクトを削除します。
-
- TRUNCATE: テーブルのデータを全て削除しますが、テーブル自体は削除しません。
- COMMENT: データベースオブジェクトにコメントを追加します。
DDL是数据库设计的重要组成部分,也可用于更改数据库对象的结构。另外,使用DDL命令需要数据库管理员权限。
- DMLデータ操作言語
DML是数据操作语言(Data Manipulation Language)的缩写,它是用于操作数据库记录的语言。DML包括以下命令:
-
- SELECT: データベースからレコードを抽出するために使用します。
-
- INSERT: 新しいレコードをデータベースに挿入します。
-
- UPDATE: データベース内の既存のレコードを更新します。
- DELETE: データベース内のレコードを削除します。
使用这些DML命令可以在数据库中进行数据的搜索、添加、修改和删除。DML是通过SQL(Structured Query Language)执行的,是数据库应用程序的核心要素。执行DML命令需要有权限访问数据库的表或视图。
- DCLは、データ制御言語
DCL是“数据控制语言(Data Control Language)”的缩写,是用于管理数据库安全性和访问权限的语言。DCL包含以下命令:
-
- GRANT: 特定のユーザーに、データベースオブジェクト(テーブル、ビュー、ストアドプロシージャなど)へのアクセス権を与えます。
- REVOKE: 特定のユーザーから、データベースオブジェクトへのアクセス権を取り消します。
通过使用这些DCL命令,数据库管理员可以创建用户账户并设置所需的权限。此外,还可以保护数据库免受非法访问和非法操作。执行DCL命令需要数据库管理员权限。
创建SQL表的基本语法
CREATE TABLE テーブル名 (
カラム1 データ型 制約,
カラム2 データ型 制約,
...
カラムn データ型 制約
);
如果要创建一个名为”employees”的表,可以按照以下方式进行。
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
age INT,
gender VARCHAR(10),
salary DECIMAL(10, 2)
);
在这个例子中,创建了一个名为”employees”的表,定义了5个列,分别是id、name、age、gender、salary。id列是主键,name列设置了不允许为空的约束。而age、gender和salary列没有设置约束,因此可以接受空值。
在创建表时,列的数据类型和约束因数据库而异。此外,还存在选项的语法和关键字。根据需要,需要查询数据库的文档进行确认。
有关标准SQL的命名规则
在标准SQL中,有以下的命名规则。
-
- 物件名的长度最多为128个字符。
-
- 物件名可以使用字母、数字和下划线(_)。
-
- 物件名必须以字母开头。
-
- 物件名区分大小写。
- 物件名不能使用保留字。
具体而言,关于以下对象有命名规则。
-
- テーブル名:テーブル名は、主キーのカラム名と区別するため、主キーのカラム名と同じ名前を使用しないことが推奨されます。また、複数の単語を含む場合は、単語の間にアンダースコアを使用するか、キャメルケースを使用することが一般的です。
-
- カラム名:カラム名は、テーブル内で一意である必要があります。複数の単語を含む場合は、単語の間にアンダースコアを使用するか、キャメルケースを使用することが一般的です。
-
- 制約名:制約名は、制約がどのカラムに関連しているかを示すため、通常はカラム名を含めることが推奨されます。複数の単語を含む場合は、単語の間にアンダースコアを使用するか、キャメルケースを使用することが一般的です。
-
- ビュー名:ビュー名は、ビューの内容や意味を表す名前を付けることが推奨されます。
- ストアドプロシージャ名:ストアドプロシージャ名は、ストアドプロシージャの目的や機能を表す名前を付けることが推奨されます。
关于禁止命名的事项
在标准SQL中,有以下命名禁止事项。
-
- 以下是用中文重新表达的句子:
1. 避免使用保留字:保留字是SQL语法中具有特殊意义的关键字,不能用于对象名称。例如,SELECT、FROM、WHERE等都是保留字。
2. 避免以数字开头的名称:对象名称的开头不能是数字。
3. 避免使用特殊字符:对象名称不能包含除了字母、数字和下划线(_)以外的特殊字符(如空格、连字符、句点、逗号等)。
4. 避免重复使用名称:在同一个数据库中,不可以重复使用表名、列名、约束名等。
只需提供一个选项:
通过遵守这些禁令,可以正确地遵循SQL命名规范,确保对象名称的唯一性。
数据类型是用来表示数据种类的定义,在数据库管理系统中扮演着重要角色。以下是一些代表性的数据类型介绍。
-
- 文字列类型:用于存储字符串的数据类型,常见的有VARCHAR、CHAR、TEXT等。
-
- 数值类型:用于存储数值的数据类型,常见的有INTEGER、FLOAT、DOUBLE PRECISION等。
-
- 日期/时间类型:用于存储日期和时间的数据类型,常见的有DATE、TIME、TIMESTAMP等。
-
- 布尔类型:用于存储真假值的数据类型,常见的有BOOLEAN等。
- 二进制类型:用于存储二进制数据的数据类型,常见的有BINARY、VARBINARY、BLOB等。
数据类型用于定义存储在数据库中的值的种类、大小和范围等。选择数据类型对数据的准确性和性能有着重要的影响,因此需要谨慎选择。
数据库中有一种名为”约束”的机制,用于确保数据的准确性和一致性。以下将对主要约束类型进行解释。
-
- 主键约束:定义用于唯一标识表中每条记录的键。主键不能包含重复的值,并且不能包含NULL值。
-
- 外键约束:用于维护不同表之间的数据一致性。外键定义在引用表的主键所对应的列上,并与引用表的主键相关联。
-
- 检查约束:用于检查数据是否满足特定条件。例如,可以定义仅允许正值的条件,针对数值列。
-
- 非空约束:确保列中不包含NULL值。换句话说,限制该列必须始终有值。
- 唯一约束:用于确保不含重复值。换句话说,保证存储在该列中的值是唯一的。
制约条件可以在创建表时定义,并可以在列级别或表级别进行设置。这样可以确保数据库中存储了准确的信息,并且数据的一致性得到了保证。
我将解释如何删除和修改表格。
- DROP (ドロップ)
删除表需要使用DROP语句。以下是执行表删除的示例。
DROP TABLE テーブル名;
执行此命令将删除指定的表。然而,一旦表被删除,将无法恢复,因此需要谨慎执行。
- ALTER (アルター)
在更改表格时,使用ALTER语句。下面是一个修改表格的示例。
ALTER TABLE テーブル名 ADD 列名 データ型;
执行此命令将在指定的表中添加新列。此外,还可以更改现有列的数据类型和约束。然而,表的更改会对数据库产生影响,因此需要谨慎执行。
此外,部分关系数据库管理系统可能对表的更改施加了限制。例如,在Oracle数据库中,要对表进行更改,需要对数据库进行锁定,因此在进行更改时无法从其他会话访问。此外,由于更改可能会对现有数据产生影响,因此需要谨慎执行。
- RENAME(リネーム)
在数据库中,RENAME是用于更改表、列等名称的SQL语句。在一些数据库中,RENAME语句被视为ALTER语句的一部分。
使用RENAME语句,可以修改表名和列名,如下所示。
-- テーブル名を変更する例
RENAME TABLE 旧テーブル名 TO 新テーブル名;
-- 列名を変更する例
ALTER TABLE テーブル名 RENAME COLUMN 旧列名 TO 新列名;
通过RENAME语句更改的名称可以在随后的SQL语句中通过新名称进行引用。然而,在使用RENAME语句时,不同的数据库需要注意一些问题。例如,某些数据库中,在使用RENAME语句更改名称时,如果此名称与其他对象重复,则可能会发生错误。
此外,如果更改名称是通过RENAME命令完成的,则在需要事务处理的情况下,可能需要在事务内完成。