关于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中,有以下的命名规则。

    1. 物件名的长度最多为128个字符。

 

    1. 物件名可以使用字母、数字和下划线(_)。

 

    1. 物件名必须以字母开头。

 

    1. 物件名区分大小写。

 

    物件名不能使用保留字。

具体而言,关于以下对象有命名规则。

    • テーブル名:テーブル名は、主キーのカラム名と区別するため、主キーのカラム名と同じ名前を使用しないことが推奨されます。また、複数の単語を含む場合は、単語の間にアンダースコアを使用するか、キャメルケースを使用することが一般的です。

 

    • カラム名:カラム名は、テーブル内で一意である必要があります。複数の単語を含む場合は、単語の間にアンダースコアを使用するか、キャメルケースを使用することが一般的です。

 

    • 制約名:制約名は、制約がどのカラムに関連しているかを示すため、通常はカラム名を含めることが推奨されます。複数の単語を含む場合は、単語の間にアンダースコアを使用するか、キャメルケースを使用することが一般的です。

 

    • ビュー名:ビュー名は、ビューの内容や意味を表す名前を付けることが推奨されます。

 

    ストアドプロシージャ名:ストアドプロシージャ名は、ストアドプロシージャの目的や機能を表す名前を付けることが推奨されます。

关于禁止命名的事项

在标准SQL中,有以下命名禁止事项。

    1. 以下是用中文重新表达的句子:

1. 避免使用保留字:保留字是SQL语法中具有特殊意义的关键字,不能用于对象名称。例如,SELECT、FROM、WHERE等都是保留字。

2. 避免以数字开头的名称:对象名称的开头不能是数字。

3. 避免使用特殊字符:对象名称不能包含除了字母、数字和下划线(_)以外的特殊字符(如空格、连字符、句点、逗号等)。

4. 避免重复使用名称:在同一个数据库中,不可以重复使用表名、列名、约束名等。

只需提供一个选项:

通过遵守这些禁令,可以正确地遵循SQL命名规范,确保对象名称的唯一性。


数据类型是用来表示数据种类的定义,在数据库管理系统中扮演着重要角色。以下是一些代表性的数据类型介绍。

    1. 文字列类型:用于存储字符串的数据类型,常见的有VARCHAR、CHAR、TEXT等。

 

    1. 数值类型:用于存储数值的数据类型,常见的有INTEGER、FLOAT、DOUBLE PRECISION等。

 

    1. 日期/时间类型:用于存储日期和时间的数据类型,常见的有DATE、TIME、TIMESTAMP等。

 

    1. 布尔类型:用于存储真假值的数据类型,常见的有BOOLEAN等。

 

    二进制类型:用于存储二进制数据的数据类型,常见的有BINARY、VARBINARY、BLOB等。

数据类型用于定义存储在数据库中的值的种类、大小和范围等。选择数据类型对数据的准确性和性能有着重要的影响,因此需要谨慎选择。


数据库中有一种名为”约束”的机制,用于确保数据的准确性和一致性。以下将对主要约束类型进行解释。

    1. 主键约束:定义用于唯一标识表中每条记录的键。主键不能包含重复的值,并且不能包含NULL值。

 

    1. 外键约束:用于维护不同表之间的数据一致性。外键定义在引用表的主键所对应的列上,并与引用表的主键相关联。

 

    1. 检查约束:用于检查数据是否满足特定条件。例如,可以定义仅允许正值的条件,针对数值列。

 

    1. 非空约束:确保列中不包含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命令完成的,则在需要事务处理的情况下,可能需要在事务内完成。


广告
将在 10 秒后关闭
bannerAds