day06:

任务:

1、掌握数据表的创建、修改、删除
2、完成数据表约束创建和管理
3、掌握达梦数据库基础增、删、改、查语句
4、实现将VSPACE项目测试数据导入到对应表中

1、数据表的创建、修改、删除

在学习之前,先了解一些达梦数据库的基础知识。第一,基础概念如表列行。表是数据库中用于存放同一类实例数据的逻辑概念;列也叫做表的字段,和实体属性相对应;每一行对应了一个具体的实体数据。
第二,数据类型
常见数据类型如下:

整型
1.int
2.bigint
3.tynyint
小数类型
1.dec/decimal(m,n)
2.number
3.double
4.float
字符串类型
1.char(n)
2.varchar(n)
日期时间类型
1.timestamp
2.datetime
大对象类型
1.text (存放大量字符串,字符串长度最大为2G-1)
2.clob (存放变长字符串2G-1字节)
3.blob (存放变长二进制大对象2G-1字节)

创建表
由于GUI模式较为简洁,我只记录SQL指令创建的步骤

--创建表
create table 表名 (
	列名 数据类型 [约束]
);
--举例
create i_student(
	stu_no int not null primary key,
	stu_name varchar(20) not null 
);

修改表、删除表

--修改表,插入新的列
alter table i_student add column("sex" char(5) not null);
--修改表,删除列
alter table i_student drop column "sex";
--修改表中的数据类型
alter table i_student modify "sex" varchar(10);
--删除表
drop table i_student restrict;

2、 数据表约束创建与管理

1、约束的概念
a) 约束是为了确保数据完整性而设订的一系列规则;
b)完整性包含了准确性和有效性
2、约束的类型
a)非空约束
b)主键约束
c)外键约束
d)唯一键约束
e)Check约束

创建约束

alter table "模式"."表" add primary key(主键列名);
alter table "模式"."表" add constraint 约束名 primary key ("主键列名");
alter table "模式"."表" add constraint 约束名 foreign key ("外键列名"),references "主表名" ("主键列名");
alter table "模式"."表" add constraint  约束名 check(检查约束表达式);
--删除约束
alter table "模式"."表" drop constraint "约束名称";

数据库增删改查

--插入单条数据
insert into 表 [(列1,列2,...)] values (值1,值2 ...);
--插入多条数据
insert into i_student values (1002,'mike'),(1003,'jack');
--插入多条数据(先创建新表tab)
insert into tab select stu_name from i_student;
--创建新表并从其他数据表查询数据插入到新表中
create table stul as select stu_no,stu_name from i_student;
--删除数据
delete from 表 [where 条件]
--修改数据
update 表 set 列1=值1,...,列n=值n [where 条件]
--查询数据
select 列名1,列名2,...列名n from 表 [where]
select * from 表 [where ] (查询所有列)

day07:

任务

1、完成项目基本查询功能
2、掌握函数分类和使用方式
3、掌握多表联查相关操作
4、掌握子查询的使用方法

基本查询
1、基础语法结构

select 列 from 表 [where][group by][having][order by]

2、条件查询常用表达式

a)查询中使用别名 b)关系用算符:> < = != >= <= c)逻辑运算符:and not or d)范围运算:
1、关系与逻辑运算组合 2、between… and 3、in (值1,…,值n) e)模糊查询-k
i、like
ii、 %和_在模糊查询中的作用:
%可以代表任意长度字符,_只代表一个字符

3、查询分组、多列分组、聚合函数

sum()
count()
max()
min()
avg()

4、筛选分组条件
having
5、查询排序
order by 分组列名列表
6、分页查询

a) top分页

> select top 每页显示条数 列名 from 表 where id not in (
> select top (页数-1)*每页条数 id from 表);

b) limit分页

>  select 列名 from 表 limit (页数-1)*每页条数,每页显示条数

伪列分页
rownum

>  select t.列名 from (select rownum num,列名 from 表 where rownum< maxvalue) t where num>minvalue;

例题:

--查询价格在50-100之间的商品信息
select * from i_goods where price between 50.0 and 100.0;
--查询商品标题中包含“肉”的商品信息
select * from i_goods where goods_title like '%肉%'
--查询购买订单数量超过11个的用户手机号码
select phone,count(ammount) as 数量
from i_order group by phone having count(ammount)>11;
--分页查询、每页显示3条数据、显示第五页的数据
--top:
select top 3 * from i_goods where
goods_id not in (select top 12 goods_id from i_goods);
--limit:
select * from i_goods limit 12,3;
--伪列:
select * from (select rownum num from i_goods where rownum<15) t where t.num>12);

函数
1、字符串函数
2、数学函数
3、日期函数
4、类型转换函数

我觉得函数的很多用法许多语言都类似,这里就不一一列举了,在具体情况里使用具体的函数即可。

多表联查
1、笛卡儿集查询

select 列名 from 表1,表2;

2、内联接查询

select 列名 from 表1,表2 where 两表关联列调节表达式;
select 列名 from 表1 inner 表2 join on 两表关联列条件表达式;

3、外联接查询
a)左外联

select 列名 from 表1 left outer join 表2 on 两表关联列表达式 ;
b)右外联
select 列名 from 表1 right outer join 表2 on 两表关联列表达式;

day08:

子查询
where子句子查询:
将一个查询的结果作为另一个查询或更新操作的条件

select 列名 from 表名 where 条件列 = | in | not in (子查询);

from 子句子查询:将一个查询结果看作一张虚拟表提供给其他查询使用

select 列名 from (子查询) 临时表名 [其他条件];

select子句子查询:将一个查询的结果和其他查询结果进行组合

select 列名,(子查询) from 表名 [其他条件];

例题:

--查询球队赛程信息表:比赛时间,主队名称,比赛结果
--联查
select S.GAME_DATE,H.TEAM_NAME 主队,G.TEAM_NAME 客队,S.HOST_SCORE,S.GUEST_TEAM
from G_SCHEDULE S,G_TEAM H,G_TEAM G
where S.HOST_TEAM=H.TEAM_ID and S.GUEST_TEAM=GTEAM_ID;
--子查询
select GAME_DATE,(select TEAM_NAME from G_TEAM where HOST_TEAM=TEAM_ID) 主队,
(select TEAM_NAME from G_TEAM where GUEST_TEAM=TEAM_ID) 客队,
HOST_SCHORE,GUEST_SCORE from G_SCHEDULE;

day09:
视图与索引

create view 视图名
as
select 列 from 表 where 条件 [其他];
--例题
--创建视图用于查询最近10条信息,要求显示订单、商品标题
--商品编号、商品单价、商品数量、订单日期、订单总价
create view "test1" as 
select order_id,goods_title,price,o.ammount,order-date,
sum_Price from i_order o,i_goods g
where o.goods_id=g.goods_id order by order_date desc limit 0,10;

create index "索引名" on 表名(列名) ;

备份还原:
1、脱机备份
在实例关闭的情况下进行
2、联机备份
在实例开启的情况下进行
3、增量备份
需要有完整的备份集作为基备份集

还原的过程需要严格安照:还原、恢复、更新进行

day10:
导入导出
dexp与dimp在dm8下的bin目录下

--库级别导出导入
dexp USERID=SYSDBA/123456789@192.168.xxx.xxx:5236 FILE=db_库名.dmp LOG=日志名_exp.log DIRECTORY=/dm8/exp FULL=Y
dimp USERID=SYSDBA/123456789@192.168.xxx.xxx:5237 FILE=db_库名.dmp LOG=日志名_imp.log DIRECTORY=/dm8/exp FULL=Y
--用户级别导出导入
dexp USERID=SYSDBA/123456789@192.168.xxx.xxx:5236 FILE=db_库名.dmp LOG=日志名_exp.log DIRECTORY=/dm8/exp OWENR=VSPACE
dimp USERID=SYSDBA/123456789@192.168.xxx.xxx:5237 FILE=db_库名.dmp LOG=日志名_imp.log DIRECTORY=/dm8/exp OWENR=VSPACE
--库级别导出导入
dexp USERID=SYSDBA/123456789@192.168.xxx.xxx:5236 FILE=db_库名.dmp LOG=日志名_exp.log DIRECTORY=/dm8/exp SCHEMAS=VSPCAE
dimp USERID=SYSDBA/123456789@192.168.xxx.xxx:5237 FILE=db_库名.dmp LOG=日志名_imp.log DIRECTORY=/dm8/exp SCHEMAS=VSPACE
--表级别导出导入
dexp USERID=SYSDBA/123456789@192.168.xxx.xxx:5236 FILE=db_库名.dmp LOG=日志名_exp.log DIRECTORY=/dm8/exp TABLE=VSPACE.STU.VSPACE.STUDENT
dimp USERID=SYSDBA/123456789@192.168.xxx.xxx:5237 FILE=db_库名.dmp LOG=日志名_imp.log DIRECTORY=/dm8/exp FULL=VSPACE.STU.VSPACE.STUDENT

作业管理:

通过DM管理工具操作即可

odbc插件安装测试

安装gcc yum install gcc
 下载 unixODBC-2.3.0.tar.gz
 将压缩包上传到服务器
 解压:tar -zxvf unixODBC-2.3.0.tar.gz
 进入解压目录 cd unixODBC-2.3.0/
 配置 /congifure --enable-gui=no
 翻译 make
 安装 make install
 检查安装情况 odbcinst -j
 配置odbc配置文件 进入安装目录 cd /user/local/etc/
 配置odbc.ini:[dm8] Driver=mydriver SERVER=192.168.X.X UID=SYSDBA PWD=***********,TCP_PORT=5236
 配置odbcinst.ini [mydriver] Driver =/dm8/bin/libdodbc.so
 测试连接 利用dmdba账户 isql dm8

jdbc连接开发基础测试
url=“jdbc:dm://IP:PORT/实例名称”
drier=“”