day06:
1、掌握数据表的创建、修改、删除
2、完成数据表约束创建和管理
3、掌握达梦数据库基础增、删、改、查语句
4、实现将VSPACE项目测试数据导入到对应表中
在学习之前,先了解一些达梦数据库的基础知识。第一,基础概念如表列行。表是数据库中用于存放同一类实例数据的逻辑概念;列也叫做表的字段,和实体属性相对应;每一行对应了一个具体的实体数据。
第二,数据类型
常见数据类型如下:
整型
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;
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=“”