此篇笔记主要是非过程语言的集合,主要是分为五部分:第一部分和第二部分主要分为DDL和DML语言的写法;第三部分为其他一些升级语法的演示;第四部分为SELECT语句对系统表和一些函数的使用;第五部分为各种需求的SQL开发内容。
DDL
CREATE:包含表和各种特殊对象的创建
ALTER:包含表结构的修改、权限的修改和名称的修改
DROP:和各种对象的删除
DML
INSERT:针对各种类型的数据插入
DELETE:包含各种语法的删除
UPDATE:对数据的修改
SELECT:SELECT的语法
升级语法
SELECT语法其他内容的引用
根据需求对系统表的相关简单查询
SELECT语句对函数的应用
SQL开发内容
系统表的组合应用
针对需求做的剪切和拼接应用
一、DDL的语法-CREATE
(一) 数据库的CREATE创建
1. 数据库的多种格式的创建
--不记录日志
create database nolog;
--记录缓冲日志
create database bufferdb with buffered log;
--无缓冲日志
create database logdb with log;
--特殊形式ansi记录日志无缓冲
create database ANSIDB with log mode ANSI;
2. 创建数据库指定数据空间
--创建数据库指定数据空间
create database log1db in datadbs1 with log;
3. 大小写相关参数
CREATE DATABASE stores2 IN datadbs1 WITH LOG NLSCASE INSENSITIVE;
数据类型限制:NLSCASE INSENSITIVE 设置仅影响 NCHAR 和 NVARCHAR 类型的字符串。对于 CHAR、LVARCHAR 和 VARCHAR 类型,数据库仍然保持区分大小写。
查询优化:由于大小写不敏感的特性,查询时需要特别注意大小写相关的条件表达式,确保与数据库的实际行为相符。
跨数据库连接:具有 NLSCASE INSENSITIVE 属性的数据库只能与具有相同属性的数据库进行跨数据库或跨服务器查询。不能与区分大小写的数据库进行连接。
数据迁移与升级:在升级或迁移数据库时,需确保目标数据库的大小写敏感性设置与原数据库一致,避免因大小写规则改变导致的数据不一致或查询异常。
(二) 表的创建和各种特殊类型的创建
1. 表的相关创建事项
- varchar不指定长度会默认为1
- 当输入的数据超过指定长度时不会报错而是进行截断
2. 普通表的创建
create table test1(id int,name varchar(10);
3. 带有序列、非空、默认值、检查约束和主键,并指定数据空间和自动扩展
--带有序列、非空、默认值、检查约束和主键,并指定数据空间和自动扩展
create table pu_test1(
sno serial not null,
sname varchar(10) default 'zhang',
ssex char(2) check (ssex in('男','女')),
primary key(sno)
)
in datadbs1
extent size 640 next size 320 ;
4. 主键、非空和外键的表
#主键,非空,外键
create table sc(
cno serial(1001) primary key,
cdate datetime year to fraction(3),
sno int not null,
cgrade float,
foreign key (sno) references student(sno) on delete cascade);
5. 带有大对象的表创建
--简单大对象text、byte
create table test_text_byte(
id int,
tx text in blobdbs,
by byte in blobdbs
);
--智能大对象blob、clob
create table test_blob_clob(
id int,
bl blob,
cl clob)
put
bl in(sbspace1),
cl in(sbspace1);
6. 复合类型row、set的创建
create table fuhe(
id int,
info row(age int,name varchar),
aihao set(varchar(100) not null),
gx set(row(gage int,gname varchar(10)) not null)
);
7. 创建带有空格列名的表
--增加环境变量
export DELIMIDENT=TRUE
create table t2("k c" int);
(三) 临时表的创建
1. 临时表的创建
退出页面临时表会被清空
create temp table t1(id int);
insert into t1 values(11);
select * from t1;
id
11
[gbasedbt@fu gbasedb1_dbs]$ dbaccess test -
Your evaluation license will expire on 2025-01-02 00:00:00
Database selected.
> select * from t1;
206: The specified table (t1) is not in the database.
111: ISAM error: no record found.
Error in line 1
Near character position 16
(四) 分区表的创建
1. 分区表方式的简介
分区表又名分片表,其通过分区的方式、分区表位置和分区表名称设置三种构成:
- 分区表的方式
-
- 表达式分片
- 轮训法分片
- 列表分区
- 自动分片
- 分区表位置
-
- 每个分片表一个数据空间
- 多个分片表的位置设置在一个数据空间
- 分区表名称
-
- 指定分区表名称
- 不指定分区表名称
注意事项
- remainder分片没有需要的数据也会被扫描,所以尽量避免使用reaminder分片
2. 表达式分片单数据空间指定分区表名称
create table p2(id int,name varchar(100))
fragment by expression
partition p2_1 id <100 in datadbs1,
partition p2_2 remainder in datadbs1;