前言:
把头发扎起来,兜里放几颗薄荷糖,别搞暧昧上课认真,对不起这次我要赢。
一.什么是数据库???
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
在信息化社会,充分有效地管理和利用各类信息资源,是进行科学研究和决策管理的前提条件。数据库技术是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和决策管理的重要技术手段。
二.为什么要使用数据库???
- 大脑记忆会忘记,大量数据容易忘记
- 纸张容易被腐蚀
- 磁盘数据容易被窃取
- 数据库的优点
三.数据库的种类
- 网状型数据库:处理以记录类型为结点的网状数据模型的数据库
- 层次型数据库:用树形结构表示实体及其联系的模型称为层次模型
- 关系型数据库:在关系模型中,数据的逻辑结构为满足一定条件的二维表,表具有固定的列数和任意的行数,在数学上称为“关系”
而在当今的互联网中,最常见的数据库模型主要是两种,即关系型数据库和非关系型数据库。 SQL --- NoSQL
四.常见的关系型 数据库
- Oracle : 大型企业数据库,支持数据量,速度较快, 安全性非常好,提供完善的存储过程支持;新的版本提供了众多新功能;
- DB2(IBM): 大型企业数据库,支持数据量,速度较快,安全性较好;
- SQL Server(MS): 大型企业数据库,支持数据量,速度较快,安全性较好;
- MySQL(Oracle): 性能不错,使用方便,体积小,易扩展;是目前使用最广的关系型数据库;
- PostgreSQL(postgres):实现更完整,功能更强大;
五.关系型数据库的三范式
- 第一范式(1NF):
是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库,是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值;
- 第二范式(2NF):
要求数据库表中的每个实例或行必须可以被惟一地区分。
- 第三范式(3NF):
要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。(造成额外的SQL,可以通过冗余数据来提高性能,我们需要自己去管理数据的完整性)
拓 : NoSQL(NoSQL = Not Only SQL ) 解: 意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
拓 :
键值存储数据库(key-value) 键值数据库就类似传统语言中使用的哈希表。可以通过key来添加、查询或者删除数据库,因为使用key主键访问,所以会获得很高的性能及扩展性。 键值数据库主要使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署、高并发。 典型产品:Memcached、Redis、MemcacheDB
列存储(Column-oriented)数据库 列存储数据库将数据存储在列族中,一个列族存储经常被一起查询的相关数据,比如人类,我们经常会查询某个人的姓名和年龄,而不是薪资。这种情况下姓名和年龄会被放到一个列族中,薪资会被放到另一个列族中。 这种数据库通常用来应对分布式存储海量数据。 典型产品:Cassandra、HBase
面向文档(Document-Oriented)数据库 文档型数据库的灵感是来自于Lotus Notes办公软件,而且它同第一种键值数据库类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。 面向文档数据库会将数据以文档形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名词与对应值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或JSONB等多种形式存储。 典型产品:MongoDB、CouchDB
图形数据库 图形数据库允许我们将数据以图的方式存储。实体会被作为顶点,而实体之间的关系则会被作为边。比如我们有三个实体,Steve Jobs、Apple和Next,则会有两个“Founded by”的边将Apple和Next连接到Steve Jobs。 典型产品:Neo4J、InforGrid
咳咳,废话有点多了,继续看吧
六 .sql是什么??
SQL 是一种标准 - 但是... SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。其实就是定义了操作所有关系型数据库的规则。 不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。 注释:除了 SQL 标准之外,大部分 SQL 数据库程序都拥有它们自己的私有扩展!每一种数据库操作的方式存在不一样的地方,称为“方言”。
七.mysql登入的三种方法以及退出和启动:
mysql -uroot -p密码
mysql -hip -uroot -p连接目标的密码
mysql --host=ip --user=root --password=连接目标的密码
启动mysql 服务命令:net start mysql
停止mysql服务命令:net stop mysql
连接mysql服务命令:mysql -uroot -p
回车:输入密码
MySQL退出的两种方法 1. exit 2. quit
这里其实安装那一章写过了,这里就巩固一下....
八.数据库构成
数据库分为关系型数据库和非关系型数据库mysql是属于关系型数据库的一种 NoDB关系型数据库其实就是把数据储存到二维表中
二维表:就是一个由行和列组成的一个表格列:指定当前这一列下面的数据是什么类型的
行:表示为一个整体 不可以分割 读取数据是一条一条的读取
数据库是由多个表组成 表是由多个行和列组成 创建表的时候 必须要给表去设置一个唯一的列
九.MySQL注意事项
mysql不区分大小写 ABC和abc是同一个东西
mysql支持中文 但是不建议写
每一条sql语句或者命令要使用分号结束
sql语句中出现的符号必须是英文的
十.创建数据库
语法:create database 数据库名 charset = 'utf8';
charset = 'utf8' : 表示设置的数据库的编码格式为utf-8的国际编码
例 : 创建一个名为: Flipped(怦然心动) 的数据库
如果提示 : Query OK, 1 row affected, 1 warning (0.16 sec) 则创建成功
- 1 row affected:一行受到了影响
- 1 warning:一个警告 忽略
- 0.16 sec:执行时间
十一 .删除数据库
语法: drop database 数据库名;
如图我们把刚创建的 Flipped(怦然心动) 数据库删除成功.
这里我给大家提个醒 一定要加 ; (结束符)
十二.进入数据库后的简单命令
No database selected : 你没有连接数据库
show databases; 查看当前本地的所有数据库
use 数据库名; 链接数据库 反馈结果是Database changed说明数据库连接成功
show tables; 显示当前连接数据库的所有表格
Empty set: 表示当前数据库下没有表格
十三 创建表格
语法 : create table 表名(列名1 数据类型 [约束字段], 列名2 数据类型 [约束字段]....);
这里估计小白该问了,哎星月那个char(5) char(8),啥意思呢???
继续看下去吧.
十四.数据库类型
14.1字符串类型
char: 只能描述内容的长度是0-255这个范围的列
如果一个列被char描述了 那么这个列的所有数据 都只能储存最多255个字符
例 :char(长度): char(10)->表示最多只能储存10个字符 超过10个直接截断...
varchar:是一个可变长度的字符串类型 默认长度65535 如果长度超过了这个范围 会自动增长
text:大文本类型
14.2 数值类型
int:整型 +-21亿这个范围的整数 超过int范围的可以使用bigint
int: 默认长度是11
float:单精度浮点型 能保留小数点后6-7位
float(m, d): m表示这个小数的总长度 d表示小数点后要保留的长度
double:双精度浮点型 能保留小数点后15-16位 double(m, d):m表示这个小数的总长度 d表示小数点后要保留的长度
注意 : m一定是大于d的 别写错了不然,
14.3,时间类型
datetime:日期时间类型 表示年月日 时分秒
date:表示日期类型 年月日
time:表示时间类型 时分秒
'2022-8-23' date
'21:59:55' time
'2022-8-23 21:59:55' datetime
十五 .约束字段
语法 : create table 表名(列名1 数据类型 [约束字段], 列名2 数据类型 [约束字段]...);
主键约束: primary key
作用:限制被描述的列的数据不能为空也不能重复
如果一个列被主键约束了 那么这个列为当前表的唯一列
唯一约束:unique
作用:限制被描述的列的数据不能重复 允许为null null:表示没有任何数据
非空约束:not null
作用:限制被描述的列的数据不能为空
默认值:default
作用:可以给一个列添加一个默认值 字符串和时间都需要用单引号包裹起来
自动增长:auto_increment
只能使用在整数类型的列上
auto_increment要和主键约束一起使用 primary key auto_increment
作用:从1开始 每添加一条数据 在上一条的基础上+1
被自动增长描述的列不需要手动输入数据
十六 .小技巧
查看表结构 desc 表名;
如果是创建就用 create
删除 drop
修改 alter
添加列 : 语法:alter table 表名 add 列名 数据类型 [约束字段];
删除列 : 语法:alter table 表名 drop 列名;
修改列
change:修改列名、数据类型、约束字段
modify:数据类型、约束字段
修改列名语法:alter table 表名 change 原列名 新列名 数据类型 [约束字段];
例: 把stu_height修改成 stu_number 类型修改成 double(5, 1) 约束字段添加 not null
如果使用change进行修改 但是不想修改列名 那么原列名和新列名保持一致就好了
如果不想修改列名 可以使用modify关键
modify语法:alter table 表名 modify 列名 新数据类型 [约束];
十七.数据的基础操作
新增 insert
语法 : insert into 表名 values(数据1, 数据2, 数据3...);
方法二
语法 : insert into 表名(列名1, 列名2...) values(数据1, 数据2...);
- 优点1:数据和列名一一对应 保证数据的准确性
- 优点2:有默认值或者自动增长的列可以不写
添加多行数据
语法 : insert into 表名(列名1, 列名2...) values(数据1, 数据2...),(数据1,数据2...)...;
删除 : 删除(不用多说就是把数据删除)
修改: update 语法 : update 表名 set 列名 = 新值;
修改多个列的语法:update 表名 set 列1 = 值1, 列2 = 值2 ... where 条件;
查询
select查询指定的列
select 列名1, 列名2,..... from 表名;
stu_name等要查询出来的列 叫做检索列
查询所有列
select * from 表名;
* :所有列
语法 : select * from student_up;
回顾:
昨天的安装以及'星月十步'秘籍 (卸载) 详细: http://t.csdn.cn/FseRa
总结:
简单的安装及数据库的基本命令操作及使用
了解及掌握数据库的基本结构
了解数据库的基本概念及其作用
针对小白详细笔记