达梦数据库常见SQL语句

1. 模式操作

1.1. 创建模式

create schema 模式名 authorization SYSDBA;

1.2. 查询数据库下所有模式

select * from SYSOBJECTS t where t."TYPE$" ='SCH';

1.3. 删除模式

drop schema 模式名;

2. 数据表操作

2.1. 创建数据表

-- 语法
create table [模式.]表名(    
  字段名1  字段类型1(字段长度),  -- 不是;号    
  字段名2  字段类型2(字段长度),	
  ....	
  字段名n  字段类型n(字段长度)  -- 最后一列后面是没有,的
);

-- 实例  
create table MYDM8.USER(
  "id" INTEGER identity(1, 1),
  "username" VARCHAR(20),
  "password" VARCHAR(50),
  "gender" CHAR(10),
  "addr" VARCHAR(100),
  primary key("id")
);

2.2. 常见的数据类型

数据类型

类型

描述

字符

VARCHAR

可变长度字符串类型,它的长度可以由我们自己指定

数值

精确

NUMERIC

用于存储零、正负定点数。NUMERIC[(精度 [, 标度])],精度是一个无符号整数,定义了总的数字数,精度范围是 1 至 38。标度定义了小数点右边的数字位数。一个数的标度不应大于其精度,如果实际标度大于指定标度,那么超出标度的位数将会四舍五入省去。

DECIMAL

DEC

NUMBER

INTEGER

整型

INT

BIGINT

TINYINT

BYTE

SMALLINT

BINARY

二进制

VARBINARY

近似

FLOAT

单精度浮点型

DOUBLE

双精度浮点型

REAL

DOUBLE PRECISION

位串

BIT

整数数据 1、0 或 NULL,只有 0 才转换为假,其他非空、非 0 值都会自动转换为真,可以用来支持 ODBC 和 JDBC 的布尔数据类型。DM 的 BIT 类型与 SQL Server 2000 的 BIT 数据类型相似。

日期时间

DATE

年、月、日

TIME

时、分、秒

TIME 类型的小数秒精度规定了秒字段中小数点后面的位数,取值范围为 0~6,如果未定义,缺省精度为 0。

TIMESTAMP

年、月、日、时、分、秒

TIMESTAMP 类型的小数秒精度规定了秒字段中小数点后面的位数,取值范围为 0~6,如果未定义,缺省精度为 6。

多媒体

TEXT

变长字符串类型。其字符串的长度最大为 100G-1,用于存储长的文本串。

LONG

LONGVARCHAR

IMAGE

图像类型,长度最大为 100G-1 字节

LONGVARBINARY

BLOB

变长的二进制大对象,长度最大为 100G-1 字节。

CLOB

变长的字母数字字符串,长度最大为 100G-1 字节。

BFILE

存储在操作系统中的二进制文件。

2.3. 查询数据表

2.3.1. 查看表结构

2.3.1.1. 方式一

SELECT DBMS_METADATA.GET_DDL('TABLE','表名','模式名') FROM dual;

2.3.1.2. 方式二

SP_TABLEDEF('模式名','表名');

2.4. 修改数据表

2.4.1. 添加一列

ALTER TABLE 模式名.表名 ADD 字段名 列类型;

2.4.2. 修改类型

ALTER TABLE "模式名"."表名" MODIFY 字段名 列类型;

2.4.3. 修改列名

ALTER TABLE 模式名.表名 RENAME COLUMN 旧列名 TO 新列名;

2.4.4. 删除指定列

ALTER TABLE 模式名.表名 DROP COLUMN 列名;

2.4.5. 修改表名

ALTER TABLE 模式名.表名 RENAME TO 新表名;

2.5. 删除数据表

DROP TABLE 模式名.表名;

3. 数据操作

注意:

  1. 数据增删改必须提交事务(COMMIT)
  2. 模式名、表名和字段名加双引号,可省略

3.1. 插入数据

3.1.1. 基本方式

INSERT INTO 模式名.表名(字段1,字段2,.....字段n) VALUES(值1,值2,.....值n);

COMMIT;

例:

insert into "MYDM8"."STUDENT"("id","name","birthday") values(5,'小兰','1990-01-01');

COMMIT;

3.1.2. 批量插入

INSERT INTO 模式名.表名(字段1,字段2,.....字段n) VALUES(值1,值2,.....值n),(值1,值2,.....值n),(值1,值2,.....值n);

COMMIT;

3.1.3. 省略列名

INSERT INTO 模式名.表名 VALUES(值1,值2,.....值n),(值1,值2,.....值n),(值1,值2,.....值n);

COMMIT;

注意:

自增列不能赋值

3.2. 修改数据

UPDATE 模式名.表名 SET 字段1=值1,字段2=值2 [WHERE 条件字段 = 值];

COMMIT;

3.3. 删除数据

DELETE FROM 模式名.表名 [WHERE 字段=值2];

COMMIT;

3.4. 查询数据

3.4.1. 简单查询

3.4.1.1. 查询所有列

SELECT * FROM 模式名.表名;

3.4.1.2. 查询部分列

select 列1名,列2名,...列n名 from 模式名.表名;

3.4.1.3. 去重

SELECT DISTINCT 列名 FROM 模式名.表名;

3.4.1.4. 四则运算

SELECT 列(四则) FROM 模式名.表名;

3.4.1.5. 空值处理

ifnull(列,默认值)

3.4.1.6. 别名

select 列 [as] 别名 from 模式名.表名;

3.4.2. 条件查询

3.4.2.1. 关系运算符

= >= <= != <>

3.4.2.2. 逻辑运算符

and or

3.4.2.3. 范围关键字
  • 字段 in (值1,值2,....值n) 表示字段=集合中的任何一个都可以
  • 字段 not in (值1,值2,....值n) 表示字段不在集合中才可以
  • 字段 between 开始值 and 结束值 查询的字段的值要在 [开始 , 结束]
  • 字段 not between 开始值 and 结束值 查询的字段的不值要在 [开始 , 结束]
3.4.2.4. null关键字
  • is null 为空
  • is not null 不为null
3.4.2.5. 模糊匹配

like

3.4.3. 高级查询

  1. 排序: order by 列 [asc|desc]
  2. 截取: limit 开始,几个
  3. 聚合函数: count(列)
  4. 分组: group by 列
  5. 过滤: having 过滤条件
  6. 普通条件: where

高级查询的顺序:

select 聚合函数() from 表 [where 条件] [group by 分组] [having 过滤] [order by 排序] [limit 截取]

4. 数据库约束

  1. 主键约束:primary key

自增列:identity(1, 1)

列不可见:not visible

  1. 唯一约束:unique
  2. 非空约束:not null
  3. 默认值:default(默认值)

默认值不加引号

例:

create table "MYDM8"."student"(
	"id" INTEGER identity(1, 1) not null  unique  not visible ,
	"name" VARCHAR(50) default (张三),
	"age" TINYINT,
	"weight" DOUBLE(53),
	primary key("id")
);
  1. 外键约束:[constraint 约束名: xxx_fk] foreign key (列名) references 主表(主键)

5. 多表查询

  1. 内连接:(inner) join
  2. 左外连接:left (outer) join
  3. 右外连接:right (outer) join
  4. 子查询
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值