我是靠谱客的博主 傲娇樱桃,最近开发中收集的这篇文章主要介绍达梦数据库学习笔记的分享(个人)1,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

SQL语句,常用

登录数据库,输入命令isql his/Gzdw12345@his1.b 这是终端版数据库登录,或者在cd /home/dmdba/dm/dmdbms/bin内输入disql his/Gzdw12345@his1.b同样可以进入终端版本数据库。图形界面数据库登录。cd /home/dmdba/dm/dmdbms/tool 下输入./manager即可进入图形界面数据库,用户名his,密码Gzdw12345。Dmanager

数据库连接,在没有环境变量的情况下,终端上怎么链接呢,在cd /home/dmdba/dm7/bin里面直接输入命令./disql laowang/1234567890@LOCALHOST 就可以连接本地达梦数据库。

Disql his/Gzdw12345就可以登录进去,与isql his/Gzdw12345@his1.b的登录方式一致

首先理解一下数据库的概念:

数据库相当于一个大房子。有卧室,客厅,餐厅,厕所等等。

实例就是数据库与外界(操作系统)沟通的桥梁。实例相当于对外界(操作系统)说明,这个大房子是一个数据库。数据库可以有多个实例。卧室的实例,客厅的实例,餐厅的实例,厕所的实例,或者是本身大房子的实例。比如我们现在使用的sophic应用,历史服务器主机名his1就是一个实例名,是数据库告诉操作系统我叫his1

表空间是实际存在的物理内存,真实存在与一个.dbf文件内,比如卧室.dbf,客厅.dbf,餐厅.dbf,厕所.dbf等等,而实例只是一个名词,如果卧室改装成餐厅,那实例也会发生改变。一个实例可以有多个表空间。意思就是一个实例可以有多个表空间,但是一个表空间只能有一个实例,我们用用户登录到his1上时,本身就是在实例内进行的操作,在里面创建的表空间自然属于实例his1。

数据库用户就好比住在房子里面的人,用户与实例之间的关系可以使多对多,多对一,一对一,没有任何限制。比如用户1可以访问客厅和卧室,也可以只能访问卧室。不是拥有关系,而是访问权限,增删查改。所以,模式就是表空间里面的东西

以下是比较混乱的笔记:

/*

Cd etc/init.d

Systemctl status Dm查看达梦数据库服务状态。

Service dm

Cd tool里面,不仅有./manager启动工具,还有服务启动工具./dmservice.sh,图形界面启动工具,与linux_sophic.sh一样,一个启动脚本。

Dm.ini文件,具体在哪find查找。

Select status from v$instance,查看实例的状态。

Select STATUS,name from v$database;前面的字段均为数据库中的字段。

Systemctl stop DmServerDM1.

在达梦数据库安装目录下

配置链接字符串:/nca.sh脚本,与dm_svc.conf对应

Cd /home/dm/dm7/data/dm1里很多比较重要的数据文件。

Dm7里有一个文件夹log,可以查看数据库的日志。查看日志!

总视图,all_views里都有一下视图

Dm7常用视图,v$instance,dba_data_file,dba_tablespace,dba_free_fDDiles;

/users/dameng里有两个文件夹,一个lib另一个rdbms,这是达梦数据库的动态库文件。

运算符及规则:

查询多个字段用逗号隔开

%表示任意字符的通配符

_表示一个字符的通配符

逻辑运算:and,or,not,like,between...and...,null,in,exists

普通运算:=,<,>,<=,>=,!=

在终端下输入desc可查看表结构,如:

SQL> desc laowang1;

就可以查看到表laowang1的表空间结构;

创建一个表空间和一个表的整个步骤,这个是数据库的第一步

/*****************************************************************************/

一、建立表空间

Create tablespace laowang1 datafile ‘/home/dmdba/laowang.dbf’ size 128 autoextend on maxsize 1000;创建一个叫laowang1的表空间,表空间最小128M最大增加到1000M。如果后面的maxsize换成了unlimited,就是在他本.dbf中无限扩大无限制。

Create tablespace laowang1 datafile ‘/home/dmdba/laowang.dbf’ size 50 autoextend on next maxsize unlimited;创建一个叫laowang1的表空间,表空间自动向外扩展增长,每次增大50M,没有限制。

Create tablespace laowang1 datafile ‘/home/dmdba/laowang.dbf’ size 50;创建一个叫laowang1的表空间,大小为50M,只能是50M大,没有增大了。

Create tablespace laowang1 datafile ’/home/dmdba/laowang.dbf’ size 50 autoextend on next 50 maxsize 2048;创建一个叫laowang1的表空间,表空间50M,可向外扩展50M,最大到2048。

二、创建用户并关联该表空间、创建表

Create user laowang666 identified by laowang6661 encrypt by laowang6661 limit failed_login_attemps 3,password_lock_time 1,password_grace_time 10 default tablespace laowang1;grant dbs,public to laowang666;创建一个用户名字叫做laowang666,密码是laowang6661,并对密码进行加密,使用默认的表空间his,密码锁定1天,锁定次数为3次,密码过期10天内不改密码就会被锁定,添加默认的表空间his,赋予laowang666,dba与public的权限。

三,创建表

CREATE TABLE “LAOWANG666”.”LAOWANGTEST”  模式名必须要大写,表的名与实际相符

(                                               有大写就大写,有小写就小写

“XUEHAO” CHAR(10),                        创建表一定要用大写,否则调取字段会出错

”XINGMING” CAHR(10),

”YUWEN” NUMBER(3,1),

“SHUXUE” NUMBER(3,1),

“YINGYU” NUMBER(3,1),

“JIGUAN” CHAR(100),

“PINGJUNFEN” NUMBER(3,1),

“SEX” CHAR(1),

“AGE” INT,

“AIHAO” CHAR(20),

“NUMBERPHONE” INT)

不要看着挺吓人的,其实就是一条简单的语句,只是参数多了些

表创建好了之后,使用insert into LAOWANG666.”laowangTest” (xuehao,....) values (‘2001’,...)插入数据

或者使用insert into LAOWANG666.”laowangTest” table his.laowang666;commit;

注:表插入表,两表数据结构必须一致!输入完了之后,一定要输入commit,提交后数据库中才会有数据

/*****************************************************************************/

Create 语句各种:

创建模式Create schmea “GBLW” authorization “LAOWANG66666”;创建一个叫做”GBLW”的模式,该模式批准(不一定叫做批准)用户LAOWANG66666,可以说是,该模式使用了LAOWANG66666用户的表空间,在创建LAOWANG66666用户的时候会使用指定一个表空间。所以该模式上建立的表,视图还是索引其他等等都是在LAOWANG66666背后的表空间上。

Create table laowang1 as (select * from chengji_wangxz);创建一张表,内容与chengji_wangxz一致;

Create index laowang1 on laowang1(xuehao);创建一个索引,索引数据位表laowang1里的xuehao;

Create view bbbbbb as (select *from laowang1);创建一个视图,数据使用表laowang1;

Create user wangxz identified by wangxz123 enerypt by wangxz123 limit failed_login_attemps 3,password_lock_time 1,password_grace_time 10 default tablespace his;grant dba,public tablespace to wangxz;创建一个用户名字叫做wangxz,密码是wangxz123,并对密码进行加密,使用默认的表空间his,密码锁定1分钟,锁定次数为3次,密码过期10天内不改密码就会被锁定,添加默认的表空间his,赋予wangxz,dba与public的权限。

在这里有个问题需要说明一下,如果用wangxz123用户登录的时候,调用his的表结构,需要his.laowang,这样才是有用的实例。

Create tablespace laowang1 datafile /home/dmdba/laowang.dbf size 128 autoextend on maxsize 1000;创建一个表空间,容量在128M到1000M之间,数据库表空间文件存放在/users/wangxz/usb/laowang.dbf,这里的路径必须是指定的路径,否则创建文件目录失败。

create tablespace laowang1 datafile 111.dbf size 128 autoextend on next 50 maxsize 2048

create view r761 as select * from laowangcopy1 where attr_oid=15481133546405892 with cascaded check option;创建一个试图,试图内容为laowangcpoy1里attr_oid=15481133546405892的数据,后面加一个with cascaded check option的视图约束条件,这个约束条件表示,对数据的任何操作会导致视图不存在的操作,均被提示错误并强制终止。

create tablespace laowang1 datafile ‘haha.dbf’ size 128 autoextend off,创建一个表空间,大小为128M,不自动增加。

insert语句

Insert into laowang1 (xuehao,xingming,age) values (2010,’ssaa1’,12);插入一条记录;

Insert into laowang1 (xuehao,intime) values (‘laowang’,to_timestamp(‘2020-01-01 10:00:00’,’YYYY-MM-DD HH24:MI:SS’));插入一条带有时间戳的数据,时间戳函数的格式

To_timestamp(2020-01-01 10:00:00,YYYY-MM-DD HH24:MI:SS)一定得记住!

insert into LAOWANG666.”laowangTest” table his.laowang666;前提是两张表的数据结构完全一致。

update语句

Update laowang1 set age=19 where xuehao = ‘2007’;更改一个学号为2007的学生的年纪为19岁;

Update laowang1 set age=19 where xingling like ‘%hello%’;将名字中带有hello字符的学生的年纪改成13岁,’%hello%’表示含有,’hello%’表示以hello开头,’%hello’表示以hello结尾

Update hahaha1 set 语文=99,数学=99,英语=99,工作时间=to_timestamp(‘2006-10-01 12:52:33’,’YYYY-MM-DD HH24:MI:SS’) where 工号=2006;更新工号为2006的多条数据

Update hahaha1

Set 爱好 = CASE 工号

When 2006 then ‘打麻将’

When 2007 then ‘打篮球’

End where 工号 in (2006,2007);

修改爱好属性列中的数据,当工号为2006,爱好就是打麻将,当工号为2007,爱好就是打篮球。

上面方法的升级版,可以无限衔接。

Update hahaha1

Set

爱好 = CASE 工号

When 2006 then ‘打麻将’

When 2007 then ‘打篮球’

End,

性别 = CASE 工号

When 2006 then ‘女’

When 2007 then ‘男’

End,

年纪 = CASE 工号

When 2006 then 18

When 2007 then 28

end

where 工号 in (2006,2007);

Commit;

别看上面的语句很长,其实很简答的,就是上一条语句的升级版,代表的意思是,更新hahaha1表,当工号为2006时,性别为女,爱好为打麻将,年纪为18。当工号为2007时,性别为男,年纪为28,爱好为打篮球。就是这么个简单的意思。

放图增加一下印象。

Update laowang666 set xuehao=2001 where rowid =1;将第一行的数据xuehao修改成2001

update wangxz123 set alarm_content=replace(alarm_content,都匀变,随变);//这句话的意思就是把表wangxz123内alarm_content列里的‘都匀变’字符全部替换成‘随变’

alter语句

Alter tablespace A add datefile ‘/home/dmdba/laowang.dbf’ size 128新用法,意思是给表空间手动开一个数据文件。

Alter tablespace A resize datafile “laowang.dbf” to 256;新用法,也是扩容的意思,只能增大,不能减小

Alter tablespace A offine/online;将表空间改为离线状态/在线状态

Alter database add logfile “laowang.log” size 256.

Alter user laowang identified by “111”;改用户密码

Alter user laowang default tablespace uuu;修改用户的表空间。

Alter user laowang default

Alter table laowang1 add (sex char(10),high char(8),weight char(6));给表laowang1加入三条属性列,分别为sex,high,weight.其类型为char,字符数分别为10,8,6;

这里有一个比较偏的用法:

alter table A add addr varchar default 你好;在增加列的过程中,可以加入缺省的数据。

Alter table laowang1 drop sex删除表laowang1中的sex属性列,这里的达梦数据库不允许删除多列。可能在数据库中有哪个地方的设置规定死了的。

Alter table laowang1 remame to laowang2,将表laowang1更名为表laowang2,表laowang1将不会被查询到,因为更名为了laowang2

Alter table laowang1 modify sex char(10);把表laowang1中的sex列数据类型改成char(10);

Alter table laowang1 rename column sex to xingbie;将laowang1表中的sex属性列更名为xingbie;

Alter table laowang1 add constraint xingming primary Key(xuehao);给表laowang1增加一个主键约束xuehao,唯一性约束名称为xingming,随便取的名字

alter table laowang1 add constraint haha unique(jiguan);//加一个唯一性约束,haha随便取的名字

alter table laowang1 modify time datetime(3) not null;//可以看做是直接改列属性

alter table laowang1 add check(age<999);如果插入到数据大于等于999.就不会成功

alter table laowang1 add constraint foreignLW foreign key(code_id) references laowang(code_id)//添加外键约束,就是本表的外键就是另外一个表的主键

Alter user laowang account lock;锁定账户laowang

Altet user laowang account unlock;解锁账户laowang

锁定完账户以及解锁账户怎么查看账户的状态呢?考试就这么考了。

Select * from dba_users查看数据库用户的信息,就能查看用户的状态

Alter table laowang rename to laozhang;直接把表laowang改名表laozhang。

Alter user laowang identified by “laowang123”,将账户laowang的密码改成laowang123,一定要加双引号,否则会出错alter user wangxz123 identified by “wangxz123”;将用户wangxz123的密码改为wangxz123,前提是该用户必须是具有数据库权限的用户,这里的密码必须要加双引号,不然会提示用户名密码登陆错误!!!!!!还有一个

开通数据库具有dba权限的语句为grant dba to wangxz123;

授予数据库的角色grant laowang to

回收权限revoke dba to wangxz123

select语句

Select * from all_tables;/达梦数据库中所有的数据表,all_tables表中的table_name能查到下列所有的表,除了all开头的。

Select * from dba_sys_privs;查看角色权限

Select * from all_users;/达梦数据库中所有的用户

Select * from user_users;/达梦数据库中所有用户的详细信息

/* all_tables,all_users,user_users这些变都在all_views里,他们都是一个视图,至于all_views本身就不知道了,想知道有什么直接select * from all_views;

Select * from v$instance;/达梦数据库中所有的实例

Select * from v$sessions;/达梦数据库中所有的连接数

Select * from v$version;/达梦数据库中数据库的版本

Select * from dba_tablespace;查看数据库表空间的状态。考试可能会考到。里面有字段,可以查看到

Seletc * from v$tablespace;插卡表空间的各种数据及参数

Select * from v$rlog;查看数据库活跃的重做日志;

Select * from v$rlogfile;查看数据控活跃的重做日志文件;

Select * from laowang1;查看表laowang1的所有数据;

Select count(*) from v$sessions;查看当前数据库的连接数

Select * from V$version;查看当前数据库的版本;商用库版本;

Select instance_name from v$instance;查询数据库中所有的实例名;表名只针对于当前的商用库,其他数据库就会有不一样的地方

Select count(*) from dba_tables; 查询当前数据库表空间所有的数量;

Select count(*) from user_tables 查询当前数据库中所有的用户数量

Select count(*) from all_tables;查询当前用户所能查询的表的数量

Select * from dba_tablespaces where tablespace_name like %S%;在表tablespace中查询包含关键字‘S’的数据,只展示dba_tablespaces属性列。

Select tablespace_name,sum(bytes) total from dba_data_files group by tablespace_name;查询表空间及其容量,并按tablespace_name来分组展示。这里的bytes只是一个表真实存在的列名

Select * from all_user;查询当前用户(所有存在的用户,不一定登录在线)

Select * from user_users;查询当前用户的详细信息;

Select * from dba_roles;查看系统数据库中有哪些角色。

Select * from user_tab_comments where user_tab_comments is not null;查询表 from user_tab_comments中user_tab_comments不为空的数据,并展示出来

Select sum(age) total from laowang1;查询表laowang1中age列所有数据的总加和并展示出来

Select age.count(*) from laowang1 group by age;查询出表laowang1中各年龄各有多少人

Select xingming,count(*) from laowang1 group by xingming having count(*)>1 order by 2;查询并展示表laowang1中按xingming分组排序数量大于1的数据,并按照姓名的升序排序;

Order默认为升序,加入desc就是为降序

一般的简单的函数,sum,max,min,avg,列名之间加AS或者打空格,及时另取列名

Select age,count(*) from laowang1 group by age having age > 19 order by 2 desc;查询并展示表laowang1中大于19岁的各年龄阶段各有多少人,并按照第二列的大小降序排序

Select name,count(*) from laowang where sex=’女’ group by name;

上图增加一下印象

Select max(value),min(value),avg(value) from scada_analog202106 where attr_oid = 15481133546340356;查询scada_analog202106表中attr_oid数值为15481133546340356的数据的value的最大值,value的最小值,value的平均值。

Select top 10 *from laowang666;查找表laowang666中前十行的数据

Select * from laowang666 limit 5,10;查询表laowang666中5到10行的数据。

Select * from laowang666 limit 5;查询表laowang666中前5行数据。

Select rowid from laowang666 where xuehao=2001;查找xuehao=2001数据的行数

Select name from laowang where exists (select * from laowang where id =15);

查询表laowang内是否存在一个ID为15的学生的,并显示出名字。这里的exists表示取后面的布尔值,如果为真,执行。否则为空

使用连接符查询:

Select attr_oid,attr_name||’salart is:’||salary from laowang;把多个列合成一个列显示

显示查询的结果为:XXX(attr_oid)   ‘某某某salary is XXX对应的attr_name’

使用运算符进行查询:

Select attr_oid from laowang where attr_oid between 2001 and 2009;

Select attr_oid from laowang where attr_oid in(15000,30000);查出15000到30000行的数据

Select attr_name from laowang where attr_name like ‘%你妹%’;

Select attr_oid,age from laowang where (attr_oid>1001 or attr_oid <2003) and age>20;

分组与排序

Select attr_oid,age from laowang where order by attr_oid asc,age,desc;优先排序第一个

Select count(*) from laowang;查数据量,表laowang有多少数据

Select age,count(*) from laowang1 group by age having age > 19 order by 2 desc;

子查询

Select attr_oid from laowang where (select id from laowang1 where laowang1.id = laowang.attr_oid);查询表laowang中attr_oid与表laiwang1中的id值相同的数据。

Any,in,all的用法

Select attr_name,age from laowang where age > any(select age from laowang where year=25);

查找表laowang中attr_name,age数据,当age大于year=25的数据中任何一个age的数据。Any是大一任何一个,all是大于所有,in等于列表中的任意一个数据,不用带运算符。

delete语句

DELETE,只是用来删除表里面的数据的,不针对表的结构,也不删表。

Delete from laowang1 where shuxue = (select min(shuxue) from laowang1);删除表laowang1中shuxue数字最小的数据

Delete from laowang1;删除表laowang1里所有的数据。

Delete from laowang1 where xingbie is null;把表laowang1中xingbie属性列为空的数据删掉。

在这里,delete 可以不加from直接跟表名,但是最好不要这么整,update 也是一样,虽然在程序当中可以通过,但是在笔试的时候,不一定给你分。

Truncate table laowang; 删除表laowang中的所有数据,不能撤销

其他一些小语句

Drop就是删除表,没啥好说的。

Drop role laowang,删除角色laowang

Commit提交

Rollback回滚

数据库的内连接和外连接,左连接右连接,网上查。数据库弄好了试一试。

select a1,b1 from laowang cr c

Merge into A1 using B1 on (A1.C1=B1.C3);如果表A1中c1列等于B1表中的c3列

When matched then update set A1.C2=B1.C4

When not matched then insert (C1,C2) values(n,m);

Comment on table laowang1 is laowangaaa,给表laowang1增加注释laowangaaa;

控制台工具

进入达梦安装的目录,tool里面直接运行./console

数据库备份:

在非数据库下,输入。如下:

Dsp4:/users/ems>dexp his/Gzdw12345@his1.b file=/users/wangxz/laowang/aaa.dmp tables=laowang1;将数据库中的表laowang1导出到/users/wangxz/laowang/目录下,并且文件名称叫做aaa.dmp

Dsp4:/users/ems>dimp his/Gzdw12345@his1.b file=/users/wangxz/laowang/aaa.dmp,将本地/users/wangxz/laowang/aaa.dmp的文件导入数据库中

在没有环境变量的时候

在/home/dmdba/dmdbms/bin里输入一下语句,备用整个数据库的逻辑备份。

./dexp laowang/1234567890@LOCALHOST full=y file='/home/dmdba/full.dmp'

在/home/dmdba/dmdbms/bin里输入一下语句,导入整个数据库的逻辑备份。

./dimp laowang/1234567890@LOCALHOST file='/home/dmdba/full.dmp'

导出多个表:

导入多个表:

在终端isql下,输入spool /users/ems/Desktop/1.txt;之后。

再输入select * from laowang;

在输入spool off;

这三条语句的意思是把select * from laowang;的搜索结果拷贝到/users/ems/Desktop/1.txt;文件中,spool就是记录内容的开始,spool off;就是记录的结尾。

数据库服务启动及说明(如何启动数据库)

在数据库服务器中,比如his1:

/home/dmdba/dmdbms/root_uninstaller.sh;卸载达梦数据库删除达梦的数据库服务;

/home/dmdba/dm7/script/root/root_installer.sh;安装达梦数据库建立达梦数据库的服务。

/home/dmdba/dm7/script/root/dm_service_installer.sh -s /home/dmdba/dm7/bin/DmServiceDMSERVER;达梦数据库创建实例的时候启动达梦数据库的服务.

普通的节点或者服务器节点登录数据库:

在/homo/dmdba/dm7/tool里

./dmservice.sh启动达梦数据库的管理窗口可视化脚本

安装好之后,进入cd /etc/init.d里面直接service DmAPService start,service DmServiceDMSERVER start来启动达梦数据库的服务

实验说明中在所有服务有关掉的听话下,在cd /home/dmdba/dm7/bin 执行./dmserver /home/dmdba/dm7/data/DAMENG/dm.ini是达梦8版本的启动服务的方式。不适用与dm7,两种方式启动服务,会导致服务启动失败。

dm.ini里的端口号5326,cat dm.ini|grep PORT,dm.ini里有许多重要的配置。

创建实例的工具在cd /home/dmdba/dm7/tool 里直接运行./dbca.sh

数据库连接,在没有环境变量的情况下,终端上怎么链接呢,在cd /home/dmdba/dm7/bin里面直接输入命令./disql laowang/1234567890@LOCALHOST 就可以连接本地达梦数据库。

数据库与sophic应用:

dm_svc.conf与RDB.CFG,

ems的.cshrc

users/dameng/lib与rdbms看一下

最后

以上就是傲娇樱桃为你收集整理的达梦数据库学习笔记的分享(个人)1的全部内容,希望文章能够帮你解决达梦数据库学习笔记的分享(个人)1所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部