达梦数据库常见SQL语句
针对达梦数据库的部分sql语句进行汇总,条件查询,约束等语句和MySQL相同,故不一一列举示例
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. 数据操作
注意:
- 数据增删改必须提交事务(COMMIT)
- 模式名、表名和字段名加双引号,可省略
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. 高级查询
- 排序: order by 列 [asc|desc]
- 截取: limit 开始,几个
- 聚合函数: count(列)
- 分组: group by 列
- 过滤: having 过滤条件
- 普通条件: where
高级查询的顺序:
select 聚合函数() from 表 [where 条件] [group by 分组] [having 过滤] [order by 排序] [limit 截取]
4. 数据库约束
- 主键约束:
primary key
自增列:identity(1, 1)
列不可见:not visible
- 唯一约束:
unique
- 非空约束:
not null
- 默认值:
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")
);
- 外键约束:
[constraint 约束名: xxx_fk] foreign key (列名) references 主表(主键)
5. 多表查询
- 内连接:(inner) join
- 左外连接:left (outer) join
- 右外连接:right (outer) join
- 子查询
更多推荐
所有评论(0)