openGauss数据库-头歌实验1-4 数据库及表的创建

打印 上一主题 下一主题

主题 1021|帖子 1021|积分 3067

一、创建数据库

(一)任务形貌

本关任务:创建指定数据库。
(二)相干知识

数据库实在就是可以存放大量数据的仓库,学习数据库我们就从创建一个数据库开始吧。
为了完成本关任务,你需要把握:
1.OpenGauss 数据库逻辑结构图
1.OpenGauss 数据库的特征;
2.怎样毗连数据库;
3.怎样创建数据库。
(三)数据库逻辑结构图

openGauss 的数据库节点负责存储数据,其存储介质也是磁盘,下面主要从逻辑视角介绍数据库节点都有哪些对象,以及这些对象之间的关系。数据库逻辑结构如下图。

阐明:
1.Tablespace,即表空间,是一个目次,可以存在多个,内里存储的是它所包含的数据库的各种物理文件。每个表空间可以对应多个Database。
2.Database,即数据库,用于管理各类数据对象,各数据库间相互隔离。数据库管理的对象可分布在多个Tablespace上。
3.Datafile Segment,即数据文件,通常每张表只对应一个数据文件。如果某张表的数据大于1GB,则会分为多个数据文件存储。
4.Table,即表,每张表只能属于一个数据库,也只能对应到一个Tablespace。每张表对应的数据文件必须在同一个Tablespace中。
5.Block,即数据块,是数据库管理的根本单位,默认巨细为8KB。
(四)OpenGauss数据库的特征

以下是 OpenGauss 数据库特征:
1.用户必须拥有数据库创建的权限大概是数据库的系统管理员权限才华创建数据库;
2.openGauss 默认包含两个模板数据库 template0、template1,以及一个默认的用户数据库 postgres。如图所示:

3.用户创建数据库时实际上就是通过拷贝模板数据库(默认 template1)来创建新的数据库,同时,要避免利用客户端或其他手段毗连及操作两个模板数据库;
4.openGauss 允许创建的数据库总数目上限为 128 个。数据库系统中会有多个数据库,但是客户端程序一次只能毗连一个数据库。也不能在不同的数据库之间相互查询。
(五)怎样毗连数据库

gsql 是 openGauss 提供的在下令行下运行的数据库毗连工具。平台毗连数据库的语句如下:
  1.  gsql -d postgres -U gaussdb -W'passwd123@123';
复制代码

其中 -d 参数代表数据库,-U 参数代表用户名,-W 参数代表暗码;
毗连乐成后,系统会显示“DBNAME=>”。


退出毗连利用以下语句:
  1. postgres=> \q
复制代码

openGauss 常用操作语句:
切换数据库:
  1. \c test 
复制代码

上述语句代表从当前数据库切换到test数据库。
检察数据库列表:
  1. \l
复制代码

检察表列表及表信息:
  1. \d
复制代码
(六)怎样创建数据库

创建数据库:

创建一个新的数据库。缺省情况下新数据库将通过复制标准系统数据库 template0来创建,且仅支持利用 template0 来创建。另外需要留意的是,在创建数据库过程中,若出现雷同“could not initialize database directory”的错误提示,可能是由于文件系统上数据目次的权限不足或磁盘满等原因引起。
创库语法格式:

  1. CREATE DATABASE database_name
  2.     [ [ WITH ] { [ OWNER [=] user_name ] |
  3.                [ TEMPLATE [=] template ] |
  4.                [ ENCODING [=] encoding ] |
  5.                [ LC_COLLATE [=] lc_collate ] |
  6.                [ LC_CTYPE [=] lc_ctype ] |
  7.                [ DBCOMPATIBILITY [=] compatibilty_type ] |
  8.                [ TABLESPACE [=] tablespace_name ] |
  9.                [ CONNECTION LIMIT [=] connlimit ]}[...] ];    
复制代码
         
上述建表语句中,OWNER 参数可用于指定表的所属用户,TEMPLATE 参数可用于指定模板数据库,ENCODING 参数可用于编码格式,TABLESPACE 参数可用于指定表空间。
创建数据库示例:

  1. --创建一个GBK编码的数据库music(本地环境的编码格式必须也为GBK)。
  2. postgres=# CREATE DATABASE music ENCODING 'GBK' template = template0;
  3. --创建数据库music2,并指定所有者为jim。
  4. postgres=# CREATE DATABASE music2 OWNER jim;
  5. --用模板template0创建数据库music3,并指定所有者为jim。
  6. postgres=# CREATE DATABASE music3 OWNER jim TEMPLATE template0;
复制代码
(七)编程要求

   在右侧下令行中毗连 openGauss,并创建一个名为 mydb 的数据库。
  毗连数据库的用户名为:gaussdb,暗码为:passwd123@123。
  (八)编程实现










































二、创建表

(一)任务形貌

本关任务:在数据库中创建一个表。
(二)相干知识

我们知道数据库就是存储数据的地方,那数据库中的数据到底存放在哪里呢?数据库中的数据是存放在一张一张的表中的。
你可以想象数据库就像一个文件夹,而表你可以明白为一个excel表格,实在他们本来就挺像。
那要完成本关任务,你需要把握:怎样在指定数据库中创建表。
怎样在指定数据库中创建表

我们先来相识一下在数据库中创建表的规则:
  1. CREATE TABLE 表名
  2. (
  3.     字段名,数据类型,
  4.     字段名,数据类型,
  5.     .....
复制代码

首先创建数据库,如下:
  1. create database mydb; 
复制代码

然后选择数据库:
  1. \c mydb; 
复制代码

最后创建 tb1 表:
  1. CREATE TABLE tb1
  2. (
  3.     c_sk             integer,
  4.     c_id             char(5),
  5.     c_name              char(6),
  6.     c_sex               char(8)
  7. );
复制代码

上述建表语句中, c_sk 、c_id、c_name 和 c_sex 代表表的字段名,integer、char(5)、char(6) 和 char(8) 分别是这四字段名称的数据类型。
当效果显示如下信息时,表示表创建乐成:
  1.  CREATE TABLE
复制代码

也可以输入 \d 下令检察数据库下的表列表;

\d+ 可以检察表的详细信息。


(三)编程要求

   在右侧下令行中操作,创建数据库 testdb,在 testdb 下创建表 t_emp,表结构如下:
  

  (四)编程实现

 








































三、利用主键束缚

(一)任务形貌

本关任务:创建表并且添加主键束缚。
(二)相干知识

主键,是表中一列大概多列的组合,主键束缚(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空,主键可以或许唯一的标识表中的每一条记载,可以联合外键来定义与不同数据表之间的关系。
怎么明白主键呢?我们知道数据库中的表可以存放许多数据,如果把表中的每一个数据比作一个人的话,那么表的主键就可以看做是人的身份证。
为了完成本关任务,你需要把握:怎么给表中的字段添加主键束缚。
(三)添加主键束缚

有两种方式可以添加主键束缚:
1.在定义列的同时指定主键;
2.在定义完字段之后再指定主键。
(1) 在定义列的同时指定主键:

  1. CREATE TABLE tb1(
  2.     id int PRIMARY KEY,
  3.     name varchar(32),
  4.     deptId int,
  5.     salary float
  6. ); 
复制代码

指定 id 列为主键。
(2) 在定义完所有列之后指定主键。

  1. CREATE TABLE tb1(
  2.     id int ,
  3.     name varchar(32),
  4.     deptId int,
  5.     salary float,
  6.     PRIMARY KEY(id)
  7. ); 
复制代码
(3)多字段团结主键

在开辟中还有一种情况很常见,就是将几个字段团结在一起作为主键,那这个在代码中怎么实现呢?
举个例子,我们将员工的名字和部分 ID 团结起来作为主键:
  1. CREATE TABLE tb1(
  2.     id int ,
  3.     name varchar(32),
  4.     deptId int,
  5.     salary float,
  6.     PRIMARY KEY(id,name)
  7. );  
复制代码

语句执行后,会将name和id字段组合成为表tb1的多字段组合主键。
(四)编程要求

   在数据库MyDb中,创建两张表t_user1,t_user2,表结构如下,请为两张表分别创建主键束缚,t_user1的主键为userId,t_user2的主键为团结主键,将字段name和phone作为t_user2的团结主键。
  
表t_user1


表t_user2


(五)编程实现

































四、添加常见束缚 

(一)任务形貌

本关任务:编写一个能盘算数组平均值和最大值的小程序。
(二)相干知识

在数据库的利用过程中我们经常要限制字段的取值,好比有些字我们不能让它为空,我们就需要添加非空束缚,本关我们就来学习怎样添加这些常用的束缚。
为了完成本关任务,你需要把握:
1.怎么添加唯一束缚;
2.怎么添加非空束缚;
3.怎么添加默认束缚;
4.怎么设置字段的值主动增加。
怎么添加唯一束缚

唯一束缚(Unique Constraint)要求该列唯一,允许为空,但是只能有一个空值。唯一束缚可以确保一列大概几列不出现重复值。
定义部分表的部分名称唯一,SQL语句如下:关键词 UNIQUE。
  1.  CREATE TABLE t_dept(
  2.     id INT PRIMARY KEY,
  3.     name VARCHAR(22) UNIQUE,
  4.     location VARCHAR(50)
  5. );
复制代码
怎么添加非空束缚

关键词:NOT NULL;
例如:
  1. CREATE TABLE t_dept(
  2.     id INT PRIMARY KEY,
  3.     name VARCHAR(22) NOT NULL,
  4.     location VARCHAR(50)
  5. ); 
复制代码
怎么利用默认束缚

默认束缚:即给字段一个默认值。
关键词:DEFAULT;
例如:
  1.  CREATE TABLE t_emp(
  2.     id INT PRIMARY KEY,
  3.     name VARCHAR(22),
  4.     sex VARCHAR(2) DEFAULT '男'
  5. ) ;
复制代码

留意:
如果是添加字符串型默认值要利用单引号,如果是整型则不需要加任何符号;
设置表的属性值主动增加

在数据库应用中,经常有个需求就是,在每次插入新记载时,系统主动天生字段的主键值,即:

关键词:serial,默认情况下初始值和增量都为1。

例如:
  1. CREATE TABLE T1
  2. (
  3.     id    serial,
  4.     name  text,
  5.     primary key(id)
  6. ); 
复制代码


(三)编程要求

   在数据库mydb中创建表t_user,表结构如下:
  

  提示:若要给字段添加两个大概两个以上的束缚,束缚之间以空格隔开即可。
  (四)编程实现

 




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

东湖之滨

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表