目录
说明:
产品特点
高性能
高可用
跨平台
高可扩展
低投入
简便易用
一、安装数据库:
二、创建数据库
三、DM7的体系结构
四、 Dmsql
1.简单查询
2.过滤查询
3、多表联接查询
达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。达梦数据库管理系统7.0版本,简称DM7。
DM7是达梦公司在总结DM系列产品研发与应用经验的基础之上,吸收主流数据库产品的优点,采用类JAVA的虚拟机技术设计的新一代数据库产品。DM7基于成熟的关系数据模型和标准的接口,是一个跨越多种软硬件平台、具有大数据管理与分析能力、高效稳定的数据库管理系统。DM7采用全新的体系架构,在保证大型通用的基础上,针对高可用性、高性能、高安全性、易用性和兼容性做了大量的研发和改进工作,极大提升了达梦数据库产品的性能、语言丰富性、可扩展性,能同时兼顾OLTP和OLAP请求,从根本上提升了DM7产品的品质。众多的企业级特性的实现使得DM7完全能够满足大、中型企业以及金融、电信等核心业务系统的需要,是理想的企业级数据管理与分析服务平台。
支持“大数据”应用,采用DM Vertical和DM HFS双列存储引擎、粗粒度智能索引、并行查询、多级数据分区、物化视图、分析函数、位图连接索引等先进技术,满足海量数据联机分析处理(OLAP)需求,支持多机多核智能双向并行加载,客户端数据智能分发。
采用智能高压缩技术,压缩比可达1:20,能显著减少存储开销,从而帮助客户大幅减少数据库整体投入成本。
可配置数据守护系统(主备),自动快速故障恢复,具有强大的容灾处理能力。
跨平台,支持主流软硬件体系、支持主流标准接口。
支持拓展软件包和多种工具,实现海量数据分析处理、共享数据库集群(RAC)和无共享数据库集群(MPP)等扩展功能TB/PB级数据分析秒级响应。
基于高端服务器或普通服务器搭建,支持异构系统,超高性价比。
易于实施和管理,只需要传统数据库 1/10 的管理成本,与主要商业智能工具兼容
1.下载数据库:从达梦官网下载所需的数据库安装包【下载需要注册登录账户】 www.dameng.com
2. 安装:
通过以下命令,挂载光驱:
mount -o loop /installdoc/dm7_setup.iso /mnt
执行安装:
cd /mnt
ls
./DmInstall.bin
执行dbca.sh命令:
dbca.sh
实例:共享内存+后台的进程或是线程
数据库:存放到磁盘的文件
一般一个db对应一个实例,但是DSC(共享集群)多个实例对一个数据库。
达梦服务器组成:
客户端+服务器(实例+数据库)
客户端不能直接去访问数据库,客户端把请求交给实例,实例去访问数据库,把访问信息返回给实例,实例交给客户端。
SQL:结构化查询语言
DDL: 定义 create drop alter truncate
DML: 管理 select update delete insert
DCL:控制 grant revoke
TCL:事务控制:commit rollback
语法:select () from ()
第一个括号:*,column_name,alias,expr,||,distinct
第二个括号:table_name
Select * from city
Select city_name,city_id from city;
Select city_name cn,city_id from dmhr.city;
Select employee_name,salary as tol from dmhr.employee limit 10;
SELECT employee_name||’的工资是:’||salary as desc1 from dmhr.employee limit 10;
SQL> select distinct department_id from dmhr.employee;
语法:select () from () where ();
第三个括号:过滤条件。
> ,<, >=,<= , !=
And or
select employee_name,salary from dmhr.employee where
employee_name='马学铭' or employee_name='苏国华'
select employee_name,salary from dmhr.employee where
employee_name in ('马学铭','苏国华')
模糊查询 like
%:代表0个或是多个
_:代表1个
select employee_name,salary from dmhr.employee where
employee_name like '马%'
IS NULL /IS NOT NULL
select employee_name,commission_pct from dmhr.employee where commission_pct is not null limit 10;
Between ...and 介于两者之间包括边界值
select employee_name,salary from dmhr.employee where salary between 20000 and 30000;
等价转换
>= and <=
select employee_name,salary from dmhr.employee where (salary >=20000) and (salary<=30000);
排序
Desc 降序 asc升序
select employee_name,salary from dmhr.employee order by salary asc;
语法:select() from () join() on().
第三括号:表名
第四个括号:关联字段
内连接
自然连接:
select e.employee_name,d.department_name from dmhr.employee e natural join dmhr.department d limit 10;
Using
select e.employee_name,d.department_name from dmhr.employee e natural join dmhr.department d limit 10;
select e.employee_name,d.department_name from dmhr.employee e join dmhr.department d using (department_id) limit 10;
select e.employee_name,d.department_name from dmhr.employee e join dmhr.department d on e.department_id=d.department_id limit 10;
外连接
左外连接
把写在left join左边的全部显示,右边的只显示满足条件的,不满足条件的用null代替。
select e.employee_name,d.department_name from dmhr.employee e left join dmhr.department d
on e.department_id=d.department_id where e.employee_name like '陶健%';
insert into
dmhr.employee(employee_id,employee_name,identity_card,email,hire_date,
job_id,salary,commission_pct,manager_id) values(
'11535','陶健111','430101197606309000','[email protected]',
'2009-03-27','52','9787','0','1005')
右外连接:
把写在right join右边的全部显示出来,左边的只显示满足条件的,不满足条件的用Null代替。
select e.employee_name,d.department_name from dmhr.employee e right join dmhr.department d on e.department_id=d.department_id
全外连接:
select e.employee_name,d.department_name from dmhr.employee e full join dmhr.department d on e.department_id=d.department_id
返回所有记录,包括不满足条件的。
左外连接和右外连接的合集 全外=左外 union 右外。
1.查询两表关联列相等的数据用内连接。
2.COL_L是col_R的子集的时候用右外连接
3.Col_R 是col_L的子集的时候用左外连接
4.Col_R和col_L彼此有交集,但是彼此不互为子集的时候用全外。
Insert into
Delete
Update
4、分组查询:
语法:select 聚合函数() from () group by () having ()
Sum avg max min count
算出各个部门的平均工资?并且将平均工资大于10000;找出来。
SQL> select avg(salary) from dmhr.employee group by department_id having avg(salary)>10000;
算出各个部门的工资和,找出部门工资和大于200000的部门。
SQL> select sum(salary) from dmhr.employee group by department_id having sum(salary)>200000;
5、子查询
子查询的结果是主查询的条件,子查询先于主查询运行。
1、返回值是唯一的:
Select () from () where ()=()
查出马学铭所在部门的所有员工。
select employee_name,department_id from dmhr.employee where department_id=(select department_id from dmhr.employee where employee_name=' 马学铭');
2、返回值是多行的
语法:select () from () where ()>|
All >all (max)
Any >any(min)
找出比1002部门工资都高的人
select employee_name,department_id,salary from dmhr.employee where salary >all(select salary from dmhr.employee where department_id=1002);
select employee_name,department_id,salary from dmhr.employee where salary >any(select salary from dmhr.employee where department_id=1002);
In 把子查询运行完,在运行主查询。
Exsits 先运行子查询,如果有满足条件的,去运主查询。