【上一篇】 |
The Begin 点点关注,收藏不迷路
|
【下一篇】 |
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用户密码"
### 创建一个db_test02数据库
openGauss=# CREATE DATABASE db_test02;
CREATE DATABASE
openGauss=#
### 使用 “ \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=#
###语法###
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=#
###语法###
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=#
###启动数据库服务###
[omm@klgdj ~]$ gs_om -t start
###重启数据库服务###
[omm@klgdj ~]$ gs_om -t restart
###停止数据库服务###
[omm@klgdj ~]$ gs_om -t stop
ALTER TABLE修改表,包括修改表的定义、重命名表、重命名表中指定的列、重命名表的约束、设置表的所属模式、添加/更新多个列、打开/关闭行访问控制开关。
###语法--创建表###
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=>
###语法--添加表字段###
###语法###
\d 表名
db_test01=# \d table01
Table "public.table01"
Column | Type | Modifiers
--------+-------------------+-----------
id | integer |
name | character varying |
age | integer |
db_test01=#
###添加表字段###
###在表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=#
###修改表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=#
###修改表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=#
###修改表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=#
###将表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=#
###将表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=#
###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=#
DROP TABLE
会强制删除指定的表,删除表后,依赖该表的索引会被删除,而使用到该表的函数和存储过程将无法执行。删除分区表,会同时删除分区表中的所有分区。
###删除tab_01表###
db_test01=# DROP TABLE tab_01;
###语法###
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);
###语法结构###
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=#
###语法结构###
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;
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
。
当我们需要根据指定条件从表中查询数据时,就可以在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=#
###升序排列-- 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=#
DISTINCT关键字与SELECT语句一起使用,用于去除重复记录,只获取唯一的记录。
当一个表中有多个重复记录,当提取这样的记录时,DISTINCT关键字就显得特别有意义,它只获取唯一一次记录,而不是获取重复记录。
###使用DISTINCT关键字去除重复数据###
db_test01=# SELECT DISTINCT username FROM tab_01;
username
----------
lisa
Joes
Lily
tom
James
zyl
(6 rows)
db_test01=#
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=#
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=#
1、此操作符只有在它的模式匹配整个串的时候才能成功。如果要匹配在串内任何位置的序列,该模式必须以百分号开头和结尾。
2、下划线 (_)代表(匹配)任何单个字符; 百分号(%)代表任意串的通配符。
3、要匹配文本里的下划线或者百分号,在提供的模式里相应字符必须前导逃逸字符。逃逸字符的作用是禁用元字符的特殊含义,缺省的逃逸字符是反斜线,也可以用ESCAPE子句指定一个不同的逃逸字符。
4、要匹配逃逸字符本身,写两个逃逸字符。例如要写一个包含反斜线的模式常量,那你就要在SQL语句里写两个反斜线。
5、关键字ILIKE可以用于替换LIKE,区别是LIKE大小写敏感,ILIKE大小写不敏感。
6、操作符~~
等效于LIKE,操作符~~*
等效于ILIKE。
1、和LIKE一样,此操作符只有在它的模式匹配整个串的时候才能成功。如果要匹配在串内任何位置的序列,该模式必须以百分号开头和结尾。
2、下划线 (_)代表(匹配)任何单个字符; 百分号(%)代表任意串的通配符。
3、SIMILAR TO也支持下面这些从POSIX正则表达式借用的模式匹配元字符。
4、前导逃逸字符可以禁止所有这些元字符的特殊含义。逃逸字符的使用规则和LIKE一样。
❓ openGauss数据库---创建表、修改表、查看表信息
❓ openGauss数据库---有关DML语句使用
❓ openGauss数据库---对象查看(数据库、表结构)
❓ openGauss数据库---运算符了解及使用
❓ openGauss数据库---子句使用
【上一篇】 |
The End 点点关注,收藏不迷路
|
【下一篇】 |