sql基础知识(笔记)(三)

243 阅读4分钟

本文已参与「新人创作礼亅活动,一起开启掘金创作之路。

sql基础知识(笔记)(三)

个人学习笔记

DDL部分:

建表:

create table 表名
(
	列名 数据类型(长度),
	列名 数据类型(长度),
	列名 数据类型(长度)
);
comment on table 表名 is '注释内容';
comment on column 表名.列名 is '注释内容';

1.表名的选取:尽量体现表的功能,单词缩写和下划线组成 2.列名的命名:体现列数据内容,单词缩写和下划线组成 3.表和列都需要有注释; 4.默认值和非空校验:

create table 表名
(
	列名 数据类型(长度) default 0,
	列名 数据类型(长度) defualt sys_guid(),--32位
	列名 数据类型(长度) not null
);

新增列:

alter table 表名 add 列名 数据类型(长度);--加一列
alter table 表名 add (列名 数据类型(长度), 列名 数据类型(长度),列名 数据类型(长度));

删除列:

alter table 表名 drop column 列名;--删除一列
alter table 表名 drop(列名1,列名2,列名3);--删除多列

修改列:

alter table 表名 modify 列名 新的数据类型(新的长度);

1.修改列类型时,列必须为空; 2.列扩长是可以的,但数字类型无法缩小,字符串类型缩小到现有数据最大长度;

表重命名:

alter table 表名 rename to 新表名;

列重命名:

alter table 表名 rename column 列名 to 新列名;

视图

基本语法:

 create or replace view as select 语句;

select可以是基本的筛选查询,也可以是使用了group by,having的语句 1.视图的基本作用:屏蔽数据; 2.不是所有的视图都能更新; 3.视图不起到任何提高查询效率的作用;

临时表

基本语法:

create global temporary table
(
	列名 数据类型(长度),
	列名 数据类型(长度),
	列名 数据类型(长度)
) on commit delete rows;--提交删除数据 事务级别

create global temporary table
(
	列名 数据类型(长度),
	列名 数据类型(长度),
	列名 数据类型(长度)
) on preserve delete rows;--关闭窗口删除数据 session级别

另有 on commit preserve rows,类似 on preserve delete rows,会话结束删除数据

1.临时表占用临时表空间;

create user 用户名 identified by 密码 default tablespace 固定表空间 temporary tablespace 临时表空间;

索引

索引概念:起加快查询的作用,跟字典的索引页相同

普通索引

create index 索引名字 on 表名(列名);

1.索引名字以IND或者IDX开头; 2.单列索引,每个列只有一个单列索引; 3.索引名字长度有限制 30位; 4.索引列选取唯一性高的(数据重复少的); 5.每个表的索引尽量控制在5个以内;

唯一索引:

create unique index 索引名 on 表名(列名);--要求索引列里的数据唯一(不重复),但可以为空;

组合索引

create index 索引名 on 表名(列1,列2);

1.列1的顺序决定where条件中条件写的顺序; 2.唯一性高的列放在前面; 3.组合索引使用时,须要用到第一个索引列;

约束

非空:

1.alter table 表名 modify 列名 not null; 2.alter table 表名 modify 列名 null;--修改列的值可为空,不是讲列的值改为空(update) 3.建表时列名 数据类型(长度)后跟not nul;

唯一:

值不能重复,但可以为空;会自动建一个同名唯一索引 1.alter table 表名 add constraint 约束名字 unique(列名); 2.建表最后,单独一行 constraint 约束名字 unique(列名); 3.建表时,在 列名 数据类型(长度)之后加 constraint 约束名 unique;

检查:

1.alter table 表名 add constraint 约束名 check(检查内容); 2.建表最后,单独一行 constraint 约束名 check(检查内容); 3.建表时,在 列名 数据类型(长度)之后加 constraint 约束名 check(检查内容);**

主键:

区别于唯一约束,索引列不能为空,切值不能重复; 语法:

1. alter table 表名 add constraint 约束名 primary key(列名);--索引列不会用来查询
2. create unique index 索引名 on 表名(列名);--索引列是有业务含义的,会经常拿来查询
	 alter table 表名 add constraint 索引名 primary key(列名) using index 索引名;

注意: 1.每个表只能有一个主键; 2.主键以PK开头; 3.merge里的on后应该是主键;

外键

插入数据时,先插入主表,再插入子表; 删除数据时,先删除子表,再删除父表;**

基本语法:

1.alter table 表名 add constraint 约束名 foreign key(列名) references 主表(主表列);
2.alter table 表名 add constraint 约束名 foreign key(列名) references 主表(主表列) on delete cascade;--级联删除,删除父表数据时,同时删除子表数据
3.alter table 表名 add constraint 约束名 foreign key(列名) references 主表(主表列) on delete set null;--级联置空, 删除父表数据时,子表外键列对应的行数据置空

注意: 1.外键以FK开头; 2.依赖的主表的主表列,必须是主键或者有唯一约束; 3.因为外键使用偏复杂,所以现在较少使用;