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

news2024/11/19 13:32:06

【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/681151.html

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

相关文章

【QQ界面展示-实现自动回复 Objective-C语言】

一、刚才咱们监听键盘弹出事件,是怎么监听的, 1.监听键盘弹出事件的步骤 1)首先,在控制器的viewDidLoad方法中,创建一个NotificationCenter对象啊 2)通过center,让当前控制器的这个方法,监听这个通知, 3)然后,我们在这个通知里面,获取到键盘的Y值, 4)对我们的…

Rust 原始类型之数组array内置方法

目录 数组 array 声明 访问 引用 Reference 切片 Slice 方法 题目实例 数组 array 在 Rust 中&#xff0c;数组是一种固定大小的数据结构&#xff0c;用于存储具有相同数据类型的元素的有序集合。 “固定大小”是指数组中的元素的类型和数量确定&#xff0c;也就确定了…

【从零开始学习JAVA | 第十八篇】接口介绍

目录 前言&#xff1a; 接口&#xff1a; 如何定义一个接口&#xff1a; 如何使用一个接口&#xff1a; 接口中成员的特点&#xff1a; 接口与类的区别&#xff1a; 接口的应用&#xff1a; 总结&#xff1a; 前言&#xff1a; 接口其实是为了弥补继承的缺点&#xf…

C语言文件打开关闭详解、文件顺序读写详解。

文件的打开和关闭 fopen函数原型&#xff1a; FILE *fopen( const char *filename, const char *mode );const char *filename 文件的路径以及名字const char *mode 文件的打开方式 文件打开方式含义如果文件不存在“r”读文件不存在会报错“w”写(清空写)建立一个新的文件“…

【新手上路】如何在Web3时代成为XR创建者

目录 0 XR在Web3里的作用 1 XR的概念、特征、技术、设备、平台、应用和工具 1.1 VR的概念、特征和技术 1.2 AR的概念、特征和技术 1.2 XR的设备、平台、应用和工具 2 选择XR的方法 2.1 何时使用VR 2.2 何时使用AR 3 开发XR作品的4个步骤 4 成为XR构建者的路径 4.1 三…

小程序布局中相对定位的用法

小程序中一般为了有一定的设计效果&#xff0c;会将下边组件的内容提升一点到上边去&#xff0c;比如我们的电商展示模板里&#xff0c;会将商品列表覆盖一点到背景图&#xff0c;效果如下&#xff1a; 这种要如何搭建呢&#xff1f;就是利用到了CSS相对定位的原理 搭建组件 …

27.移除元素

LeetCode-27.移除元素 1、题目描述2、解题思路3、代码实现3.1Java代码实现3.2双指针代码优化 4、解题记录 1、题目描述 题目描述&#xff1a; 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要…

windows搭建vue开发环境

参考博客&#xff1a;最详细的vue安装教程_一只野生程序媛的博客-CSDN博客 Vue安装环境最全教程&#xff0c;傻瓜式安装_浪漫主义码农的博客-CSDN博客 1、安装nodejs&#xff0c;从下面官网下载版本&#xff0c;对应安装就行了&#xff1a; Node.js 中文网 2、安装好后&…

合宙Air724UG Cat.1模块硬件设计指南--天线接口

天线接口 简介 天线是发射和接收电磁波的一个重要的无线电设备&#xff0c;没有天线也就没有无线电通信。天线品种繁多&#xff0c;以供不同频率、不同用途、不同场合、不同要求等不同情况下使用。 特性 LTE天线接口。50 欧姆特性阻抗&#xff0c;不推荐使用PCB板载天线&#…

脚本模式的特点和用法

一、什么是脚本? 脚本(script)是使用一种特定的描述性语言&#xff0c;依据一定的格式编写的可执行文件&#xff0c;又称作宏或批处理文件。脚本通常可以由应用程序临时调用并执行。 简单解释:脚本类似于演戏时用到的剧本&#xff0c;脚本其实就是一系列指令——演员看了指令就…

算法--itemCF

概述&#xff1a; 电子商务网站是个性化 推荐系统重要地应用的领域之一。亚马逊就是个性化推荐系统的积极应用者和推广者&#xff0c;亚马逊的推荐系统深入到网站的各类商品&#xff0c;为亚马逊带来了至少30%的销售额。 不光是电商类&#xff0c;推荐系统无处不在。 QQ&…

【差旅-游记】记一次海南出差

哈喽&#xff0c;大家好&#xff01;我是雷工&#xff01; 这篇不是技术分享&#xff0c;是篇差旅记录。 最近出差去了一次海南&#xff0c;应该算得上我目前出差去过最远的地方了&#xff0c;也是我第一次去海南&#xff0c;还是蛮有新鲜感的&#xff0c;因此记录下此次差旅。…

【软件设计师暴击考点】数据库系统高频考点暴击系列

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;软件…

tensorflow2 模型建立与训练

模型的构建&#xff1a; tf.keras.Model 和 tf.keras.layers 模型的损失函数&#xff1a; tf.keras.losses 模型的优化器&#xff1a; tf.keras.optimizer 模型的评估&#xff1a; tf.keras.metrics 模型&#xff08;Model&#xff09;与层&#xff08;Layer&#xff09; …

Mysql 索引基础介绍

索引基础介绍 索引是什么 MySQL官方&#xff1a;索引&#xff08;INDEX&#xff09;是帮助MySQL高效获取数据的数据结构。 面试官问&#xff0c;回&#xff1a;索引是排好序的快速查找数据结构 索引的目的在于提高查询效率&#xff0c;可以类比字典的目录。如果要查mysql这个这…

13. python从入门到精通——Python操作数据库

数据库编程接口&#xff1a;python database API python database API概述 python database API 规范对于关系数据库的访问&#xff0c;Python社区已经制定出一个标准&#xff0c;称为Python Database API&#xff0c;通过这个接口使python跨不同数据库的操作代码可以更加具有…

动态内存管理(malloc,calloc,realloc)

文章目录 1.为什么存在动态内存分配 2.动态内存函数的介绍 3.常见的动态内存错误 4.几个经典的笔试题 5. C/C程序的内存开辟 文章内容 1.为什么存在动态内存分配 我们已经掌握的内存开辟方式有&#xff1a; int val 20;//在栈空间上开辟四个字节 char arr[10] {0};/…

【javascript】闭包

通过定时器从第一个元素开始往后&#xff0c;每隔一秒输出arr数组中的一个元素。 <script>var arr [one, two, three];for(var i 0; i < arr.length; i) {setTimeout(function () {console.log(arr[i]);}, i * 1000);} </script> 但是运行过后&#xff0c;我…

使用生成 AI 实现准确的新闻摘要

shadow 这篇文章介绍了作者 Alessandro Alviani 的实践经验&#xff0c;非常有参考价值。 指令冗余&#xff0c;多步引导&#xff0c;是目前提高LLM输出质量的方法之一。 Towards Accurate Quote-Aware Summarization of News using Generative AI Alessandro Alviani generati…

电容式电动汽车路径规划问题的双级蚁群优化算法

摘要&#xff1a; 电动汽车&#xff08;EV&#xff09;技术的发展导致了一个新的车辆路由问题&#xff08;VRP&#xff09;&#xff0c;称为有容量的电动汽车路由问题&#xff08;CEVRP&#xff09;。由于充电站的数量有限&#xff0c;电动汽车的巡航范围有限&#xff0c;不仅要…