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

**

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

个人学习笔记
**

接上篇
sql基础知识(笔记)(一)
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.因为外键使用偏复杂,所以现在较少使用;

你可能感兴趣的:(sql,笔记,数据库,oracle,sql,经验分享)