【openGauss简单数据库管理---快速入门】

news2024/10/6 10:39:53

【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=# \l
                          List of databases
   Name    | 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/omm
 template1 | 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_test03

openGauss=# \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=# \l
                          List of databases
   Name    | 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/omm
 template1 | 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 table01
         Table "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 table01
         Table "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_01
         Table "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_01
          Table "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 f

db_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_01
          Table "public.tab_01"
  Column  |       Type        | Modifiers 
----------+-------------------+-----------
 id       | bigint            | not null
 username | character varying | 
 age      | integer           | 
Indexes:
    "tab_01_pkey" PRIMARY KEY, btree (id) TABLESPACE pg_default

db_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_01
          Table "public.tab_01"
  Column  |       Type        | Modifiers 
----------+-------------------+-----------
 id       | bigint            | not null
 username | 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 | f
 1004 | 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 | f
 1005 | Joes     |  18 | f
 1006 | Lily     |  19 | f
 1007 | James    |  19 | f
 1004 | 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 | f
 1105 | Joes     |  18 | f
 1106 | Lily     |  19 | f
 1107 | James    |  19 | f
 1104 | 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 | f
 1105 | Joes     |  18 | f
 1106 | Lily     |  19 | f
 1107 | 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 | f
 1105 | Joes     |  18 | f
 1106 | Lily     |  19 | f
 1107 | James    |  19 | f
(6 rows)

db_test01=# 

###🍀查询表tab_01中指定列的数据🍀###
db_test01=# SELECT id,username FROM tab_01;
  id  | username 
------+----------
 1101 | zyl
 1102 | tom
 1103 | lisa
 1105 | Joes
 1106 | Lily
 1107 | James
(6 rows)

db_test01=# 

🔻 四、查看对象

gsql工具提供了若干高级特性,便于用户使用。

###🍀1、查看命令帮助信息语法🍀###
\h [NAME]
###🍀查询select的所有语法🍀###

db_test01=# \h select

###🍀2、切换db_test01数据库🍀###
\c dbname

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=# 

###🍀3、查询所有数据库🍀###
db_test01=# \l
                          List of databases
   Name    | 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/omm
 template1 | omm   | SQL_ASCII | C       | C     | =c/omm           +
           |       |           |         |       | omm=CTc/omm
(4 rows)

db_test01=# 

###🍀4、查询当前数据库中的所有表🍀###
db_test01=# \dt
                         List of relations
 Schema |  Name  | Type  | Owner |             Storage              
--------+--------+-------+-------+----------------------------------
 public | tab_01 | table | zyl   | {orientation=row,compression=no}
(1 row)

db_test01=# 

###🍀5、查看表结构🍀###
db_test01=# \d tab_01
            Table "public.tab_01"
  Column  |       Type        |   Modifiers   
----------+-------------------+---------------
 id       | bigint            | not null
 username | character varying | 
 age      | integer           | 
 sex      | boolean           | default false

db_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 | f
 1105 | Joes     |  18 | f
 1106 | Lily     |  19 | f
 1107 | 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 | f
 1105 | Joes     |  18 | f
 1106 | Lily     |  19 | f
 1107 | 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 | f
 1105 | Joes     |  18 | f
 1106 | Lily     |  19 | f
 1107 | 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 | f
 1106 | Lily     |  19 | f
 1105 | Joes     |  18 | f
 1103 | lisa     |  18 | f
 1102 | 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 
----------
 lisa
 Joes
 Lily
 tom
 James
 zyl
(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     |  18
 Joes     |  18
 Lily     |  19
 tom      |  18
 James    |  19
 zyl      |  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 
----------
 lisa
 Joes
 Lily
 tom
 James
(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💖 点点关注,收藏不迷路💖
【下一篇】👉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/668847.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高等代数复习(二)

本篇复习内容有 求解标准正交基 证明标准正交基 证明正交变换 利用共轭变换证明 求解与给定矩阵的相似矩阵--对角矩阵 1.求标准正交基 在求标准正交基时&#xff0c;通常要先正交化&#xff0c;然后单位化&#xff0c;即可求出标准正交基。 2.证明标准正交基 标准正交基单位…

chatgpt赋能python:Python提取指定位置字符

Python 提取指定位置字符 Python 是一种高级程序语言&#xff0c;其易读性、简单易学性和易维护性使其成为最受欢迎的编程语言之一。它可以用于各种数据分析和科学计算&#xff0c;包括搜索引擎优化&#xff08;SEO&#xff09;。 在SEO中&#xff0c;提取和处理数据是一个重…

C++——string容器模拟实现

目录 1. 基本成员变量 2. 默认成员函数 2.1 构造函数 2.2 析构函数 2.3 拷贝构造函数 2.4 赋值运算符重载 3. 容量与大小相关函数 3.1 size 3.2 capacity 4. 字符串访问相关函数 4.1 operator[ ]重载 4.2 迭代器 5. 增加函数接口 5.1 reserve 5.2 resize 5.3 …

【二叉树part01】| 二叉树的递归遍历、二叉树的迭代遍历

目录 ✿二叉树的递归遍历❀ ☞LeetCode144.前序遍历 ☞LeetCode145.二叉树的后序遍历 ☞LeetCode94.二叉树的中序遍历 ✿二叉树的迭代遍历❀ ☞LeetCode144.前序遍历 ☞LeetCode145.二叉树的后序遍历 ☞LeetCode94.二叉树的中序遍历 ✿二叉树的递归遍历❀ ☞LeetCode…

docker-compose启动opengauss数据库——华为“自研”数据库

文章目录 1. 启动数据库2. 登录2.1 本地登录2.2 远程登录 1. 启动数据库 yml文件 创建opengauss目录&#xff0c;里边创建docker-compose.yml文件内容如下&#xff1a; 华为开源数据库&#xff0c;默认5432端口&#xff0c;是不是很熟悉&#xff0c;疑似又是个套壳子的事件。果…

Cortext-M3系列:调试系统架构(8)

1、调试特性概述 单片机的调试功能在程序开发中有着十分重要的地位&#xff0c;好的调试工具&#xff0c;能让程序开发大大加快。笔者在刚开始学单片机相关知识时&#xff0c;使用的是pintf打印相关参数&#xff0c;进行调试&#xff08;虽然现在很多时候也这样&#xff09;&am…

MyBatis 的使用方法

观前提示:本篇博客演示使用的 IDEA 版本为2021.3.3版本,使用的是Java8(又名jdk1.8) 前端使用 VSCode(Visual Studio Code1.78.2) 电脑使用的操作系统版本为 Windows 10 目录 Mybatis是什么? Mybatis 有什么用? Mybatis 框架交流 Mybatis 项目环境搭建 1. 添加 Mybatis…

设计模式之生成器(建造者)模式笔记

设计模式之建造者模式笔记 说明Builder(生成器)目录UML生成器(建造者)模式示例类图自行车类建造者抽象类摩拜单车对象类小黄车单车对象类指挥者类测试类优缺点 模式扩展手机类测试类 说明 记录下学习设计模式-生成器(也叫建造者)模式的写法。 Builder(生成器) 意图:将一个复…

监控中的计算机科学

文章目录 一、前言二、监控分类2.1 模拟摄像头2.1 数字摄像头 三、监控系统四、后端产品4.1 硬盘录像机4.2 视频矩阵4.3 控制设备4.4 显示设备 五、传输端5.1 光纤视频线5.1.2 单模光纤5.1.3 多模光纤5.1.4 光端机 5.1 双绞线 六、畅享 一、前言 布林肯访华&#xff0c;黑我们…

Redis6之事务与锁

事务 Redis事务是一个单独的隔离操作&#xff1a;事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中&#xff0c;不会被其他客户端发送来的命令请求所打断。 Redis事务的主要作用就是串联多个命令防止别的命令插队。 命令 1、开启事务&#xff1a;multi 2、执行事…

STM32 RGB屏幕

使用ST的HAL库进行开发&#xff0c;RGB屏幕是480*272的4.3寸LCD&#xff0c;由于驱动RGB屏幕需要较多的内存&#xff0c; 所以使用了外部SDRAM&#xff0c;内存是32M字节&#xff0c;关于SDRAM的驱动本文不进行讨论。 RGB屏幕常用的像素格式有&#xff1a;ARGB8888、RGB888、…

Vue----Vue项目的目录结构

【原文链接】Vue----Vue项目的目录结构 Vue 项目的目录结构 VUE项目的目录结构如下所示 .vscode VSCode工具的配置文件&#xff0c;和VUE项目没有什么关系 node_modules VUE项目运行依赖文件&#xff0c;通过npm install 安装的文件即存放在此文件夹 public 资源文件夹&am…

【现代密码学】(网安)期末复习笔记

现代密码学 【考后感悟】还是得注重简答题&#xff0c;需每个密码算法都要有所了解&#xff08;有些难的可以不用了解完整算法过程&#xff0c;估计考不上&#xff1f;&#xff09;&#xff0c;并对几个重要密码算法&#xff08;重点下面会讲&#xff09;着重复习&#xff08;会…

部署kubernets v1.27.3集群

本文将演示如何使用kubeadm快速部署一个Kubernetes v1.27.1集群&#xff0c;并会简单说明如何在集群上部署nginx容器 主机环境预设 本示例中的Kubernetes集群部署将基于以下环境进行。 OS: Ubuntu 20.04 Kubernetes&#xff1a;v1.27.3 Container Runtime: Docker CE 23.0.…

【并发编程】深入探索AQS

文章目录 一、AQS 介绍二、通过ReentrantLock分析AQS的实现2.1、获取锁流程2.2、获取锁源码分析2.2.1、acquire2.2.2、tryAcquire2.2.3、addWaiter2.2.4、acquireQueued2.2.5、shouldParkAfterFailedAcquire 2.3、解锁源码分析2.3.1、unlock2.3.2、release2.3.3、tryRelease2.3…

实验篇(7.2) 17. 站对站安全隧道 - FortiGate作为SSL客户端(SSL) ❀ 远程访问

【简介】虽然常用的站到站的连接用的是IPsec VPN&#xff0c;但是在某些特殊情况下&#xff0c;UDP500或4500端口被阻断&#xff0c;IPsec VPN无法连接&#xff0c;那么还有其它办法实现站到站的连接吗&#xff1f;SSL VPN也可以的。 实验要求与环境 OldMei集团深圳总部部署了域…

NodeJS File Upload⑩

文章目录 ✨文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持&#x1f618;前言文件上传 后端接口 Form表单上传 Axios前后端分离上传 实现效果演示 记录 读取图片文件总结 ✨文章有误请指正&#xff0c;如果觉得对你有用&a…

RK3568平台开发系列讲解(外设篇)四线风扇驱动实验

🚀返回专栏总目录 文章目录 一、硬件连接二、原理图分析三、驱动适配3.1、内核配置3.2、修改设备树3.3、实验沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将讲解四线风扇的使用。 一、硬件连接 风扇模块如下所示,黑线是负,红线是正,黄线是测速,蓝线是…

算法——字符串匹配算法——BM(Boyer-Moore) 算法

字符串匹配算法——BM &#xff08;Boyer-Moore&#xff09; 算法 概述场景一 坏字符场景且模式串中没有匹配字符场景二 坏字符场景且模式串中有匹配字符场景三 好后缀场景且模式串中没有匹配字符场景四 好后缀场景且模式串中有匹配字符场景五 好后缀场景且模式串中有匹配子串后…

EfficientDet-pytorch目标检测训练

目录 1. EfficientDet-pytorch版本代码下载 2.数据集准备 2.1数据集格式 2.2 定义自己数据集的yml文件 3. 训练配置 4.模型评估 5.测试模型性能 1. EfficientDet-pytorch版本代码下载 GitHub - zylo117/Yet-Another-EfficientDet-Pytorch: The pytorch re-implement…