史上最全数据库笔记(上).docx 史上最全笔记文档中包含mysql的各种命令以及注释详细用法等,大佬们….我努力的结晶,希望可以多多给小弟一些支持 一、 为什么使用SQL数据库? 数据库又称作数据集合,如果没有数据库管理人员需要一条一条的进行输入数据,于是有人发明了一条C语言语句,可以循环使用(增删改查)比如双十一的购物车就是数据库的体现,把想要的数据整理到一个文件中,在互联网中进行数据记录,查询,整理,统计等工作。 二、 什么是数据? 信息,文字,音乐,图片,视频,文件等,多媒体文件都是数据 三、 什么是大数据? 数据量多,数据流量大,并发量高,比如生活中的抖音,每秒都有很多人上传视频,下载视频,流量大,并发量高,数据量多是大数据的特点。 四、 什么是数据库? 数据库本身是一个文件,用来存储数据信息,对数据进行分类整理,一般数据库是以二进制进行存储的,因为CPU是直接处理二进制的,所以数据库直接以二进制进行存储,这样可以提高数据库的处理速度。 五、 数据库管理系统的作用? 用于创建数据库文件,管理数据库文件,提供数据库的操作界面(人机交互界面),对数据库内的数据进行增、删、改、查。 六、 数据库系统是什么? 是由开发、管理、应用一体的数据应用系统,一般是指开发人员在应用程序中对数据库的调用。 七、 主流数据库系统有哪些? 1. SQL Server(微软) 简单,易学,有大量的模板,完整的错误提示代码信息。 2. Oracle(甲骨文) 数据分析:比如百度的点击量排名,就是数据分析后的结果 面向应用对象的数据库 面向大型企业,大型数据管理 3. DB2(IBM—国际商务机器公司) 大型数据库(金融系统使用较多) 因为DB2注重的是安全 4. MySQL(现已经被甲骨文收购了) 开源,体积小,速度快,稳定 应用数量最多的数据库 MySQL 八、 数据库存储数据的种类 1. 关系性数据库à二维表格 特点:建立数据库时不用考虑库与库之间,或表与表之间的关系,在数据库应用时再建立关系 优点: 1) 易于维护:都是使用表结构,格式一致; 2) 使用方便:SQL语言通用,可用于复杂查询; 3) 复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询 缺点: 1) 读写能力比较差,尤其是海量数据的高效率读写; 2) 固定的表结构,灵活度稍欠; 3) 高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈; 2. 非关系性数据库à数据结构化存储方法的集合 非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。 优点: 1) 格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系性数据库则只支持基础类型。 2) 速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘; 3) 高扩展性; 4) 成本低:nosql数据库部署简单,基本都是开源软件 缺点: 1) 不提供sql支持,学习和使用成本较高; 2) 无事务处理; 3) 数据结构相对复杂,复杂查询方面稍欠 九、 数据库管理 1. 1. 关系性数据库的范式(可以作为典范的形式和样式) 1) 第一范式(每个字段都分割成不可再分割的子项) 例:将 地址 山东省泰安市 分割成 省 市 山东省 泰安市 2) 第二范式 在满足第一范式的前提下,可以让这一张表只做一件事情 例:一行只介绍地址 3) 第三范式 在满足第一、第二范式的前提下,尽可能减少重复字段,当两张表建立引用关系时 2. 非关系性数据库的范式 在一些特殊邻域,需要数据库的其他应用规则,而关系性数据库的工作效率会很低。 #关系性数据库搜索数据的时候是从头开始找的 nosql——非关系型数据库,库与库之间,表之间不建立任何关系。 #非关系性数据库是库与库之间查找 Column-Orientied——面向检索式的列式存储,分类进行存储。 #而检索式是在查找时有对应的类别然后进行查找 Key-Value——面向高并发读写的缓冲存储 #分布式数据库存储,面向高并发读写的缓冲存储 Document-Orientied——面向海量文档存储 3. 数据库命令简介,数据文件简介 1) 命令体系 i. create 添加 ii. alter 修改 iii. drop 删除[迪1] iv. insert 添加数据 v. delete 删除数据,清除数据 vi. select 查询数据 vii. updata 更新数据,修改数据[迪2] 2) 数据文件简介 名称 后缀名 个数 是否必须 作用 主数据文件 .mdf 1个 必须 包含该数据库的启动文件,用于存储数据 辅助数据文件 .ndf 多个 非必须 当有些文件不能置于主数据文件时,可以创建辅助数据文件 事务日志文件 .ldf 多个 必须 4. 创建数据库 1) 系统数据库的文件详解· Master :主数据库文件,存储数据管理系统的用户名,密码,权限,数据库信息存储文件等 Model :模板库,存储命令语句的模板 Msdb :代理信息库,报警,计划任务,第三方软件信息等 Tempdb :临时数据,平时为空,存储添加,修改,删除的原始数据 2) 创建数据库命令 ( filegrowth = 10MB[迪13] ) 5. 创建日志文件 1) 创建日志文件命令 //log on是创建数据库的子命令,必须与创建数据库命令一起执行,不可单独执行 log on //开启数据库的日志文件 ( name = ‘hehe_log’, //定义日志文件的逻辑名成为hehe_log filename = ‘f:hehe.ldf’ //定义日志文件的存储位置 ) 6. 扩展数据库(辅助数据文件) 1) 作用:当有些数据不能创建到主数据文件中,要创建辅助数据文件,然后存储到辅助数据文件中。 2) 创建日志文件命令 alter database hehe //修改数据库名为hehe add file //add创建 file文件 ( name = ‘hehe_ndf’, //创建逻辑名为hehe_ndf文件的辅助数据文件 filename = ‘f:hehe_ndf.ndf’, //物理路径为f:hehe_ndf.ndf size = 10MB, //起始大小为10MB maxsize = 30MB, //最大大小为30MB filegrowth = 5MB //数据库可用空间的增长率 ) 7. 增加数据库的起始空间或最大空间 1) 作用:当主数据文件需要增加最大占用系统空间时,可以修改其最大的使用空间 2) 增加数据库的起始空间的命令 alter database hehe //alter修改 定义修改的数据库名为hehe modify file //modify修改 file文件 ( name = ‘hehe_ndf’, //修改的文件名为hehe_ndf size = 20MB //修改后的大小为20MB[迪14] ) 8. 收缩数据库文件空间容量 1) 作用: 2) 收缩数据库其实空间的命令 use hehe //连接数据库名为hehe dbcc shrinkfile (N’hehe_log’,5) //使用dbcc管理工具,N是代表的name(名字),文件逻辑名为hehe_log,收缩为5mb GO 9. 分离数据库、附加数据库(分立与附加要配合使用) 1) 作用:在数据库迁移时,数据库正在被sqlserver调用时,无法迁移,我们需要对数据库进行分立操作,让管理系统不再调用数据库,然后就可以进行附加操作 2) 分离数据库命令 use master //链接数据库名master的主数据库 exec[迪16] master[迪17] .dbo[迪18] [迪19] .sp_detach_db [迪20] @dbname[迪21] =N’hehe’ //将库名为hehe的数据库从master分离出去 3) 附加数据库命令 4) create database hehe on //添加名为hehe的数据库,并on开启 (filename = ‘f:haha.mdf’), //添加数据库的路径,继续添加用,隔开 (filename = ‘f:hehe.mdf’) //添加数据库的路径 for attach //attach附加的意思 10. 删除数据库 1) 忘记就可以了没必要记住 2) 删除数据库命令: Drop database hehe //删除库名为hehe的数据库 十、 表的管理 1. 数据类型 1) 精准数字(存储整数) a) Int 4字节存储 2,147,483,647 b) Bigint 8字节存储 长字节的int类型 c) Smallint 2字节存储 65535 d) Tingint 1字节存储 0-255之间的整数 #电话号码不可以设置为int类型,因为位数不够,要设置为字符串类型 2) 位数型 3) 小数型 a) Decimal 8字节存储 格式为:decimal(8[迪24] ,2[迪25] ) b) Numeric 8字节存储 格式为:numeric(8,2) 4) 货币型 a) Money 8字节存储 b) Smallmoney 4字节存储 5) 近似数字 a) Float 8字节存储 b) Real 4字节存储 6) 字符串 不加n 存储数字、英文 一 个字节,存储汉字为 两 个字节 a) char() 最大8000个字符,4000个汉字,存储固定长度[迪26] 的字符串 b) varchar() 最大8000个字符,4000个汉字,存储可变长度[迪27] [迪28] 的字符串 c) text() 存储20亿个字符,10亿个汉字 //存储文章,文本 注意事项:再添加记录时,不能将多种语言混合输入到列表中,会出现乱码 7) Unicode字符串 国际通用型字符串,将所有字符都改为双字节,大部分语言文字放入一个字库中,能够相互兼容 加上n以后 存储汉字和英文都为 两 个字节 a) nchar() 最大4000个字符,固定长度 b) nvarchar() 最大4000个字符,可变长度 c) ntext 最大10亿个字符 字符串备注: text ntext 存储文章,下面的等于上面这两个 varchar(max) nvarchar(max) 8) 二进制字符串 存储图片文件类数据,常用于存储.bmp[迪29] [迪30] 的图片 binary 8000字节存储 固定长度 varbinary 8000字节存储 可变长度 image 存储容量较大的图片文件,存储文件低(淘汰) 9) 日期与时间 a) date 3字节存储 格式:年-月-日 例:2017-02-21 b) time 3-5字节存储 格式:小时:分:秒 例:16:51:59 c) datetime 8字节存储 格式:年-月-日 小时:分:秒 [迪31] 例:2017-02-21 6:51:59 2. 命令 1) 创建表 use haha //链接数据库haha create table 成绩 //创建表名称为”成绩 ( 姓名 char(4), //定义姓名列类型为char大小为4字节 年龄 smallint, //定义年龄这行类型为smallint 成绩 smallint //定义成绩这行类型为smallint ) 1) 添加数据 insert into 成绩 //定义需要添加数据的表格为“成绩 values(‘陈迪[迪32] ‘,19,99) //添加内容第一列为“陈迪“,第二列为19,第三列为99 2) 查询数据 select * from 成绩 //select定义查询的列,from定义要查询的表 1. 完整性约束 1) 实体完整性 → 二维表,行,列 行记录必须要完整,标记为非空的,必须要填写数据,并且关键字不能空 2) 域完整性 → 列,规则来填,进行填充字段 域就是列,字段填写的数据满足字段的类型 3) 引用完整性 两张表建立关系时,建立引用的字段内容必须相同 4) 自定义完整性 → 对数据范围进行控制 对添加的范围进行控制 2. 主键约束 1) 定义:在一张表中能快速定义一行记录的字段可以设置为主键 2) 设置主键对字段的要求: 要有唯一性 一列字段不能为空 一列字段不能有重复值 3) 主键作为表中的关键键有什么作用: 主要用来快速查询数据 表与表之间建立关系使用的 4) 命令 —创建主键约束 create table biao2 ( id int primary key,[迪33] —定义主键 name nvarchar(10) ) insert into biao2(id,name) values (1,‘陈迪‘) —查看表格 select [迪34] * from[迪35] biao3 —因为定义为主键的内容必须唯一,所以不能在主键一列内存入相同数值 insert into biao2(id.name) values (1,‘谔谔‘) 违反了 PRIMARY KEY 约束“PK__biao2__3213E83F7DB1EEA5”。不能在对象“dbo.biao2”中插入重复键。重复键值为 (1)。 —并且定义为主键一列的内容不能为空 insert into biao2(id,name) values (NULL,‘哈哈‘) 不能将值 NULL 插入列 ‘id’,表 ‘taian.dbo.biao2’;列不允许有 Null 值。INSERT 失败。 3. 唯一性约束 1) 定义:指定字段中的数据不能重复,但可以为空,在每张表中可以对每个字段建立唯一性约束 2) 命令: —唯一性约束 create table biao3 ( id int primary key, —定义主键约束 name char(10) unique, —定义唯一性约束(可以为空但是不能相同) age int unique not null[迪36] —定义唯一性约束(不能为空也不能相同) ) —添加数值(正确添加) insert into biao3(id,name,age) values (1,‘陈迪‘,19) —查看表格 select [迪37] * from[迪38] biao3 —添加数值(测试name的唯一性约束和age的唯一约束性) insert into biao3 (id,name,age) values (2,‘陈迪‘,19) 违反了 UNIQUE KEY 约束“UQ__biao3__72E12F1B24F4527F”。不能在对象“dbo.biao3”中插入重复键。重复键值为 (陈迪 )。 再将陈迪改为丁丁 违反了 UNIQUE KEY 约束“UQ__biao3__DE509E6B191DF1F3”。不能在对象“dbo.biao3”中插入重复键。重复键值为 (19)。 —添加数值(测试name的可NULL和age的不可NULL) insert into biao3 (id,name,age) values (2,NULL,NULL) 不能将值 NULL 插入列 ‘age’,表 ‘taian.dbo.biao3’;列不允许有 Null 值。INSERT 失败。 4. 检查约束 1) 定义:设置字段中的数据范围或指定的字符串在添加数据时,会对数据进行条件比较,满足条件的可以输入,不满足条件的将会被丢弃,检查约束目前只有MySQL不支持使用,但是在MySQL中,语句不会出错 2) 命令: —检查约束 create table biao4 ( id int primary key, —定义主键 name nvarchar(10) unique, —定义唯一性约束 age int check ( age>16 and age<35 ), —检查约束将age的范围定义在大于16并小于35岁之间 sex nchar(4) check ( sex=‘男‘ or sex=‘女‘ or sex=‘人妖‘) not NULL[迪39] —检查约束将sex的范围定义在‘男‘或‘女‘或‘人妖‘ ) —添加数值(正确添加) insert into biao4 (id,name,age,sex) values (1,‘陈迪‘,17,‘男‘) —查询数值 select * from biao4 —添加数值(测试age和sex的范围是否生效) insert into biao4 (id,name,age,sex) values (2,‘丁丁‘,16,‘中‘) INSERT 语句与 CHECK 约束“CK__biao4__age__2B3F6F97”冲突。该冲突发生于数据库“taian”,表“dbo.biao4”, column ‘age’。 再将16改为正确值 INSERT 语句与 CHECK 约束“CK__biao4__sex__2C3393D0”冲突。该冲突发生于数据库“taian”,表“dbo.biao4”, column ‘sex’。 —添加数值(测试age和sex中的数值可否为NULL) insert into biao4 (id,name,age,sex) values (2,‘丁丁答‘,NULL,NULL) 不能将值 NULL 插入列 ‘sex’,表 ‘taian.dbo.biao5’;列不允许有 Null 值。INSERT 失败。 将sex改为男 (1 行受影响) //添加成功 5. 默认约束 1) 定义:用户没有对该字段添加数据时,默认添加一个指定的字符串或数据 2) 命令: —默认约束 create table biao6 ( id int primary key,—此列字段为主键 name char (20), sex char (4) default ‘男‘ not null–default为默认约束的命令字,并且不能添加空值 ) —将sex字段添加空值 insert into biao6 (id,name,sex) values (1,‘陈迪‘,NULL) 不能将值 NULL 插入列 ‘sex’,表 ‘taian.dbo.biao6’;列不允许有 Null 值。INSERT 失败。 —不添加sex字段数值,测试默认约束是否生效 insert into biao6 (id,name) values (2,‘陈迪‘) —查看添加 select * from biao6 6. 外键约束 1) 定义:建立给字段添加数据时的范围参照,当被参照字段中存在相应的数据时,建立外键的字段才能添加相应的数据 2) 建立规则: a) 被参照字段必须是表中的主键 b) 两个相互引用的字段,数据类型要相同, c) 两个相互引用的字段,数据长度也要相同 d) 建立外键的字段遵守其不可逾越范围即可,可以重复 3) 命令: —外键约束 —创建biao_a create table biao_a ( id int primary key, —被参照的字段必须是表中的主键 name char(10) ) —创建biao_b create table biao_b ( id int, gongzi int, constraint fk_id foreign key (id) references biao_a(id) —语法格式:constraint 约束名称 foreign key (建立外键名称) references 被引用的表名(被引用的字段名) ) —向biao_a添加数据 insert into biao_a(id, name) values (1,‘陈迪‘) —向biao_添加数据,必须遵守外键规则 insert into biao_b(id,gongzi) values (1,5000) select * from biao_b 7. 非空约束 1) 概念:指定字段不能为空,在常用的约束中,主键和外键自带非空约束,默认约束也不需要添加非空组合 2) 使用方法:在需要标识为非空的字段后面添加not null 8. 自动增长 1) 概念:指定字段添加数据时,可以为空,但是id会自动增长 2) 使用环境:讲数据复制到另一个表中,进行操作时,对数据进行整理 3) 命令: mysql> create table biao4 -> (id int primary key auto_increment, name char(20)); 十二、 表内数据的管理 1. 添加字段 1) 定义:将字段添加到表中,添加到最后一行,新添加的字段不会对现有数据做出任何修改。 2) 命令:alter table 表名 add (新添字段 新添字段的数据类型) a) 添加一个 mysql> alter table biao1 add (age int); —在biao1中添加age字段并定义为int类型 b) 添加多个· mysql> alter table biao1 add (age int, csny date); 2. 修改字段名 1) 定义:将指定字段修改为自定义字段,当需要修改的表没有被引用时可以修改字段 2) 命令·:alter table 表名 change 修改字段 修改字段后 数据类型 mysql> alter table biao1 change name name1 char(20); —将biao1中的字段name修改为name1,并定义为char(20)数据类型 3. 修改字段的数据类型 1) 定义:将指定字段的数据类型修改为自定义类型,修改时如果是没有数据的空表可以随意修改,如果有数据则需要考虑数据的兼容性。 2) 命令:alter table 表名 change 字段名 字段名 修改后的数据类型 alter table biao2 change id id int; 4. 删除字段 5. 添加删除约束 1.添加主键约束 方法1: alter table 表名 modify 字段名 数据类型 primary key; 方法2: alter table 表名 change 旧字段名 新字段名 数据类型 primary key; 方法3: alter table 表名 add primary key(字段名); 方法4: alter table 表名 add constraint 约束名 primary key(字段名); 例: alter table biao9 change id id int primary key; 2.删除主键约束 alter table 表名 drop primary key; 例: alter table biao1 drop primary key; 注意:删除主键后,会保留字段中的非空约束。 3.添加唯一性约束 语法: alter table 表名 change 旧字段名 新字段名 数据类型 unique; 例: alter table biao9 change name name char(20) unique; 4.删除唯一性约束 语法: alter table 表名 drop index 字段名(定义了唯一性约束的字段名) 例 alter table biao9 drop index name; 5.添加默认约束 语法: alter table 表名 change 旧字段名 新字段名 数据类型 default 默认数值 例: alter table biao9 change sex sex char(4) default “男”; 6.删除默认约束 语法: alter table 表名 change 旧字段名 新字段名 数据类型; 例: alter table biao9 change sex sex char(4) 7.添加非空约束 语法: alter table 表名 change 旧字段名 新字段名 数据类型 not null; 例: alter table biao9 change age age int not null; 8.删除非空约束 语法: alter table 表名 change 旧字段名 新字段名 数据类型; 例: alter table biao9 change age age int; 9.添加外键约束 语法: alter table 表名 add constraint 约束名 foreign key(外键字段) references 参照表名(参照字段名) 例: alter table biao9 add constraint fk_jg foreign key(jg_id) references jiguan(jg_id); 10.删除外键约束 语法: alter table 表名 drop foreign key 约束名; 例: alter table biao9 drop foreign key fk_jg; 6. 添加数据 1) 定义:向字段中添加数据 2) 命令:insert into 表名 (字段名1,字段名2..) values (值1,值2…),(值1,值2….) insert into biao1 (id,name,sex,age) values (1,’陈迪’,’男’,20) , (2,’丁月’,’女’,’18’); 1) 定义:向字段中添加数据 2) 命令:insert into 表名 (字段名1,字段名2…) select 值1,值2… union select 值1,值2… 7. 修改数据 1) 修改单个数据 2) 命令:update 表名 set 字段名=修改后的值 where 字段名=值[迪40] 8. 删除数据 1) 删除所有数据 delete from 表名; 2) 删除指定的数据记录 delete from 表名 where字段名=需要删除的数据; [迪1]针对数据库和表的操作 [迪2]针对数据的操作 [迪3]事务日志文件的作用 1. 记录所有事物的SQL语句 2. 用于恢复数据库 3. 必须创建的文件,也可由用户指定路径创建,也可由系统自动创建在与主文件在同一路径下的 4. 数据库可以包含多个日志文件 [迪4]创建名称为hehe的数据库 [迪5]创建数据库的主文件 [迪6]主文件:包含数据库的启动文件,用于存储数据,每个数据库中都会有一个主文件 [迪7]定义数据库的逻辑名 [迪8]定义数据库的物理存储路径 [迪9]定义该主文件的起始大小 [迪10]起始大小默认为8MB [迪11]定义该主文件的最大占用空间容量 [迪12]最大占用空间默认为无限大 [迪13]数据库可用空间的增长率,定义主文件最大占用空间最大时再添加多少 [迪14]修改后的大小不能小于未修改前的大小 [迪15]GO语句是分割两个命令,前一个命令失败,不会影响下一个语句的执行 [迪16]执行存储过程中的动作 [迪17]系统数据库 [迪19]sa相当于班主任,而dbo就相当于单个组的管理员 [迪20]存储过程,数据库的命令脚本 [迪21]变量名 [迪22]特殊数据类型,只能存储0或者1或NULL(空),要么trun为真,要么false为假 [迪23]NULL在系统中是一个标记,不是一个·数据,标记为空 [迪24]总长度 [迪25]小数点后长度 [迪26]不加var,固定长度类型,比如定义char(10),就算列表中只输入1,其他空间系统一样会自动补全 [迪27]加var,可变长度类型,会根据实际输入的字符对占用存储空间大小进行调节 [迪28]相对来说更节省存储空间 [迪29].bmp格式的图片为位图 [迪30]位图:像素点阵图形,最原始的图片结构 [迪31]注意:中间是以空格方式隔开 [迪32]向列表中添加字符串汉字时,必须要用单引号 ‘’ 括起来 [迪33]将此列定义为主键 [迪34]select查询列,* 表示为查询所有列 [迪35]定义要查询的表 [迪36]自定义添加,添加not null表示为不能为空 [迪37]select查询列,* 表示为查询所有列 [迪38]定义要查询的表 [迪40]这一段需要找到表中唯一的值来进行标记。
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算