请选择 进入手机版 | 继续访问电脑版

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

[复制链接]
苍野狼步 发表于 2021-1-1 10:33:25 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
**
sql底子知识(条记)(三)

个人学习条记
**
接上篇
sql底子知识(条记)(一)
sql底子知识(条记)(二)
**
DDL部分:

**
建表:

**
  1. create table 表名(        列名 数据范例(长度),        列名 数据范例(长度),        列名 数据范例(长度));comment on table 表名 is '注释内容';comment on column 表名.列名 is '注释内容';
复制代码
1.表名的选取:只管体现表的功能,单词缩写和下划线组成
2.列名的定名:体现列数据内容,单词缩写和下划线组成
3.表和列都需要有注释;
4.默认值和非空校验:

  1. create table 表名(        列名 数据范例(长度) default 0,        列名 数据范例(长度) defualt sys_guid(),--32位        列名 数据范例(长度) not null);
复制代码
新增列:

  1. alter table 表名 add 列名 数据范例(长度);--加一列alter table 表名 add (列名 数据范例(长度), 列名 数据范例(长度),列名 数据范例(长度));
复制代码
删除列:

  1. alter table 表名 drop column 列名;--删除一列alter table 表名 drop(列名1,列名2,列名3);--删除多列
复制代码
修改列:

  1. alter table 表名 modify 列名 新的数据范例(新的长度);
复制代码
1.修改列范例时,列必须为空;
2.列扩长是可以的,但数字范例无法缩小,字符串范例缩小到现有数据最大长度;

表重定名:

  1. alter table 表名 rename to 新表名;
复制代码
列重定名:

  1. alter table 表名 rename column 列名 to 新列名;
复制代码
**
视图

**
根本语法:
  1. create or replace view as select 语句;
复制代码
select可以是根本的筛选查询,也可以是使用了group by,having的语句
1.视图的根本作用:屏蔽数据;
2.不是所有的视图都能更新;
3.视图不起到任何提高查询效率的作用;

**
暂时表

**
根本语法:
  1. 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.暂时表占用暂时表空间;
  1. create user 用户名 identified by 密码 default tablespace 固定表空间 temporary tablespace 暂时表空间;
复制代码
索引
索引概念:起加速查询的作用,跟字典的索引页相同
普通索引
  1. create index 索引名字 on 表名(列名);
复制代码
1.索引名字以IND大概IDX开头;
2.单列索引,每个列只有一个单列索引;
3.索引名字长度有限制 30位;
4.索引列选取唯一性高的(数据重复少的);
5.每个表的索引只管控制在5个以内;

唯一索引:
  1. create unique index 索引名 on 表名(列名);--要求索引列里的数据唯一(不重复),但可以为空;
复制代码
组合索引
  1. 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. 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. 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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )