国产达梦数据库安装和相关SQL语句使用详解

目录

达梦数据库常用对象管理

数据操作

达梦数据库单表查询

达梦数据库多表查询

学习总结


  • 达梦数据库常用对象管理

1.表空间管理

达梦数据库的表空间管理需要掌握以下几个方面:

  1. 创建表空间:可以使用CREATE TABLESPACE语句来创建表空间。

  2. 修改表空间:可以使用ALTER TABLESPACE语句来修改表空间的属性。

  3. 删除表空间:可以使用DROP TABLESPACE语句来删除表空间。

  4. 管理表空间的数据文件:可以使用ALTER TABLESPACE ADD DATAFILE和ALTER TABLESPACE DROP DATAFILE语句来管理表空间的数据文件。

  5. 查询表空间信息:可以使用系统表来查询所有表空间的信息,例如dba_data_files和dba_tablespaces等。

创建表空间(在/dm8/data/DAMENG/TBS01.DBF路径创建TBS)

create tablespace "TBS" datafile
'/dm8/data/DAMENG/TBS01.DBF' size 32;

查看表空间

select tablespace_name from user_tablespaces
where tablespace_name='TBS';

删除表空间

drop tablespace TBS;

  2.用户管理

达梦数据库的用户管理需要掌握以下几个方面:

  1. 创建用户:使用CREATE USER语句创建用户。

  2. 删除用户:使用DROP USER语句删除用户。

  3. 修改用户:可以使用ALTER USER语句修改用户的属性,例如修改密码、设置角色等。

  4. 角色管理:可以使用CREATE ROLE和DROP ROLE语句创建和删除角色,使用GRANT和REVOKE语句授权给用户或者其他角色。

  5. 授权管理:可以使用GRANT和REVOKE语句授权用户的权限,例如SELECT、INSERT、UPDATE、DELETE等。

  6. 查询用户信息:可以通过查询系统表来查看已经存在的用户以及相关信息。

创建用户(SQL语句)刷新就能看到

create user TEST identifiled by "dameng123";

或者直接用DM管理工具操作刷新就能看到

 修改用户(SQL语句)刷新就能看到

alter user TEST identified by "Dameng123";

或者直接用DM管理工具操作刷新就能看到

 

 删除用户(SQL语句)刷新就能看到

drop user TEST;

或者直接用DM管理工具操作刷新就能看到

     3.模式管理

达梦数据库的模式管理需要掌握以下几个方面:

  1. 创建模式:使用CREATE SCHEMA语句创建模式。

  2. 删除模式:使用DROP SCHEMA语句删除模式。

  3. 修改模式:可以通过ALTER SCHEMA语句修改模式名称。

  4. 授权管理:可以使用GRANT和REVOKE语句管理模式的授权,授权给特定的用户或角色。

  5. 模式查询:可以通过查询系统表来查看已经存在的模式以及相关信息。

创建模式(SYSDBA)

create schema dameng authorization SYSDBA;

删除模式

drop schema DAMENG;

创建表

create table DMHR.TEST;

增加列

alter table DMHR.TEST add column (age int);

删除列

alter table DMHR.TEST drop column age;

删除表

drop table DMHR.TEST;

常见约束类型

not null; unique;  primary key;  foreing key;  check;

增加约束

alter table DMHR.TEST add constraint TEST_UNI unique(ID);

删除约束

alter table DMHR.TEST drop constraint TEST_UNI;

禁用和启用约束

alter table DMHR.TEST disable constraint;//禁用
alter table DMHR.TEST enable constraint;//启用
  • 数据操作

1.数据插入

达梦数据库的数据插入需要掌握以下几个方面:

  1. INSERT语句:使用INSERT语句插入数据到表中。

  2. VALUES子句:在INSERT语句中使用VALUES子句,指定要插入的值。

  3. 列名:在INSERT语句中指定要插入数据的列名,如果不指定列名,则必须插入所有可插入的列值。

SQL插入语句

//格式1(简化):
insert into 表名 values (值1,值2......值n);
//格式1-1(基本):
insert into 表名 values (值1,值2......值n),(值1,值2......值n);
//格式2(简化):
insert into 表名(字段1,字段2......) values(值1,值2.......);
//格式2-1(基本):
insert into 表名(字段1,字段2......) values(值1,值2.......),(值1,值2.......);

看一些练习

--在TBL_Bookinfo中插入图书信息表中A31、A32两条记录。
INSERT INTO library00.TBL_Bookinfo (BookID, ISBN,BookName) VALUES
('TP391.4/33', '7-81012-690-3','PowerPoint for Windows 95 使用指南'),
('TP391/62', '7-5053-3268-6','傻瓜多媒体与CD -- ROM');
--在TBL_User中插入三条记录。
INSERT INTO library00.TBL_User (UserID, UserName, Sex, Password, Email, Class) VALUES
('20201010110', '王小小', 0, '123456', '270005680@qq.com', '2020计算机应用1班'),
('20201010111', '张三', 1, '12345', 'zhoubaiban@07720163.com', '2020计算机应用1班'),
('20201010112', '李四', 1, '01234', '1307720163@qq.com', '2020计算机应用1班');
--删除TBL_User表中的王小小的信息。
DELETE FROM library00.TBL_User WHERE UserName = '王小小';

2.数据更新

达梦数据库的数据更新需要掌握以下几个方面:

  1. UPDATE语句:使用UPDATE语句更新表中的数据。

  2. SET子句:在UPDATE语句中使用SET子句,指定要更新的字段和新的值。

  3. WHERE子句:在UPDATE语句中使用WHERE子句,指定要更新的记录,可以根据某些条件来筛选要更新的数据。

SQL语句更新修改数据

//格式1(简化):
update 表名 set 字段名1=值1 where 条件表达式;
//格式1-1(基本):
update 表名 set 字段名1=值1,字段名2=值2,....字段值n=值n where 条件表达式;
//格式2(简化):
update 表名 set 字段名1=值1;
//格式2-1(基本):
update 表名 set 字段名1=值1,字段名2=值2,....字段值n=值n;

3.数据删除

达梦数据库的数据删除需要掌握以下几个方面:

  1. DELETE语句:使用DELETE语句删除表中的数据。

  2. WHERE子句:在DELETE语句中使用WHERE子句添加删除数据的条件,限制要删除的数据。

  3. 表关系:在有关联关系的表中删除数据时需要注意处理好关联关系,可以采用设置外键约束、级联删除或者手动处理等方式。

SQL语句删除数据

--格式1:
delete from 表名 where 条件表达式;
--格式2:
delete from 表名;
--格式3(清空):
truncate table 表名;

举例子:

--1.在图书信息表中,插入电子表格中第A33至A40行中的数据;
insert into library00.TBL_Bookinfo (BookID,ISBN,BookName) values ('C931.6/14','7-5624-0265-5','信息系统开发方法及原理');
insert into library00.TBL_Bookinfo (BookID,ISBN,BookName) values ('TP391/59','7-5608-0833-6','IBM-PC汉字信息处理');
insert into library00.TBL_Bookinfo (BookID,ISBN,BookName) values ('TP391/60','7-5028-1029-3','电脑打字版正误100例');
insert into library00.TBL_Bookinfo (BookID,ISBN,BookName) values ('TP312BA/52','7-5357-1050-6','计算机基础');
insert into library00.TBL_Bookinfo (BookID,ISBN,BookName) values ('TP316/68','7-5427-0475-3','PC-DOS 4.00磁盘操作系统技术参考手册');
insert into library00.TBL_Bookinfo (BookID,ISBN,BookName) values ('TP316.7/14','7-302-00856-6','Windows 3.0用户指南');
insert into library00.TBL_Bookinfo (BookID,ISBN,BookName) values ('TP312dB/3a','7-302-01057-9','中文dBASE全自动编程系统Auto-dBASE');
insert into library00.TBL_Bookinfo (BookID,ISBN,BookName) values ('TP391/58','7-310-00976-2','PC多媒体技术');
--2.在读者表中插入自己的信息;
insert into library00.tbl_user (UserID,UserName,Sex,Password,Email,class) values ('20220306308','徐赛',0,'7','2727947028@qq.com','计算机应用技术1班');
--3.将书名为“计算机基础”的作者改为“甘利发”;
update library00.TBL_Bookinfo set Author='甘利发' where BookName='计算机基础';
--4.删除出版社是“清华大学出版社”的记录。
delete from library00.TBL_Bookinfo where Publisher='清华大学出版社';
--5.在图书信息表中,插入你正在使用的教材信息,图书编号为“TP0001”;
insert  into library00.TBL_Bookinfo (BookID,ISBN,BookName,Author,PublishDate,BookVersion,WordCount,PageCount,Publisher,ClassId) values ('TP0001','7-301-050678-4','JAVA基础语言','丽丽','1994-05-01','',5700,665,'漓江出版社','B'),
--6.将图书编号“TP0001”的图书,将作者改为自己,出版社改为“火星出版社”,同时更新其它字段的数据(内容不限),除图书编号外。
update library00.TBL_Bookinfo set Author='徐赛',Publisher='火星出版社',PublishDate='2021-01-01',BookVersion='',WordCount=212100,PageCount='150',ClassId='F' where BookID='TP0001';

  • 达梦数据库单表查询

1.基础查询

达梦数据库的基础查询需要掌握以下几个方面:

  1. SELECT语句:使用SELECT语句查询数据表中的数据。

  2. FROM子句:在SELECT语句中使用FROM子句,指定要查询的数据表。

  3. WHERE子句:在SELECT语句中使用WHERE子句,添加筛选条件来限制查询结果。

  4. SELECT列表:在SELECT语句中使用SELECT列表来指定要查询的列,使用*可以查询全部列。

  5. 排序:使用ORDER BY子句来按照指定的列排序,使用ASC或DESC关键字来指定升序或降序。

--1.查询TBL Bookinfo 表中所有图书信息
SELECT * FROM library00.TBL_Bookinfo;
--2.查询TBL User 表中所有读者信息。
SELECT * FROM library00.TBL_User;
--3.查询TBL Bookinfo 表中所有图书的索引号、标准编号、书名
SELECT ISBN,BookID, BookName FROM library00.TBL_Bookinfo;
--4.查询TBL User 表中读者编号、姓名及班级。
SELECT UserID, UserName, Class FROM library00.TBL_User;
--5.查询TBL Bookinfo 表中所有图书的索引号、标准编号、书名,并用中文显示列名
SELECT ISBN as 索引号,BookID as 标准编号,BookName as 书名 FROM library00.TBL_Bookinfo;

2.条件查询

达梦数据库的条件查询需要掌握以下几个方面:

  1. WHERE子句:使用WHERE子句过滤数据,只返回符合条件的记录。

  2. 运算符:使用比较运算符(如=、<、>、<=、>=、<>等)和逻辑运算符(如AND、OR、NOT等)来组合多个条件。

  3. 通配符:使用通配符(如%、_等)来模糊匹配数据,扩展查询范围。

  4. 顺序和优先级:使用括号来控制条件表达式的顺序和优先级。

 例子:

--1.在TBL_BookInfo中找出页数大于100页并且小于200页的书(分别用比较运算符和BETWEEN两种方法实现)
select * from library00.TBL_Bookinfo where PageCount > 100 and PageCount < 200;
select * from library00.TBL_Bookinfo where PageCount between 101 and 199;
--2.在TBL_Bookinfo表中查询所有“清华大学出版社”出版的书的书名, 作者及出版日期。
select BookName,Author,PublishDate from library00.TBL_Bookinfo where Publisher='清华大学出版社';
--3.从TBL_Bookinfo表中检索出不是电子工业出版社和清华大学出版社出版的图书。
select * from library00.TBL_Bookinfo where Publisher not in ('电子工业出版社','清华大学出版社');
--4.在TBL_Bookinfo显示“中国古代教育文选”和“德国近代文学史”两本书的信息。
select * from library00.TBL_Bookinfo where BookName in ('中国古代教育文选','德国近代文学史');
--5.在TBL_Bookinfo显示“清华大学出版社”在1980后出版图书的书名,作者,页数。
select BookName,Author,PageCount from library00.TBL_Bookinfo where Publisher in('清华大学出版社','1980-01-01');
--6.在TBL_BookInfo中检索书名中有”工程”两个字的图书的书名,出版社,作者及出版日期。
select BookName,Publisher,Author,PublishDate from library00.TBL_Bookinfo where BookName like '%工程%';
--7.在TBL_BookInfo中找出书名中带有“学”字,但又不带有“中学”二字的书。
select * from library00.TBL_Bookinfo where BookName like '%学%' and BookName not like '%中学%';
--8.在TBL_User表中找出不姓“蒋”并且名字是3个字的男生。
select * from library00.tbl_user where UserName not like '%蒋%' and Username like '___' and sex=1;
--9.在TBL_BookInfo表中将空字符串的版本号修改为空。
update library00.TBL_Bookinfo set BookVersion=null where BookVersion='';
--10.在TBL_BookInfo查询版本号不为空的记录。
select * from library00.TBL_Bookinfo where BookVersion is not null;
--11.在TBL_BookInfo查询版本号为空的记录同时页数大于200的图书信息。
select * from library00.TBL_Bookinfo where (BookVersion is null or BookVersion='') and PageCount > 200;

3.高级查询

 例子:

--1.在TBL_User表中检索所有的班级,去除重复值。

select distinct class from library00.tbl_user;

--2.TBL_Bookinfo显示所有书的书名,出版社、出版日期,并按出版日期升序排列;

select bookname,publisher,publishdate from library00.tbl_bookinfo order by publishdate asc;

--3.从TBL_Bookinfo表中检索1990至2000年出版的图书信息,并按出版日期降序排列。

select * from library00.tbl_bookinfo where publishdate>='1990-01-01' and publishdate<='2000-12-31' order by publishdate desc;

--4.按出版社的降序和出版日期的升序检索TBL_Bookinfo表的记录。

select * from library00.tbl_bookinfo order by publisher desc ,publishdate asc;

--5.查询最薄的5本图书。

select * from library00.tbl_bookinfo order by pagecount asc limit 5;

--6.查询最新的10本书。

select * from library00.tbl_bookinfo order by publishdate asc limit 10;

--7.查询借阅表中第11-20行记录。

select * from library00.tbl_user limit 10,10;

--8.在TBL_User表中检索用户名,去掉重复值,取最前面的5个用户名。

select distinct username from library00.tbl_user limit 5;

--9.从TBL_ User 表中检索出最前面的3个姓’黄’的用户记录的借书证号,姓名,性别。

select userid,username,sex from library00.tbl_user where username like'%黄%' order by userid asc;

--10.显示每本书书名、作者、出版社、出版日期及至今的年限。

select bookname ,author,publisher,publishdate, year(now())-year(publishdate) as 年限 from library00.tbl_bookinfo;

--11.从TBL_Bookinfo 表查询图书的总册数。

select count(*)from library00.tbl_bookinfo;

4.分组查询

达梦数据库的分组查询需要掌握以下几个方面:

  1. GROUP BY子句:在SELECT语句中使用GROUP BY子句,指明需要分组的列。

  2. 聚合函数:在SELECT语句中使用聚合函数对分组后的数据进行计算,如SUM、AVG、MAX、MIN、COUNT等。

  3. HAVING子句:在GROUP BY子句之后,使用HAVING子句进行条件过滤,只显示满足条件的分组结果。

  4. 多个分组:可以在GROUP BY子句中同时指定多个列,实现多个维度的分组查询。

 例子:

  • 达梦数据库多表查询

1.连接查询

连接查询:通过连接两个或多个表,实现数据的联合查询。达梦数据库支持INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN等多种连接方式。

达梦数据库支持多种连接查询,包括内连接、外连接、自连接等。下面分别进行介绍:

  1. 内连接:内连接是指查询两个表中匹配的行。内连接可以使用JOIN或者WHERE子句来实现。例如:
SELECT a.emp_id, a.emp_name, b.dept_name
FROM employees a
JOIN departments b
ON a.dept_id = b.dept_id;

这条语句的作用是:查询employees表和departments表中,找到dept_id相同的行,将其join在一起,输出emp_id、emp_name、dept_name三个列。

  1. 外连接:外连接包括左外连接、右外连接和全外连接。外连接可以展示没有匹配的行。例如:
SELECT a.emp_id, a.emp_name, b.dept_name
FROM employees a
LEFT JOIN departments b
ON a.dept_id = b.dept_id;

这条语句的作用是:查询employees表和departments表中,找到dept_id相同的行,将其join在一起,输出emp_id、emp_name、dept_name三个列。与内连接不同的是,左外连接会将employees表中没有匹配的行也输出。

  1. 自连接:自连接是指表与自身进行连接,通常用于需要查询对比相邻记录的场景。例如:
SELECT a.emp_id, a.emp_name, b.emp_name as manager_name
FROM employees a
LEFT JOIN employees b
ON a.manager_id = b.emp_id;

这条语句的作用是:查询employees表中,每个员工和其对应的经理,其中manager_id是emp_id的外键。自身外连接和普通的外连接用法类似。

连接查询是一种强大的数据库查询手段,可以在不同的表之间建立关联关系,满足复杂的业务查询需求。在使用连接查询时,需要考虑性能问题,尽量优化SQL语句,减少不必要的数据扫描和数据传输。

2.子查询

子查询:在查询语句中嵌套一个查询语句,用于处理复杂的查询逻辑。

达梦数据库支持子查询,也称为内部查询或嵌套查询,是一种在一个主查询内嵌套了一个子查询的查询方式。主查询和子查询是相互独立的查询,但是可以通过关联条件进行关联。子查询可以嵌套多层,但是不建议使用过多的子查询,以免影响查询的性能。

子查询常用于以下场景:

  1. 在WHERE子句中使用子查询作为条件进行过滤。
SELECT emp_id, emp_name, emp_age, dept_id
FROM employees
WHERE dept_id IN ( SELECT dept_id FROM departments WHERE dept_name = 'Sales');

这条语句的作用是:查询表employees中,部门为Sales的员工信息。

  1. 在SELECT语句中嵌套子查询查询计算新列值。
SELECT emp_id, emp_name, emp_age, 
       (SELECT AVG(emp_age) FROM employees) AS avg_age
FROM employees;

这条语句的作用是:查询表employees中,每个员工的emp_id,emp_name,emp_age以及所有员工的平均年龄avg_age。

  1. 在FROM子句中使用子查询作为数据源进行连接查询。
SELECT a.emp_id, a.emp_name, b.dept_name
FROM 
(SELECT emp_id, emp_name, dept_id FROM employees WHERE dept_id = 1) a
JOIN departments b
ON a.dept_id = b.dept_id;

这条语句的作用是:查询表employees中,部门编号为1的员工和其所在部门的名称。

注意,子查询不一定总是比连接查询更快,需要灵活选择具体查询方式。另外,如果子查询嵌套太深,会导致查询性能下降,因此需要适度使用。

  • 学习总结

学习达梦数据库需要掌握以下几个方面:

  1. 数据库基础知识:了解数据库的基本概念、对象、范式、数据模型、事务、锁等知识点,这是学习任何一种数据库的前提。

  2. 达梦数据库的特点和用途:了解达梦数据库的特点,比如高性能、高可靠、高安全性,以及其在不同领域的应用,如金融、电信、政务等。

  3. 达梦数据库的实现:深入学习达梦数据库的体系结构、存储结构、索引技术、查询优化等关键技术,理解其实现原理以便更好地使用和管理。

  4. 数据库管理和运维:掌握数据库的安装、配置、备份、恢复、优化、调试等管理和运维知识,以确保数据库的高效、稳定运行。

总的来说,学习达梦数据库需要不断地实践、思考、总结,多做项目、多尝试,才能够真正掌握其精髓。

课程总结:

在本次关于达梦数据库的学习中,我们学习了数据库的基本概念、关系型数据库的特点、SQL语言的基本内容,以及达梦数据库的基本管理操作,包括用户管理、表空间管理、连接查询和子查询等。

在数据库方面,我们了解了数据的组织形式、数据库管理系统(DBMS)的作用和使用,以及数据库语言SQL的基本语法和类型。我们还学习了关系数据库的基本概念,包括实体、关系、属性、键等,以及关系型数据库的特点和操作手段。

在达梦数据库的管理方面,我们掌握了用户管理、表空间管理、连接查询和子查询等操作,通过实际操作和示例代码,了解了这些操作的具体步骤和技巧。我们还学习了如何优化SQL查询语句,以提高查询性能和效率。

综上所述,本次学习内容丰富、深入浅出,为我们打下了坚实的数据库基础,帮助我们更好地理解和应用数据库技术。

  • 10
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酸奶酸奶酸奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值