作者简介:东星耀杨,C站煮播之星,【无规则教学】创始人,曾奉太上老君之名下凡,为了给迷途中的兄弟萌指点迷津,帮助兄弟萌早日踏入如我这般境界!世人见我,皆称之“王霸之气侧漏”的男人,哇靠蒸滴c!c了兄弟萌!
往期回顾:
【数据库专题】智多星带你五分钟攻略“关系代数”——《狗叫江湖》第二幕续集
【数据库专题】“第二幕”——《狗叫江湖》之关系数据库(1)“解锁新角色:刘能“
【数据库专题】“第一幕”——《狗叫江湖》之数据库系统概论(续集)【蒸滴很c】
【数据库专题】耀杨初入SQL被DML打断了双腿——《狗叫江湖》“第三幕”
耀杨和兄弟萌的约定:等我到一千粉,给兄弟萌发红包!感谢兄弟萌的陪伴和支持!
目录下面奉上本人靓照
兄弟萌兄弟萌,又是想兄弟萌的一天,进来总是有小兄弟私信耀杨,说我是在水文,哇靠大胆!你什么身份,我什么帝位!哇靠,今天好好给兄弟萌教学,md为师放水了还不懂吗?
在为师第一次跨入sql江湖的时候,映入眼帘的就是一个长得歪瓜裂枣的家伙,江湖听闻是DDL,今天兄弟萌跟着耀杨一起拿捏了,嗨害嗨……OK,beautiful!
想必兄弟萌都知道了,为师之前就讲过,关系数据库系统支持三级模式机构,即模式,外模式和内模式,这三个模式的基本对象都有模式、视图和索引等等。
在SQL中的数据定义语言DDL中包括数据库定义、表定义、索引的的定义,
数据定义语言主要用于创建、修改、和删除数据库内的数据结构:
创建和删除数据库
创建、修改、重命名、删除表
创建和删除索引
接下来为师给兄弟萌一一讲解
定义:CREATE
删除:DROP
修改:ALTER
数据类型 | 含义 |
---|---|
CHAR(n),CHARACTER(n) | 长度为 n定长字符串 |
VARCHAR(n) ,CHARACTERVARYING(n) | 最长长度为n的定长字符串 |
CLOB | 字符串大对象 |
BLOB | 二进制大对象 |
INT,INTEGER | 长整数(4字节) |
SMALLINT | 短整数(2字节) |
BLGINT | 大整数(8字节) |
NUMERIC(p,d) | 定点数,由p位数字(不含符号、小数点)组成,小数点后面又d位数字 |
DECIMAL(p,d),DEC(p,d) | 同NUMERIC |
REAL | 取决于机器的单精度浮点数 |
DOUBLE PRECISION | 取决于机器精度的双精度浮点数 |
FLOAT(n) | 可选精度的浮点数,度至少为n位数字 |
BOOLEAN | 逻辑布尔值 |
DATE | 时间,DDDD-MM-TT |
TIME | 时间,HH:MM:DD |
TIMESTAMP | 时间戳类型 |
INTERVAL | 时间间隔类型 |
主要看我细节:
一个属性数据类型的选择是要根据实际情况来决定的,一般要考虑到取值范围和要进行哪些运算。
注意为师细节:
在数据库中,一个关系数据库管理系统的实例中可以建立多个数据库每一个数据库中可以建立多个模式,一个模式下通常可以包括多个基本表、视图和索引等等对象。
为师在这里主要基于MySQL进行教学,在MySQL数据库管理系统中具体的数据定义是与SQL中有些不一样。:
为师给兄弟萌专门创建一个数据库BROTHER:
CREATE DATABASE ;
drop database <数据库名>
创建完数据库之后,为师先给兄弟萌创建一个数据表Brother:
(小声嘀咕:给耀杨三连的好兄弟耀杨都会一一录入该表滴!择日登门拜访!)
Brother(Bnum,Bname,Bsex,Bdept,Bfens)
数据库的名为<耀杨的兄弟萌>,含有四个基本属性,编号,名称,性别,领域,粉丝数。
CREATE TABLE Brother(
Bnum varchar(255) primary key,/*列级完整性约束条件,Bnum为主码*/
Bname varchar(255) unique,/*昵称取唯一值*/
Bsex varchar(255) not null,/*性别不能为空*/
Bdept varchar(255),
Bfens INT
);
这样关于兄弟萌的数据表就建立完成了
耀杨向数据库中插入本人的基本信息(插入语句为师会在DML章节仔细讲解):
编号 | 昵称 | 性别 | 领域 | 粉丝数 |
---|---|---|---|---|
00 | 跟着耀杨学编程 | 男 | 数据库 | 394 |
drop table <数据库名>.<表名>;
注意为师细节:如果没有使用use进入数据库,需要加上“<数据库名>.”
alter table rename to brother;
为师将Bfens的列名改成Bfensi。
alter table Brother change column Bfens Bfensi INT;
我们将Bsex的约束条件改成char(4)
alter table Brother modify column Bsex char(4);
为师给各位兄弟萌添加一个发量属性兄弟萌不会介意吧(放我一马,我是煮播!)
alter table Brother add column Bhair char(4);
为师再将兄弟萌的发量给删掉(诶嘿!蒸滴c!为师最近蒸滴很是烦恼,头发太多 了都不知道该不该减……)
alter table Brother drop column Bhair;
复制表再实际工程中经常用到:
create table Brother2 select * from Brother;
create table Brother3 select * from Brother where Bname=‘跟着耀杨学编程’;
create table Brother3 select Bname from Brother;
有兄弟私信耀杨:
“义子义子,明明可以使用查询操作呀,那索引到底是干啥用的呢?”
“M D ! 你真是瓜皮呀,这就相当于你有车不用非要步行上班一个道理呀,哇靠,不要搞我道心了!”
当表的数据比较大时,查询操作会很耗时,建立索引当然是为了加快查询速度了!
索引就类似于图书管中的索引,可以快速锁定到要查询的内容。
用户可以根据需要在基本表上建立一个或者多个索引。
顺序文件上的索引:针对俺指定属性值升序或者将降序存储的关系,在该属性上建立一个顺序索引文件,索引文件由属性值和相对应的元组指针组成。
B+数索引:B+数索是将索引属性组织成B+树形式,B+树的叶节点为属性值和相应的元组指针。(B+树具有动态平衡的优点)
散列索引:散列索引是建立若干个桶,将索引属性按照其散列函数值映射到相应桶中,桶中存放索引属性值和相应的元组指针。(散列索引具有查找速度快的特点)
位图索引:位图索引使用位向量记录索引属性可能出现的值,每个位向量对应一个可能值
注意细节:
1.关系数据库管理系统在执行查询时会自动选择合适的索引作为存取路径,用户不必不能显示地选择索引。
2.索引是关系数据库管理系统的内部实现技术,属于内模式范畴。
3.建立和删除索引是由建立表的人负责完成的。
create [unique] [cluster] index <索引名>
on <表名>(<列名> [<列序>] [,<列名>[<次序>]]......);
注意为师细节:
1.索引可以建立在该表的一列或多列上。
2.unique 表明此索引的每一个索引值只对应唯一的数据记录。
3.cluster表示要建立的索引是聚簇索引。
在这里为是决定为Brother表建立一个索引,按编号升序建立唯一索引。
CREATE UNIQUE INDEX Bsuoyin ON Brother(Bnum);
一般格式为:
ALTER INDEX <旧索引名> REMOVE TO <新索引名>;
为师可以将Brother表中的Bsuoyin索引名改成Btunum。
ALTER INDEX Bsuoyin REMOVE TO Btunum
一般格式为:
DROP INDEX <索引名> ON <表名>;
兄弟们今天我可没有水文,一个字一个字打出来的,哇靠,我耀杨还有这么c的一天,MD!DDL都想掏我蛋,我各种极限反杀,哇靠根本不解释的!!!
、
追魂夺魄拉第三魂技烈火漂龙!!!
哇靠!!!蒸滴很c的耶——