当前位置:文档之家› SQL常见的约束语法

SQL常见的约束语法

SQL常见的约束语法
SQL常见的约束语法

常用五类约束:

not null:非空约束,指定某列不为空

unique:唯一约束,指定某列和几列组合的数据不能重复

primary key:主键约束,指定某列的数据不能重复、唯一

foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据

check:检查,指定一个表达式,用于检验指定数据

MySQL不支持check约束,但可以使用check约束,而没有任何效果;

根据约束数据列限制,约束可分为:

单列约束:每个约束只约束一列

多列约束:每个约束约束多列数据

MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息;

1、not null约束

非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。

Null类型特征:

所有的类型的值都可以是null,包括int、float等数据类型

空字符串“”是不等于null,0也不等于null

create table temp(

id int not null,

name varchar(255) not null default…abc?,

sex char null

)

上面的table加上了非空约束,也可以用alter来修改或增加非空约束

增加非空约束

alter table temp

modify sex varchar(2) not null;

取消非空约束

alter table temp modify sex varchar(2) null;

取消非空约束,增加默认值

alter table temp modify sex varchar(2) default…abc? null;

2、unique

唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。虽然唯一约束不允许出现重复的值,但是可以为多个null

同一个表可以有多个唯一约束,多个列组合的约束。在创建唯一约束的时候,如果不给唯一约束名称,就默认和列名相同。

唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。

MySQL会给唯一约束的列上默认创建一个唯一索引;

create table temp (

id int not null,

name varchar(25),

password varchar(16),

--使用表级约束语法,

constraint uk_name_pwd unique(name, password)

);

表示用户名和密码组合不能重复

添加唯一约束

alter table temp add unique(name, password);

alter table temp modify name varchar(25) unique;

删除约束

alter table temp drop index name;

3、primary key

主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值;如果的多列组合的主键约束,

那么这些列都不允许为空值,并且组合的值不允许重复。

每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别上创建。MySQL 的主键名总是PRIMARY,

当创建主键约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。

列模式:

create table temp(

/*主键约束*/

id int primary key,

name varchar(25)

);

create table temp2(

id int not null,

name varchar(25),

pwd varchar(15),

constraint pk_temp_id primary key(id)

);

组合模式:

create table temp2(

id int not null,

name varchar(25),

pwd varchar(15),

constraint pk_temp_id primary key(name, pwd)

);

alter删除主键约束

alter table temp drop primary key;

alter添加主键

alter table temp add primary key(name, pwd);

alter修改列为主键

alter table temp modify id int primary key;

设置主键自增

create table temp(

id int auto_increment primary key,

name varchar(20),

pwd varchar(16)

);

auto_increment自增模式,设置自增后在插入数据的时候就不需要给该列插入值了。

4、foreign key约束

外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。

也就是说从表的外键值必须在主表中能找到或者为空。

当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表中依赖该记录的数据,

然后才可以删除主表的数据。还有一种就是级联删除子表数据。

注意:外键约束的参照列,在主表中引用的只能是主键或唯一键约束的列,假定引用的主表列不是唯一的记录,

那么从表引用的数据就不确定记录的位置。同一个表可以有多个外键约束。

创建外键约束:

主表

create table classes(

id int auto_increment primary key,

name varchar(20)

);

从表

create table student(

id int auto_increment,

name varchar(22),

constraint pk_id primary key(id),

classes_id int references classes(id)

);

通常先建主表,然后再建从表,这样从表的参照引用的表才存在。

表级别创建外键约束:

create table student(

id int auto_increment primary key,

name varchar(25),

classes_id int,

foreign key(classes_id) references classes(id)

);

上面的创建外键的方法没有指定约束名称,系统会默认给外键约束分配外键约束名称,命名为student_ibfk_n,

其中student是表名,n是当前约束从1开始的整数。

指定约束名称:

create table student(

id int auto_increment primary key,

name varchar(25),

classes_id int,

/*指定约束名称*/

constraint fk_classes_id foreign key(classes_id) references classes(id)

);

多列外键组合,必须用表级别约束语法:

create table classes(

id int,

name varchar(20),

number int,

primary key(name, number)

);

create table student(

id int auto_increment primary key,

name varchar(20),

classes_name varchar(20),

classes_number int,

/*表级别联合外键*/

foreign key(classes_name, classes_number) references

classes(name, number)

);

删除外键约束:

alter table student drop foreign key student_ibfk_1;

alter table student drop foreign key fk_student_id;

增加外键约束

alter table student add foreign key(classes_name, classes_number) references classes(name, number);

自引用、自关联(递归表、树状表)

create table tree(

id int auto_increment primary key,

name varchar(50),

parent_id int,

foreign key(parent_id) references tree(id)

);

级联删除:删除主表的数据时,关联的从表数据也删除,则需要在建立外键约束的后面增加on delete cascade

或on delete set null,前者是级联删除,后者是将从表的关联列的值设置为null。create table student(

id int auto_increment primary key,

name varchar(20),

classes_name varchar(20),

classes_number int,

/*表级别联合外键*/

foreign key(classes_name, classes_number) references

classes(name, number) on delete cascade

);

5、 check约束

MySQL可以使用check约束,但check约束对数据验证没有任何作用。

create table temp(

id int auto_increment,

name varchar(20),

age int,

primary key(id),

/*check约束*/

check(age > 20)

);

上面check约束要求age必须大于0,但没有任何作用。但是创建table的时候没有任何错误或警告。

达梦数据库安装部署

达梦数据库安装部署文档 一.数据库安装过程 1. Windows环境安装 基本上就是下一步下一步,按照默认安装就好,安装路径根据自己的要求选择。在利用我们的数据库配置助手dbca工具初始化库的过程中,需要将下图红色框选部分改为如图所示即可。详细的安装细节可以参考我们的文档。 注意:页大小除去Clob、Blob等大字段外,数据库中一行记录的所有字段的实际长度的和不能超过页大小的一半; 日志文件的大小数据库redo日志文件的大小(正式环境一般设置为2048); 字符串比较大小写敏感默认为大小写敏感的,根据具体情况进行设置; 建议:在开发环境和测试环境的页大小、字符串大小写敏感这两个参数一 定要保持一致,不然当涉及到用.bak文件还原的时候就会因这两个参数不 一致导致无法还原。 2. Linux环境安装 在中标麒麟的系统中打开一个终端窗口,通过命令:ulimit –a查看,如下图所示: 如果open files这个参数的值为65536表示之前修改过,如果没有修改按照下面的方法进行修改。 Linux系统在安装之前先确认打开文件数的那个参数的设置情况,现在在中标麒麟的操作系统上安装我们DM7数据库,在使用我们的数据库配置助手dbca进行初始化数据库时经常会碰到“打开文件数过多的问题”。

解决办法如下: 用vim打开/etc/profile文件,在该文件最后加上一行ulimit -n 65536,(注意在添加的时候只需添加ulimit –n 65536即可,后面不需要标点符号。)然后重启服务器即可。修改好操作系统的打开文件这个参数后就可以按照下面的安装步骤进行安装了。 详细安装流程如下: (1)确定当前用户是不是root用户(在命令行窗口中输入: who am i),最 好在root用户下安装,否则有可能有些权限不够; (2)进入到我们安装文件所在的目录,并赋予它777权限(命令为:chmod 777 ; (3)执行安装 ./ –i (4)在安装的过程中按照提示一步一步操作,基本上选择默认的就可以了。 只有在时区的选择上注意选择中国的时区; (5)选好之后等待安装过程结束,会有相应的提示信息; (6)初始化库,切入到我们安装目录的bin目录,一般默认安装路径为 /opt/dmdbms/bin, 执行命令./dminit path=/opt/dmdbms/data page_size=16 log_size=2048 case_sensitive=n。当然如果我们能够 直接接触到服务器的话,也可以利用桌面上我们DMDBMS文件夹里面的 client文件夹里面有一个数据库配置助手初始化我们的数据库,使用方 法与Windows平台相同; (7)切入到到我们安装目录的bin目录,一般路径为/opt/dmdbms/bin, 在 该目录下有个dmserverd的文件,用vim打开这个文件后, 把这一行改为如上图所示的情况path=/opt/dmdbms/data/DAMENG/,然后保存退出。 (8)至此我们的数据库就已经安装配置完成了,现在我们可以切入到安装 目录的bin,路径为/opt/dmdbms/bin,执行命令 ./dmserverd start 就

达梦数据库集群选择及介绍

达梦数据库集群选择及介绍 武汉达梦数据库有限公司 2019年9月

版本历史

目录 1 达梦公司介绍 (1) 1.1核心研发能力 (1) 1.2运维保障能力 (2) 1.2.1 保障体系的组织方式 (2) 1.2.2 服务保障流程 (5) 2 数据库集群选择及介绍 (8) 2.1路线规划 (8) 2.2集群种类 (10) 2.2.1 达梦数据守护集群(DataWatch) (10) 2.2.2 达梦读写分离集群(DMRWC) (15) 2.2.3 达梦大规模并行处理框架(DMMPP) (18) 2.2.4 达梦数据共享集群(DMDSC) (23) 3 成熟案例介绍 (28) 3.1国家智能电网调度指挥系统D5000 (28) 3.2南方电网-OS2地级主站系统 (28) 3.3中航信在线事务处理系统 (29) 3.4中国铁建集团财务大共享系统 (29) 3.5海南社保 (30) 3.6南京公安警务平台系统 (30) 3.7江苏监狱管理局项目 (31) 3.8国家发改委-投资审批系统 (31) 3.9国家发改委-信用交换平台 (32)

1达梦公司介绍 达梦数据库有限公司成立于2000年11月,注册资金3637万,为国有控股的大型基础软件企业。其前身是华中科技大学数据库与多媒体研究所,是国内最早从事数据库管理系统研发的科研机构,得到国家各级政府的强力支持,是中国数据库标准委员会挂靠单位,湖北省数据库工程技术研究中心。在北京、石家庄、上海、广州、南宁、西安和成都等地设有分支机构。 达梦公司是国家规划布局内重点软件企业,首批获得国家“双软”认证的高新技术企业,专业从事数据库管理系统研发、销售和服务。公司管理规范,锐意进取,通过了国家保密局“涉及国家秘密的计算机信息系统集成软件单项资质”认证和工业信息化部“计算机信息系统集成资质二级”认证,并通过了国际IS09001质量体系和CMMI软件成熟度模型五级认证,AAA资信。 达梦人经过30年的努力拼搏,在学习、分析国际上众多优秀数据库产品的基础上原始创新,投入上千人年,耗资过亿,开发源代码上千万行,形成了具有完全自主知识产权的DBMS产品系列,先后完成了近80项国家级、省部级的科研开发项目,取得了50多项研究成果,皆为国际先进、国内领先水平,其中30多项获国家、省部级科技进步奖,在国内同行中处于领先地位。 达梦数据库是国内第一家通过国家安全三级认证,国内第一家通过10TB数据库容量测试的数据库产品,也是唯一通过中国人民解放军目前最高级别军B级认证的国产数据库。达梦数据库产品已成功用于我国国防军事、公安、安全、财政金融、电力、水利、审计、交通、信访、电子政务、税务、国土资源、制造业、消防、电子商务、教育等20多个行业及领域,装机量超过10万套,打破了国外数据库产品在我国一统天下的局面,取得了良好的经济效益和社会效益。 达梦数据库(DM)具有完全知识产权,是达梦人近30年的智慧、心力和汗水的结晶,是中国人的骄傲,必将为中国信息化做出贡献。 1.1核心研发能力 达梦数据库历来注重新的技术发展趋势和技术研发工作,工作70%以上人员为技术人员。DM7.0推出后,在国内数据库领域引起了强烈反响。在这一款产品上,达梦推出了目前

达梦数据库安装部署

达梦数据库安装部署集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

达梦数据库安装部署文档 一.数据库安装过程 1. Windows环境安装 基本上就是下一步下一步,按照默认安装就好,安装路径根据自己的要求选择。在利用我们的数据库配置助手dbca工具初始化库的过程中,需要将下图红色框选部分改为如图所示即可。详细的安装细节可以参考我们的DM7_Install_zh.pdf文档。 注意:页大小除去Clob、Blob等大字段外,数据库中一行记录的所有字段的实际长度的和不能超过页大小的一半; 日志文件的大小数据库redo日志文件的大小(正式环境一般设置为2048); 字符串比较大小写敏感默认为大小写敏感的,根据具体情况进行设置; 建议:在开发环境和测试环境的页大小、字符串大小写敏感这两个参数 一定要保持一致,不然当涉及到用.bak文件还原的时候就会因这两个参 数不一致导致无法还原。 2. Linux环境安装 在中标麒麟的系统中打开一个终端窗口,通过命令:ulimit –a查看,如下图所示: 如果open files这个参数的值为65536表示之前修改过,如果没有修改按照下面的方法进行修改。

Linux系统在安装之前先确认打开文件数的那个参数的设置情况,现在在中标麒麟6.0的操作系统上安装我们DM7数据库,在使用我们的数据库配置助手dbca进行初始化数据库时经常会碰到“打开文件数过多的问题”。 解决办法如下: 用vim打开/etc/profile文件,在该文件最后加上一行ulimit -n 65536,(注意在添加的时候只需添加ulimit –n 65536即可,后面不需要标点符号。)然后重启服务器即可。修改好操作系统的打开文件这个参数后就可以按照下面的安装步骤进行安装了。 详细安装流程如下: (1)确定当前用户是不是root用户(在命令行窗口中输入: who am i), 最好在root用户下安装,否则有可能有些权限不够; (2)进入到我们安装文件所在的目录,并赋予它777权限(命令为: chmod 777 DMInstall.bin); (3)执行安装 ./DMInstall.bin –i (4)在安装的过程中按照提示一步一步操作,基本上选择默认的就可以 了。只有在时区的选择上注意选择中国的时区; (5)选好之后等待安装过程结束,会有相应的提示信息; (6)初始化库,切入到我们安装目录的bin目录,一般默认安装路径为 /opt/dmdbms/bin, 执行命令./dminit path=/opt/dmdbms/data page_size=16 log_size=2048 case_sensitive=n。当然如果我们能够 直接接触到服务器的话,也可以利用桌面上我们DMDBMS文件夹里面的 client文件夹里面有一个数据库配置助手初始化我们的数据库,使用

达梦数据库性能测试软件操作

(1)创建用户benchmarksql/123456789,并开通权限。 (2)./runSQL.sh props.dm sqlTableCreates (3)./runLoader.sh props.dm numWAREHOUSES 10 (4)disql执行sqlSequenceCreate.sql,在数据库管理工具中执行。 (5)./runBenchmark.sh props.dm 备注:编辑props.dm, driver=dm.jdbc.driver.DmDriver conn=jdbc:dm://localhost:5236 user=benchmarksql password=123456789 warehouses=100 terminals=20 //To run specified transactions per terminal- runMins must equal zero runTxnsPerTerminal=0 //To run for specified minutes- runTxnsPerTerminal must equal zero runMins=60 //Number of total transactions per minute limitTxnsPerMin=0 //The following five values must add up to 100 //The default percentages of 45, 43, 4, 4 & 4 match the TPC-C spec newOrderWeight=45 paymentWeight=43 orderStatusWeight=4 deliveryWeight=4 stockLevelWeight=4 warehouses 是仓库建立库,增加内容,服务器一般可以建立100个。 Terminals是终端并发数量,服务器一般是建立20个。 Runmins是运行时间,服务器一般设置2小时。 Measured tpmc是测量每分钟tpmc即tpcc每分钟的吞吐量。按有效tpcc配置期间每分钟处理的平均交易次数测量。单位是tpmc,每分钟系统处理的新订单个数。

达梦数据库DM8集群代理使用手册-D

DM8 集群代理使用手册Service manual of DM8_DCP

前言 概述 本文档主要介绍DM 集群代理的架构、提供的功能、以及如何搭建和使用DM 集群代理。读者对象 本文档主要适用于DM 数据库的: ●开发工程师 ●测试工程师 ●技术支持工程师 ●数据库管理员 通用约定 在本文档中可能出现下列标志,它们所代表的含义如下: 表0.1 标志含义

在本文档中可能出现下列格式,它们所代表的含义如下: 表0.2 格式含义

目录 1DM8 集群代理简介 (1) 2体系架构 (2) 3功能模块管理 (3) 3.1集群配置 (3) 3.2代理管理 (4) 3.3连接池 (5) 3.4登录管理 (5) 3.5语句请求管理 (5) 4接口管理 (6) 4.1添加MPP 站点信息 (6) 4.2清除MPP 站点信息 (6) 4.3设置用户名和密码信息 (6) 4.4获取MPP 配置信息 (6) 4.5手动释放DCP 连接缓存 (7) 5动态视图管理 (8) 5.1V$SESSIONS (8) 5.2V$SYSSTAT (8) 5.3V$DCPINSTS (8) 5.4V$DCP_CONNPOOL (9) 6典型案例 (10) 6.1经典情景一:普通MPP 环境 (10) 6.2经典情景二:MPP 主备环境 (14) 6.3经典情景三:多个DCP 同时提供服务 (32)

1DM 集群代理简介 DM 集群代理(DM CLUSTER PROXY,简称DCP)是达梦数据库公司为其大规模并行处理集群DM MPP 研发的一款具有高效、智能、安全特性的集群代理服务器产品。 DM MPP 是达梦公司研发推出的完全对等无共享式集群,支持多个DM 节点。DM MPP 系统工作起来就像是一台单独的计算机,对外提供统一数据库服务。用户可连接DM MPP 系统内任意一个EP 节点进行数据操作。 DCP 是存在于应用和DM MPP 之间的一个组件。DCP 并不是一个必要组件。但是,用户使用DCP 后,可以大幅提高数据库的使用效率和系统的安全性。具体受益如下: 表1.1 使用DCP 的益处 目前版本的DCP 在使用上存在以下限制: ●不支持通讯加密 ●不支持快速装载工具 ●语句提交后,不支持再次获取结果集 ●DCP 配置仅支持一套MPP 环境

达梦数据库审计设置

达梦数据库审计设置 普通版和安全版的区别:安全版本在普通版本的基础上,还提供“四权分立”安全机制和强制访问控制安全管理功能。 1、用户识别与标记 PRIV_FLAG:启用四权分立。仅在安全版本下可见和可设置。四权分立新增数据库对象操作员账户 SYSDBO,其缺省口令为 SYSDBO SYSSSO用户可以制定安全策略,创建安全标记。 口令策略: PWD_POLICY: 0 无策略 1 禁止与用户名相同 2 口令长度不小于 9 4 至少包含一个大写字母(A-Z) 8 至少包含一个数字(0-9) 16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号) 设置密码策略:SP_SET_PARA_VALUE(1, 'PWD_POLICY',8); 禁用角色:SP_SET_ROLE('BOOKSHOP_ROLE1', 0); 2、审计 2.1、审计级别说明 DM 允许在三个级别上进行审计设置: 系统级:系统的启动与关闭,此级别的审计无法也无需由用户进行设置,只要审计开关打开就会自动生成对应审计记录 语句级:导致影响特定类型数据库对象的特殊SQL或语句组的审计。如 AUDIT TABLE 将审计 CREATE TABLE、ALTER TABLE 和 DROP TABLE 等语句 对象级:审计作用在特殊对象上的语句。如 test 表上的 INSERT 语句 2.2、审计开关 审计开关由 DM 的 INI 参数 ENABLE_AUDIT 控制,有三种取值: 0:关闭审计 1:打开普通审计 2:打开普通审计和实时审计 通过系统过程 SP_SET_PARA_VALUE 重新设置 ENABLE_AUDIT 的值,ENABLE_AUDIT 为动态 INI 参数:SP_SET_PARA_VALUE (1,’ENABLE_AUDIT’,1) 开启审计: SELECT * FROM V$PARAMETER WHERE NAME=’ENABLE_AUDIT’;

ROWNUM在达梦数据库中的使用

ROWNUM在达梦数据库中的使用 ROWNUM 是一个虚假的列,表示从表中查询的行号,或者连接查询的结果集行数。它将被分配为1,2,3,4,..N,N 是行的数量。通过使用ROWNUM ,我们可以限制查询返回的行数。 我们以实例库BOOKSHOP中RESOURCES模式下EMPLOYEE表为例 该表的完整数据如下: 如果我们只想看到前5 行数据,可以这样写 SELECT * FROM RESOURCES.EMPLOYEE WHERE rownum < 6; 需要注意的是,一个ROWNUM 值不是被永久的分配给一行。表中的某一行并没有标号,不可以查询ROWNUM 值为5 的行。ROWNUM 值只有当被分配之后才会增长,并且初始值为1。即只有满足一行后,ROWNUM 值才会加1,否则只会维持原值不变。因此,以下语句在任何时候都不能返回数据。 SELECT * FROM RESOURCES.EMPLOYEE WHERE ROWNUM > 6; SELECT * FROM RESOURCES.EMPLOYEE WHERE ROWNUM = 6;

ROWNUM 一个重要作用是控制返回结果集的规模,可以避免查询在磁盘中排序。因为,ROWNUM 值的分配是在查询的谓词解析之后,任何排序和聚合之前进行的。因此,在排序和聚合使用ROWNUM 时需要注意,可能得到并非预期的结果,例如假如我们想得到员工年龄最大的五个人 SELECT * FROM RESOURCES.EMPLOYEE WHERE ROWNUM < 6 ORDER BY BIRTHDATE; 以上语句只会对EMPLOYEE 表前5 行数据按BIRTHDATE排序输出,并不是表的所有数据按BIRTHDATE 排序后输出前5行,要实现后者,需要使用如下语句: SELECT * FROM (SELECT * FROM RESOURCES.EMPLOYEE ORDER BY BIRTHDATE) WHERE ROWNUM < 6;或者 SELECT TOP 5 * FROM RESOURCES.EMPLOYEE ORDER BY BIRTHDATE; 结果如下: 关于ROWNUM的使用,还需注意以下的限制: 1.在查询中,ROWNUM 可与任何数字类型表达式进行比较及运算,但不能出现在含OR 的布尔表达式中,否则报错处理; 2.ROWNUM 只能在非相关子查询中出现,不能在相关子查询中使用,否则报错处理;

连接达梦数据库配置文件修改步骤

连接达梦数据库配置文件修改步骤 1、安装EGS JAVA 2、替换SuperMapEGSJava1.0\SuperMapEGService文件夹下的几个文件 Images文件夹、META-INF文件夹、WEB-INF文件夹、index.jsp文件 3、修改SuperMapEGSJava1.0\SuperMapEGService\WEB-INF-\classes文件夹下的 hibernate.cfg.xml文件(以记事本方式打开),主要修改以下部分内容 jdbc:dm:// 192.168.116.30(数据库服务器ip):5236(数据库的端口号)/DAMENG(数据库名) dm.jdbc.driver.DmDriver 用户名 密码

org.hibernate.dialect.DmDialect 在hibernate配置文件hibernate.cfg.xml中添加模式名限定,模式名(在达梦数据库中一般与用户名相同)。 4、按照联机帮助里的手动部署配置serverUrl.properties 文件和config.xml文件 1)serverUrl.properties 文件(在目录SuperMapEGService\WEB-INF\classes 下) 将ServerUrl改成相应的服务地址.例 如:ServerUrl=http://{ip}:8099/SuperMapEGService/ 注意:此处ip为标绘服务所在机器的ip

达梦数据库中集合类型的使用(下)

达梦数据库中集合类型的使用(下) 在上周的分享中,我们介绍了集合类型中的变长数组和索引表,今天我们讲一讲剩下的几种跟集合有关的数据类型。 三.嵌套表 嵌套表和varray类型用法类似,主要区别在于嵌套表在使用时不用指定元素上限。 这里我们采用结合游标制造一个比较复杂的例子,我们先采用一个游标ename_cursor来存储job_id为21的员工姓名信息,然后通过遍历游标把对应的员工姓名存储到嵌套表中,相关代码如下:DECLARE --下面这句是嵌套表的声明,可以看到这里并不用指定元素上限 TYPE ename_array_type is table of dmhr.employee.employee_name%TYPE; --定义一个游标 CURSOR ename_cursor is select employee_name from dmhr.employee where job_id=21; --初始化嵌套表,此时嵌套表为空 ename_array ename_array_type:=ename_array_type(); --初始化嵌套表

i number:=0; BEGIN for ename in ename_cursor loop i:=i+1; --执行extend函数,为数组增加一个null元素ename_array.EXTEND; ename_array(i):=ename.employee_name; print(ename.employee_name); end loop; --注意嵌套表下标是从1开始的,而不是0 for j in1..ename_array.count()loop print(ename_array(j)); end loop; END; / 执行结果如下,篇幅关系并没有截全。

达梦数据库系统存储过程介绍

达梦数据库系统存储过程介绍 DM是达梦数据库有限公司推出的新一代高性能、高安全性的数据库产品。它具有开放的、可扩展的体系结构,高性能事务处理能力,以及低廉的维护成本。现在长沙做网站工作室对达梦数据库系统存储过程介绍。SQL语句执行的时候要先编译,然后执行。存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是现代数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。 存储过程是利用数据库系统所提供的Tranact-SQL语言所编写的程序。Tranact-SQL语言是数据库系统提供专为设计数据库应用程序的语言,它是应用程序和数据库间的主要程序式设计界面。这类语言主要提供以下功能,让用户可以设计出符合引用需求的程序: 1. 变量说明; 2. ANSI兼容的SQL命令(如SELECT、UPDATE………); 3. 一般流程控制命令(IF…ELSE;WHILE………); 4. 内部函数。 使用存储过程具有以下的一些优点: 1. 存储过程的能力大大增强了SQL语言的功能和灵活性。sql语句中的日期运算等一系统运算灵活性增强。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 2. 可保证数据的安全性和完整性。 (1) 通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全; (2) 通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。 3. 在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。湘龙工作室以前对电信客户的一个网站就采用了达梦数据库,使得其速度极快,同时又是国内自主的数据库,保护了国内的知识产权。 4. 可以降低网络的通信量。 5. 使体现企业规则的运算程序放入数据库服务器中,以便: (1) 集中控制; (2) 当企业规则发生变化时在服务器中改变存储过程即可,无须修改任何应用程序。企业规则的特点是要经常变化,如果把体现企业规则的运算程序放入应用程序中,则当企业规则发生变化时,就需要修改应用程序工作量非常之大(修改、发行和安装应用程序)。如果

达梦数据库中集合类型的使用(上)

达梦数据库中集合类型的使用(上) 在DM PL/SQL的使用过程中,如果我们想储存单个的数据,我们可以利用声明变量的方式来存储,如果我们想存储单行多列的数据,我们可以用到记录类型(record),如果我们想保存单列多行的数据,则可以利用集合类型的方式来存储。本文就将给大家介绍达梦数据库中常用的几种集合类型以及他们的特点。 一.索引表 索引表的特点: 1.可以使用数字或者字母作为下标 2.以数字做下标时可以使用负数 3.只能在PL/SQL块中使用,无法作为表字段 下面进行一些测试,首先是数字做下标的索引表 declare type index_tab_type is table of varchar(30)index by int; v_table index_tab_type; begin v_table(-1):='hello';--设定下标为-1的元素的值 v_table(1):='and ';--设定下标为1的元素的值 v_table(5):='world'; print('元素个数为:'||v_table.count);

print('第一个元素是'||v_table(v_table.first));--输出第一个元素 print('最后一个元素是'||v_table(v_https://www.doczj.com/doc/eb6414740.html,st));--输出最后一个元素 end; 执行结果如下 然后是字母做下标的索引表 declare type index_tab_type is table of varchar(30)index by varchar(1); v_table index_tab_type; begin v_table('a'):='hello';--设定下标为-1的元素的值 v_table('c'):='world'; print('元素个数:'||v_table.count); print('第一个元素'||v_table(v_table.first)); print('最后一个元素'||v_table(v_https://www.doczj.com/doc/eb6414740.html,st)); end;

达梦数据库安装部署文档release

达梦数据库安装部署文档 一.数据库安装(重点说明linux安装) 1. Windows环境安装 配置好每个页面后点击“下一步”,默认安装即可,安装路径根据自己的要求选择。在使用达梦数据库配置助手dbca工具初始化库的过程中,需要将下图红色框选部分改为如图所示。详细的安装细节可以参考DM7_Install_zh.pdf文档或咨询本区域资深服务工程师。 注意: 页大小(page_size)除去Clob、Blob等大字段外,数据库中一行记录的所有字段的实际长度的和不能超过页大小的一半; 日志文件的大小(log_size)数据库redo日志文件的大小,单位为M。(正式环境日志文件的大小一般设置为2048); 字符串比较大小写敏感(case_sensitive)默认为大小写敏感的,根据具体情况进行设置。迁移实施中针对原始库Oracle数据库是大小写敏感的,SQL Server和MySQL数据库默认对大小写是不敏感的,所以在数据库安装的过程中需要根据具体情况来选择。 建议:在开发环境和测试环境的页大小、字符串大小写敏感等初始化参数一定要保持一致,避免使用.bak文件还原的时候,因为初始化参数不一致导致无法还原。 2. Linux环境安装 2.1 预设场景 执行程序:/opt/dmdbms 数据文件:/opt /dmdata OS:中标麒麟64位linux 2.1 检查安装环境 用户首先以root用户登录,进行以下安装前的准备工作

1.检查安装程序的临时目录的硬盘需求安装程序产生的临时文件,默认使用/tmp目录。为了安装程序能够正常运行,用户应该保证/tmp有大于600M的剩余空间。用户可以使用以下命令进行查询:df -h /tmp 如果/tmp目录的剩余空间不足,用户可以扩充/tmp目录的空间,也可以通过设置环境变量DM_INSTALL_TMPDIR指定安装程序的临时目录。 2.建议关闭防火墙service iptables stop 2.2 Linux系统使用非root用户进行安装(建议使用) 为了减少对操作系统的影响,用户不应该以root用户来安装和运行达梦数据库。用户可以在安装之前为达梦数据库创建一个专用的系统用户。 以下步骤只作为参考提示,具体步骤及操作请以本机系统为准,具体细节可向系统管理员咨询。 1) 创建安装用户组(root操作) groupadd dminstall 2) 创建安装用户(root操作) useradd –g dminstall –m –d /home/dmdba –s /bin/bash dmdba 3) 初始化用户密码(root操作) passwd dmdba 之后通过系统提示进行密码设置。 4) 检查系统资源限制在Linux、Solaris、AIX和HP-UNIX等系统中,因为ulimit命令的存在,会对程序使用操作系统资源进行限制。为了使达梦数据库能够正常运行,建议用户检查ulimit 的参数。首先用户使用dmdba系统用户进行登录,运行ulimit –a进行查询。 ◆data seg size (kbytes, -d) 建议用户设置为1048576(即1GB)以上或unlimited(无限制),此参数过小将导致数据库启动失败。 ◆file size (blocks, -f) 建议用户设置为unlimited(无限制),此参数过小将导致数据库安装或初始化失败。 ◆open files (-n) 建议用户设置为65536以上或unlimited(无限制)。

达梦数据库安装手册

达梦数据库安装手册

文档修订记录

达梦数据库安装 安装规范 在进行工程实施前,需要项目负责人按照如下方式,完成操作系统的准备工作: 1.达梦程序挂载到/dmdb下,安装目录为/dmdb/dm,磁盘空间至少100G。 2.达梦数据文件挂载在/dbdata,数据文件目录为/dbdata/dmdata,磁盘空 间大小根据项目阵列的到货时间来确定,如果阵列可以在2个月内部署,磁盘空间可以为200G,但如果不能确保阵列可以及时部署,磁盘空间至 少500G。 3.备份文件挂载在/dbbak,阵列部署时/dbdata和/dbbak磁盘容量以4:1分 配,备份文件以“库名bak”分文件夹存放,如EMS库备份到emsbak 目录下。 4.在/dbbak目录下建立binbak文件夹,用于存取每次更换版本后的旧版本, 旧版本以“bin_更新日期”命名。 5.使用io_test工具测试数据文件所在磁盘的IO速度。一般,10s中至少要 写150M以上。建议用户联系服务器厂家开启磁盘缓存。 服务器安装 一、通过bin文件安装数据库服务器 1.运行达梦安装文件 ./DMInstall.bin 如果提示权限不够,进行授权,执行: chmod 777 * 2. 开始安装,根据提示输入dm.key所在位置 方括号内为key文件所在位置默认路径,回车选择默认路径。 3.选择安装类型

选择Typical,输入1。 4. 选择安装路径 将达梦安装在/dmdb/dm,输入路径。 5.确认安装路径 输入Y(或y)。 6. 选择初始化数据库 输入Y(或y)确定初始化数据库。 7. 选择不安装实例数据库 输入N。 8. 选择数据文件路径 数据文件路径设置为/dbdata/dmdata,输入路径。 9. 确认数据文件路径 输入Y 10. 修改初始化数据库参数 选择Y,对数据库参数进行修改。参数设置为大小写敏感,页大小32K,簇大小16页,空串(‘’)按NULL处理,修改参数如下(红色字体为输入):

达梦数据库入门学习笔记

达梦数据库入门学习笔记 ——庞世论 2020.12.21 数据库安装前准备 中标麒麟7(NeoKylin Linux Server 7.0) 达梦版本:DM 8 查看linux系统版本cat /etc/issue cat /etc/redhat-release uname -r uname -m 查看CPU位数getconf LONG_BIT cat /pro/cpuinfo 配置CPU内存参数vim /etc/sysctl.d/99-sysctl.conf 添加以下3行 Kernel.shmmax=68719476736 Kernel.shmall=4294967296 Kernel.msgmax=65536 创建用户组groupadd dinstall Useradd dmdba -g dinstall -s /bin/bash -d /home/dmdba -m dmdba Passwd 修改资源使用限制cat /etc/security/limits.conf 添加以下2行: dmdba soft nofile 4096 dmdba hard nofile 65536 防火墙:systemctl status firewalld.service systemctl stop firewalld.service systemctl disable firewalld.service 数据库实例创建及服务启停 创建数据库实例./dbca.sh 注册实例服务法1数据库配置助手 ./dbca.sh 法2:命令行 环境变量配置vim ~/.bash_profile 使其生效source ~/.bash_profile 数据库实例的开启与关闭./DmServiceDAVE start 数据库服务管理工具(root用户) ./dmservice.sh 命令行启停服务(root用户)systemctl start DmServiceDAVE.service systemctl stop DmServiceDAVE.service systemctl enable DmServiceDAVE.service systemctl status DmServiceDAVE.service 数据库服务查看ps -ef |grep dm.ini 登录数据库disql SYSDBA/SYSDBA 等效于disql SYSDBA/SYSDBA@192.168.63.10:5236 (链

达梦数据库的使用及整合SSH

达梦数据库的使用及常规sql语句规则及SSH整合 (作者:崔世民) 一、数据库下载---------------------------------------------------------------01 二、硬件要求及系统要求---------------------------------------------------02 三、数据库安装---------------------------------------------------------------03 四、数据库使用---------------------------------------------------------------04 五、数据库语句规则---------------------------------------------------------05 六、表的新建------------------------------------------------------------------06 七、数据库驱动的位置查找------------------------------------------------07 八、方言架包的位置查找---------------------------------------------------08 九、Myeclipse连接DBA----------------------------------------------------09 十、反射数据库---------------------------------------------------------------10 十一、修改实体类的映射文件(使用达梦数据库增删改查规则)-------------------------------------------------------------------------------11 十二、DM服务平台---------------------------------------------------------12 说明: 达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。达梦数据库管理系统的最新版本是7.0版本,简称DM7。

达梦数据库系统移植的基本步骤

达梦数据库系统移植的基本步骤 25亿网站后台管理系统对数据库系统的移植归纳为通常采用以下几个步骤进行。 1.2.1 分析系统 分析系统的目的在于了解系统,判断系统移植的工作量及确定移植工作的重点和方案,主要包括以下一些内容: 1. 后台操作系统是什么及其版本信息,Windows、Unix、Linux等。 2. 后台数据库是什么及其版本信息,是SQL Server、Oracle、Informix 还是其它。 3. 前台开发工具是什么及其版本信息,是.NET、JBuilder、Delphi还是其它。 4. 应用系统采用了什么开发模式,C/S还是B/S模式。 5. 应用系统使用的接口,常用的如ODBC、OLEDB、JDBC;如果是采用通用的接口,重点将转向后台数据库的移植;如果是采用一些特别的专用接口如OCI、API或者自定义的接口标准,则需要进行相关接口的开发,这时候移植工作重点将转向接口的开发上面来。 6. 相关的一些开发组件及其版本信息。 7. 相关的运行环境及其版本信息,如Tomcat、.NET Framework等。 8. 是否用到第三方的开发工具和平台,如SuperMap等。 9. 数据库的相关信息,主要有几个库,这些库之间的关系。 10. 涉及到的数据类型,常规的如CHAR、VARCHAR、INT等,这些各种数据库一般都支持,如果系统用到了如日期、时间、时间戳、文本、图像等类型,在移植的时候需要注意各种数据库之间的一些差异,主要是关注长度、精度、标度信息,有时候需要做些类型转换,如在Oracle中的VARCHAR(8000),在达梦数据库中可考虑将其转换成TEXT类型或采用16KB以上的建库模式加以解决。 11. 注意表的定义信息,主要是关注自定义的数据类型、自定义的缺省值,因SQL Server等数据库可创建自定义的数据类型和自定义的缺省值,而使用达梦的DTS工具无法将这些信息转换出来,需要在原系统中查找。 12. 是否使用到了视图、存储过程、存储函数、触发器、序列等;如果没有使用到这些,后台数据库的移植工作将主要是进行数据迁移;如果用到了这些,且数量较多,后台数据库的移植工作将是脚本的移植转换工作。 13. 是否用到了后台数据库的系统字典,因各数据库的系统字典格式和内容均不一样,这时候需要分析原数据库的系统字典的涵义,只能根据使用的实际情况作相应的处理。

达梦数据库的连接配置

达梦数据库的连接配置(上) 数据库访问是数据库应用系统中非常重要的组成部分。达梦数据库作为一个通用数据库管理系统,提供了多种数据库访问接口,包括ODBC、JDBC、API、OLEDB以及嵌入方式等。本文主要列出了在Java 中常见的连接达梦数据库的方法。 1.建立基本的JDBC连接 JDBC(Java Database Connectivity)是Java应用程序与数据库的接口规范,旨在让各数据库开发商为Java程序员提供标准的数据库应用程序编程接口(API)。JDBC定义了一个跨数据库、跨平台的通用SQL数据库API。DM JDBC 3.0驱动程序符合SUN JDBC3.0标准,兼容DM JDBC 2.0。 DM JDBC驱动程序是DM数据库的JDBC驱动程序,它是一个能够支持基本SQL功能的通用低层应用程序编程接口,支持一般的SQL数据库访问。 要建立JDBC连接,首先要注册数据库驱动程序。可以通过调用java.sql.DriverManager类的registerDriver方法显式注册驱动程序,也可以通过加载数据库驱动程序类隐式注册驱动程序。 // 显示注册 DriverManager.registerDriver(new dm.jdbc.driver.dmDriver()); // 隐式注册 Class.forName(“dm.jdbc.driver.DmDriver”); 隐式注册过程中加载实现了java.sql.Driver的类,该类中有一静态执行的代码段,在类加载的过程中向驱动管理器DriverManager注册该类。而这段静态执行的代码段其实就是上述显式注册的代码。 注册驱动程序之后,就可以调用驱动管理器的getConnection方法来建立连接。建立数据库连接需要指定标示不同数据库的url、登录数据库所用的用户名user和密码password。 通过DriverManager建立连接的具体过程,如以下示例: String driver= "dm.jdbc.driver.DmDriver"; String url= "jdbc:dm://localhost:12345/dbname"; String username="username"; String password="password"; Connection con = null; try { // 加载JDBC驱动程序 Class.forName(driver); } catch (https://www.doczj.com/doc/eb6414740.html,ng.ClassNotFoundException e) { e.printStackTrace(); ?} try { // 数据库连接 con = DriverManager.getConnection(url, username, password);} catch (SQLException ex) {

相关主题
文本预览
相关文档 最新文档