【openGauss简单数据库管理---快速入门】
- 🔻 一、openGauss数据库管理
- 🔰 1.1 连接openGauss数据库
- 🔰 1.2 创建数据库
- 🔰 1.3 查看数据库和切换数据库
- 🔰 1.4 修改数据库
- 🔰 1.5 删除数据库
- 🔰 1.6 启停数据库服务
- 🔻 二、openGauss表管理
- 🔰 2.1 创建表
- 🔰 2.2 查看表信息
- 🔰 2.3 修改表
- ⛳ 2.3.1 添加表字段
- ⛳ 2.3.2 修改表名
- ⛳ 2.3.3 修改表字段名
- ⛳ 2.3.4 修改表字段的数据类型
- ⛳ 2.3.5 修改表字段的默认值
- ⛳ 2.3.6 删除表字段
- ⛳ 2.3.7 表约束添加、删除约束
- ⛳ 2.3.8 删除表
- 🔻 三、openGauss---DML语句
- 🔰 3.1 insert语句
- 🔰 3.2 update语句
- 🔰 3.3 delete语句
- 🔰 3.3 select语句
- 🔻 四、查看对象
- 🔻 五、运算符
- 🔻 六、子句
- 🔰 6.1 WHERE子句
- 🔰 6.2 ORDER BY子句
- 🔰 6.3 DISTINCT
- 🔰 6.4 GROUP BY子句
- 🔰 6.5 HAVING子句
- 🔰 6.6 模式匹配操作符
- ⛳ 6.6.1 LIKE
- ⛳ 6.6.2 SIMILAR TO
- 🔻 七、总结—温故知新
👈【上一篇】 | 💖The Begin💖 点点关注,收藏不迷路💖 | 【下一篇】👉 |
🔻 一、openGauss数据库管理
🔰 1.1 连接openGauss数据库
openGauss数据库安装完成后,默认生成名称为postgres的数据库。第一次连接数据库时可以连接到此数据库。
###🍀使用用户omm 登录
[root@klgdj ~]# su - omm###🍀使用gsql连接数据库(数据库名---postgres,端口号---15400)[omm@klgdj ~]$ gsql -d postgres -p 15400
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:09:38 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.openGauss=# ###🍀或者使用下面任一命令连接数据库[omm@klgdj ~]$ gsql postgres://omm:omm用户密码@127.0.0.1:端口号/postgres -r
[omm@klgdj ~]$ gsql -d "host=127.0.0.1 port=端口号 dbname=postgres user=omm password=omm用户密码"
🔰 1.2 创建数据库
###🍀 创建一个db_test02数据库openGauss=# CREATE DATABASE db_test02;
CREATE DATABASE
openGauss=#
🔰 1.3 查看数据库和切换数据库
###🍀 使用 “ \l ”列出所有数据库openGauss=# \lList of databasesName | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------+-----------+---------+-------+-------------------db_test01 | zyl | SQL_ASCII | C | C | db_test02 | omm | SQL_ASCII | C | C | postgres | omm | SQL_ASCII | C | C | template0 | omm | SQL_ASCII | C | C | =c/omm +| | | | | omm=CTc/ommtemplate1 | omm | SQL_ASCII | C | C | =c/omm +| | | | | omm=CTc/omm
(5 rows)openGauss=# ###🍀 使用 “\c + 数据库名” 进入已存在数据库。openGauss=# \c db_test01
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "db_test01" as user "omm".
db_test01=#
🔰 1.4 修改数据库
###🍀语法🍀###
ALTER DATABASE database_name RENAME TO new_name;###🍀将db_test02 数据库更名为 db_test03openGauss=# \c db_test02
openGauss=# ALTER DATABASE db_test02 RENAME TO db_test03;
ALTER DATABASE
openGauss=#
🔰 1.5 删除数据库
###🍀语法🍀###
DROP DATABASE 数据库名;###🍀删除db_test03 数据库openGauss=# DROP DATABASE db_test03 ;
DROP DATABASE
openGauss=# \lList of databasesName | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------+-----------+---------+-------+-------------------db_test01 | zyl | SQL_ASCII | C | C | postgres | omm | SQL_ASCII | C | C | template0 | omm | SQL_ASCII | C | C | =c/omm +| | | | | omm=CTc/ommtemplate1 | omm | SQL_ASCII | C | C | =c/omm +| | | | | omm=CTc/omm
(4 rows)openGauss=#
🔰 1.6 启停数据库服务
###🍀启动数据库服务🍀###
[omm@klgdj ~]$ gs_om -t start###🍀重启数据库服务🍀###
[omm@klgdj ~]$ gs_om -t restart###🍀停止数据库服务🍀###
[omm@klgdj ~]$ gs_om -t stop
🔻 二、openGauss表管理
ALTER TABLE修改表,包括修改表的定义、重命名表、重命名表中指定的列、重命名表的约束、设置表的所属模式、添加/更新多个列、打开/关闭行访问控制开关。
🔰 2.1 创建表
###🍀语法--创建表🍀###CREATE TABLE 表名 (字段名1 字段类型,字段名2 字段类型,字段名3 字段类型,.....);###🍀创建一个名称为table01,三列的表。字段名为id,name age ,字段类型分别为integer,varchar,integer。db_test01=> CREATE TABLE table01 (id int,name varchar,age int);
CREATE TABLE
db_test01=>###🍀语法--添加表字段🍀###
🔰 2.2 查看表信息
###🍀语法🍀###
\d 表名db_test01=# \d table01Table "public.table01"Column | Type | Modifiers
--------+-------------------+-----------id | integer | name | character varying | age | integer | db_test01=#
🔰 2.3 修改表
⛳ 2.3.1 添加表字段
###🍀添加表字段🍀###
###🍀在表table01中新增一列,列名为sex,数据类型为Boolean,(0---男,1---女)db_test01=# alter table table01 add column sex Boolean;
ALTER TABLE
db_test01=#
db_test01=# \d table01Table "public.table01"Column | Type | Modifiers
--------+-------------------+-----------id | integer | name | character varying | age | integer | sex | boolean | db_test01=#
⛳ 2.3.2 修改表名
###🍀修改表table01 为tab_01🍀###
ALTER TABLE 表名 RENAME TO 新表名;db_test01=# alter table table01 rename to tab_01;
ALTER TABLE
db_test01=# \d tab_01Table "public.tab_01"Column | Type | Modifiers
--------+-------------------+-----------id | integer | name | character varying | age | integer | sex | boolean | db_test01=#
⛳ 2.3.3 修改表字段名
###🍀修改表tab_01 的name字段为username🍀###db_test01=# ALTER TABLE tab_01 RENAME COLUMN name TO username;
ALTER TABLE
db_test01=# \d tab_01 Table "public.tab_01"Column | Type | Modifiers
----------+-------------------+-----------id | integer | username | character varying | age | integer | sex | boolean | db_test01=#
⛳ 2.3.4 修改表字段的数据类型
###🍀修改表tab_01 的id字段属性为bigint🍀###db_test01=# alter table tab_01 ALTER COLUMN id TYPE bigint;
ALTER TABLE
db_test01=# \d tab_01Table "public.tab_01"Column | Type | Modifiers
----------+-------------------+-----------id | bigint | username | character varying | age | integer | sex | boolean | db_test01=#
⛳ 2.3.5 修改表字段的默认值
###🍀将表tab_01的sex字段属性值默认设置为F---男生🍀###db_test01=# alter table tab_01 alter column sex set default 'F';
ALTER TABLE
db_test01=# \d tab_01;Table "public.tab_01"Column | Type | Modifiers
----------+-------------------+-----------id | bigint | username | character varying | age | integer | sex | boolean | default fdb_test01=# ###🍀将表tab_01的sex字段属性值清除🍀###
db_test01=# alter table tab_01 alter column sex drop default;
ALTER TABLE
db_test01=#
⛳ 2.3.6 删除表字段
###🍀将表tab_01的sex字段删除🍀###db_test01=# alter table tab_01 drop column sex;
ALTER TABLE
db_test01=# \d tab_01;Table "public.tab_01"Column | Type | Modifiers
----------+-------------------+-----------id | bigint | username | character varying | age | integer | db_test01=#
⛳ 2.3.7 表约束添加、删除约束
###🍀1、将表tab_01的id属性设置为主键约束🍀###db_test01=# alter table tab_01 add constraint tab_01_pkey primary key(id);
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "tab_01_pkey" for table "tab_01"
ALTER TABLE
db_test01=# ###🍀再次查看tab_01表的信息🍀###select * from pg_constraint where conname like 'tab_01_pkey ';db_test01=# \d tab_01Table "public.tab_01"Column | Type | Modifiers
----------+-------------------+-----------id | bigint | not nullusername | character varying | age | integer |
Indexes:"tab_01_pkey" PRIMARY KEY, btree (id) TABLESPACE pg_defaultdb_test01=#
db_test01=# select * from pg_constraint where conname like 'tab_01_pkey';conname | connamespace | contype | condeferrable | condeferred | convalidated | conrelid | contypid | conindid | confrelid | confupdtype | confdeltype| confmatchtype | conislocal | coninhcount | connoinherit | consoft | conopt | conkey | confkey | conpfeqop | conppeqop | conffeqop | conexclop | conbin |consrc | conincluding
-------------+--------------+---------+---------------+-------------+--------------+----------+----------+----------+-----------+-------------+------------
-+---------------+------------+-------------+--------------+---------+--------+--------+---------+-----------+-----------+-----------+-----------+--------+
--------+--------------tab_01_pkey | 2200 | p | f | f | t | 16400 | 0 | 32783 | 0 | | | | t | 0 | t | f | f | {1} | | | | | | ||
(1 row)db_test01=# ###🍀2、将表tab_01刚才创建的id主键约束删除🍀###db_test01=# alter table tab_01 drop constraint tab_01_pkey;
ALTER TABLE
db_test01=# ###🍀再次查看表tab_01信息🍀###db_test01=# \d tab_01Table "public.tab_01"Column | Type | Modifiers
----------+-------------------+-----------id | bigint | not nullusername | character varying | age | integer | db_test01=#
⛳ 2.3.8 删除表
DROP TABLE
会强制删除指定的表,删除表后,依赖该表的索引会被删除,而使用到该表的函数和存储过程将无法执行。删除分区表,会同时删除分区表中的所有分区。
###🍀删除tab_01表🍀###db_test01=# DROP TABLE tab_01;
🔻 三、openGauss—DML语句
🔰 3.1 insert语句
###🍀语法🍀###
INSERT INTO 表名(字段1,字段2,字段3,...) values ('字段值1','字段值2','字段值3',...);###🍀与下面语句等效,如果用户已经知道表中字段的顺序,也可无需列出表中的字段🍀###INSERT INTO 表名 values ('字段值1','字段值2','字段值3',...);###🍀没有数值的字段将被填充为字段的缺省值,也可以对独立的字段或者整个行明确缺省值。
alter table tab_01 alter column sex set default 'F';db_test01=# INSERT INTO tab_01(id, username, age,sex) VALUES (1004, 'jack', 18,DEFAULT);
INSERT 0 1
db_test01=# select * from tab_01;id | username | age | sex
------+----------+-----+-----1001 | zyl | 18 | 1002 | tom | 18 | 1003 | lisa | 18 | f1004 | jack | 18 | f
(4 rows)db_test01=# ###🍀在表中插入多行数据🍀###
INSERT INTO tab_01(id, username, age,sex) VALUES
(1005, 'Joes',18,DEFAULT),
(1006, 'Lily',19,DEFAULT),
(1007, 'James',19,DEFAULT);
🔰 3.2 update语句
###🍀语法结构🍀###
UPDATE table_name SET
column_name = { expression | DEFAULT }
[WHERE condition ];###🍀将表tab_01中id为1004 的用户名jack 修改为Ross🍀###
db_test01=# UPDATE tab_01 SET username='Ross' WHERE id='1004';
UPDATE 1
db_test01=# select * from tab_01;id | username | age | sex
------+----------+-----+-----1001 | zyl | 18 | 1002 | tom | 18 | 1003 | lisa | 18 | f1005 | Joes | 18 | f1006 | Lily | 19 | f1007 | James | 19 | f1004 | Ross | 18 | f
(7 rows)db_test01=# ###🍀把所有id的值增加100🍀###
db_test01=# UPDATE tab_01 SET id= id + 100;
UPDATE 7
db_test01=# select * from tab_01;id | username | age | sex
------+----------+-----+-----1101 | zyl | 18 | 1102 | tom | 18 | 1103 | lisa | 18 | f1105 | Joes | 18 | f1106 | Lily | 19 | f1107 | James | 19 | f1104 | Ross | 18 | f
(7 rows)db_test01=#
🔰 3.3 delete语句
###🍀语法结构🍀###
DELETE FROM table_name [WHERE condition];###🍀删除id为1104的用户🍀###
db_test01=# DELETE FROM tab_01 WHERE id = 1104;
DELETE 1
db_test01=# select * from tab_01;id | username | age | sex
------+----------+-----+-----1101 | zyl | 18 | 1102 | tom | 18 | 1103 | lisa | 18 | f1105 | Joes | 18 | f1106 | Lily | 19 | f1107 | James | 19 | f
(6 rows)db_test01=# ###🍀不指定WHERE语句时,默认删除整张表的数据,仅保留表结构🍀###
DELETE FROM tab_01;
🔰 3.3 select语句
select语句用于从表或视图中取出数据,结果被存储在一个结果表中,称为结果集。
select语句就像叠加在数据库表上的过滤器,利用SQL关键字从数据表中过滤出用户需要的数据。
###🍀查询表tab_01中所有的数据🍀###
db_test01=# select * from tab_01;id | username | age | sex
------+----------+-----+-----1101 | zyl | 18 | 1102 | tom | 18 | 1103 | lisa | 18 | f1105 | Joes | 18 | f1106 | Lily | 19 | f1107 | James | 19 | f
(6 rows)db_test01=# ###🍀查询表tab_01中指定列的数据🍀###
db_test01=# SELECT id,username FROM tab_01;id | username
------+----------1101 | zyl1102 | tom1103 | lisa1105 | Joes1106 | Lily1107 | James
(6 rows)db_test01=#
🔻 四、查看对象
gsql工具提供了若干高级特性,便于用户使用。
###🍀1、查看命令帮助信息语法🍀###
\h [NAME]
###🍀查询select的所有语法🍀###db_test01=# \h select###🍀2、切换db_test01数据库🍀###
\c dbnameopenGauss=# \c db_test01;
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "db_test01" as user "omm".
db_test01=# ###🍀3、查询所有数据库🍀###
db_test01=# \lList of databasesName | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------+-----------+---------+-------+-------------------db_test01 | zyl | SQL_ASCII | C | C | postgres | omm | SQL_ASCII | C | C | template0 | omm | SQL_ASCII | C | C | =c/omm +| | | | | omm=CTc/ommtemplate1 | omm | SQL_ASCII | C | C | =c/omm +| | | | | omm=CTc/omm
(4 rows)db_test01=# ###🍀4、查询当前数据库中的所有表🍀###
db_test01=# \dtList of relationsSchema | Name | Type | Owner | Storage
--------+--------+-------+-------+----------------------------------public | tab_01 | table | zyl | {orientation=row,compression=no}
(1 row)db_test01=# ###🍀5、查看表结构🍀###
db_test01=# \d tab_01Table "public.tab_01"Column | Type | Modifiers
----------+-------------------+---------------id | bigint | not nullusername | character varying | age | integer | sex | boolean | default falsedb_test01=#
🔻 五、运算符
openGauss中运算符是一个保留关键字或字符,一般用在WHERE语句中,作为过滤条件。常见运算符如下。
###🍀加---+🍀###
db_test01=# SELECT 3+6 AS RESULT;result
--------9
(1 row)db_test01=# ###🍀减-----_🍀###
db_test01=# SELECT 3-6 AS RESULT;result
---------3
(1 row)db_test01=# ###🍀乘---*🍀###
db_test01=# SELECT 3*6 AS RESULT;result
--------18
(1 row)db_test01=# ###🍀除(除法操作符不会取整)---/🍀###
db_test01=# SELECT 5/3 AS RESULT;result
------------------1.66666666666667
(1 row)db_test01=# ###🍀模(求余)---%🍀###db_test01=# SELECT 5%4 AS RESULT;result
--------1
(1 row)db_test01=# ###🍀绝对值---@🍀###
db_test01=# SELECT @ 2-3 AS RESULT;result
--------1
(1 row)db_test01=####🍀幂(指数运算)----^🍀###
db_test01=# SELECT 3.0^2 AS RESULT;result
--------------------9.0000000000000000
(1 row)db_test01=# ###🍀平方根---|/🍀###
db_test01=# SELECT |/ 25.0 AS RESULT;result
--------5
(1 row)db_test01=# ###🍀立方根---||/🍀###
db_test01=# SELECT ||/ 27.0 AS RESULT;result
--------3
(1 row)db_test01=# ###🍀阶乘---!🍀###
db_test01=# SELECT 5! AS RESULT;result
--------120
(1 row)db_test01=# ###🍀阶乘(前缀操作符)🍀###
db_test01=# SELECT !!5 AS RESULT;result
--------120
(1 row)db_test01=# ###🍀二进制AND---&🍀###
db_test01=# SELECT 91&15 AS RESULT;result
--------11
(1 row)db_test01=# ###🍀二进制OR---|🍀###
db_test01=# SELECT 32|3 AS RESULT;result
--------35
(1 row)db_test01=# ###🍀二进制XOR---#🍀###
db_test01=# SELECT 17#5 AS RESULT;result
--------20
(1 row)db_test01=# ###🍀二进制NOT--- ~🍀###
db_test01=# SELECT ~1 AS RESULT;result
---------2
(1 row)db_test01=# ###🍀二进制左移---«🍀###
db_test01=# SELECT 1<<4 AS RESULT;result
--------16
(1 row)db_test01=# ###🍀二进制右移--->>🍀###
db_test01=# SELECT 8>>2 AS RESULT;result
--------2
(1 row)db_test01=#
拓展:
二进制异或运算的基本规则:
0 异或 0 = 0
0 异或 1 = 1
1 异或 1 = 0
1 异或 1 = 0
小结运算原则,就是相同得0,不同得1
。
🔻 六、子句
🔰 6.1 WHERE子句
当我们需要根据指定条件从表中查询数据时,就可以在SELECT语句中添加WHERE子句,从而过滤掉我们不需要数据。
WHERE子句构成一个行选择表达式,用于指定条件而获取的数据,如果给定的条件满足,才返回从表中的具体数值。
###🍀AND🍀###查询id 为1101,username为zyl的数据db_test01=# select * from tab_01 where id=1101 and username='zyl';id | username | age | sex
------+----------+-----+-----1101 | zyl | 18 |
(1 row)db_test01=# ###🍀OR🍀### 查询id大于 1104或者 age=18的数据
db_test01=# SELECT * FROM tab_01 WHERE id> 1104 OR age= 18;id | username | age | sex
------+----------+-----+-----1101 | zyl | 18 | 1102 | tom | 18 | 1103 | lisa | 18 | f1105 | Joes | 18 | f1106 | Lily | 19 | f1107 | James | 19 | f
(6 rows)db_test01=# ###🍀NOT NULL🍀###查询 sex 不为空的数据
db_test01=# SELECT * FROM tab_01 WHERE sex IS NOT NULL;id | username | age | sex
------+----------+-----+-----1103 | lisa | 18 | f1105 | Joes | 18 | f1106 | Lily | 19 | f1107 | James | 19 | f
(4 rows)db_test01=# ###🍀BETWEEN🍀###查找id在1101和1104之间数据
db_test01=# SELECT * FROM tab_01 WHERE id BETWEEN 1101 AND 1104;id | username | age | sex
------+----------+-----+-----1101 | zyl | 18 | 1102 | tom | 18 | 1103 | lisa | 18 | f
(3 rows)db_test01=#
🔰 6.2 ORDER BY子句
###🍀升序排列-- ASC🍀### 根据ID升序
db_test01=# SELECT * FROM tab_01 ORDER BY id ASC;id | username | age | sex
------+----------+-----+-----1101 | zyl | 18 | 1102 | tom | 18 | 1103 | lisa | 18 | f1105 | Joes | 18 | f1106 | Lily | 19 | f1107 | James | 19 | f
(6 rows)db_test01=# ###🍀降序排列---DESC🍀###根据ID降序
db_test01=# SELECT * FROM tab_01 ORDER BY id DESC;id | username | age | sex
------+----------+-----+-----1107 | James | 19 | f1106 | Lily | 19 | f1105 | Joes | 18 | f1103 | lisa | 18 | f1102 | tom | 18 | 1101 | zyl | 18 |
(6 rows)db_test01=#
🔰 6.3 DISTINCT
DISTINCT关键字与SELECT语句一起使用,用于去除重复记录,只获取唯一的记录。
当一个表中有多个重复记录,当提取这样的记录时,DISTINCT关键字就显得特别有意义,它只获取唯一一次记录,而不是获取重复记录。
###🍀使用DISTINCT关键字去除重复数据🍀###
db_test01=# SELECT DISTINCT username FROM tab_01;username
----------lisaJoesLilytomJameszyl
(6 rows)db_test01=#
🔰 6.4 GROUP BY子句
GROUP BY语句和SELECT语句一起使用,用来对相同的数据进行分组。
###🍀根据username字段分组,并求和age🍀###
db_test01=# SELECT username, sum(age) FROM tab_01 GROUP BY username;username | sum
----------+-----lisa | 18Joes | 18Lily | 19tom | 18James | 19zyl | 36
(6 rows)db_test01=#
🔰 6.5 HAVING子句
HAVING子句可以让我们筛选分组后的各组数据。
WHERE子句在所选列上设置条件,而HAVING子句则在由GROUP BY子句创建的分组上设置条件。
与GROUP BY子句配合用来选择特殊的组。HAVING子句将组的一些属性与一个常数值比较,只有满足HAVING子句中的逻辑表达式的组才会被提取出来
。
###🍀根据username字段值进行分组,并且username字段的计数少于 2 数据🍀###
db_test01=# SELECT username FROM tab_01 GROUP BY username HAVING count(username) < 2;username
----------lisaJoesLilytomJames
(5 rows)db_test01=#
🔰 6.6 模式匹配操作符
⛳ 6.6.1 LIKE
1、此操作符只有在它的模式匹配整个串的时候才能成功。如果要匹配在串内任何位置的序列,该模式必须以百分号开头和结尾。
2、下划线 (_)代表(匹配)任何单个字符; 百分号(%)代表任意串的通配符。
3、要匹配文本里的下划线或者百分号,在提供的模式里相应字符必须前导逃逸字符。逃逸字符的作用是禁用元字符的特殊含义,缺省的逃逸字符是反斜线,也可以用ESCAPE子句指定一个不同的逃逸字符。
4、要匹配逃逸字符本身,写两个逃逸字符。例如要写一个包含反斜线的模式常量,那你就要在SQL语句里写两个反斜线。
5、关键字ILIKE可以用于替换LIKE,区别是LIKE大小写敏感,ILIKE大小写不敏感。
6、操作符~~
等效于LIKE,操作符~~*
等效于ILIKE。
⛳ 6.6.2 SIMILAR TO
1、和LIKE一样,此操作符只有在它的模式匹配整个串的时候才能成功。如果要匹配在串内任何位置的序列,该模式必须以百分号开头和结尾。
2、下划线 (_)代表(匹配)任何单个字符; 百分号(%)代表任意串的通配符。
3、SIMILAR TO也支持下面这些从POSIX正则表达式借用的模式匹配元字符。
4、前导逃逸字符可以禁止所有这些元字符的特殊含义。逃逸字符的使用规则和LIKE一样。
🔻 七、总结—温故知新
❓ openGauss数据库---创建表、修改表、查看表信息
❓ openGauss数据库---有关DML语句使用
❓ openGauss数据库---对象查看(数据库、表结构)
❓ openGauss数据库---运算符了解及使用
❓ openGauss数据库---子句使用
👈【上一篇】 | 💖The End💖 点点关注,收藏不迷路💖 | 【下一篇】👉 |