**
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.因为外键使用偏复杂,所以现在较少使用;
来源:https://blog.csdn.net/yang_z_1/article/details/111878713
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |