IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL第一讲 -> 正文阅读

[大数据]MySQL第一讲

目录

一、创建数据库及数据库表

一、 本章重点

二、 数据库

2.1数据库概述

2.2数据库分类

2.3三种数据模型

2.4 MySQL简介

三、MySQL的安装与连接

四、MySQL的使用

4.1 远程连接数据库

4.2 数据库软件

4.3 MySQL数据文件结构

4.4 表字段类型

4.5 数据完整性

五、数据库的语法使用

5.1 简单入门语法

5.2 创建删除数据库

5.3 建表删表语句

5.4 表格管理


一、创建数据库及数据库表

一、 本章重点

安装MySQL

创建数据

建表语句

连接MySQL数据库

二、 数据库

2.1数据库概述

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。

在信息化社会,充分有效地管理和利用各类信息资源,是进行科学研究和决策管理的前提条件。数据库技术是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和决策管理的重要技术手段。

发展历程:从数据管理角度分析,分为三个阶段

人工管理阶段 20世纪50年代中期之前 ,写在纸上

文件系统阶段 20世纪50年代中期到60年代中期 ,使用Word或者Excel

数据库系统阶段 20世纪60年代后期 ,数据库

2.2数据库分类

按照早期的数据库理论,比较流行的数据库模型有三种,分别为层次式数据库网络式数据库、关系型数据库(前两者已经基本消失)。

而当今的互联网中,最常用的数据库模型主要是两种即 关系型数据库非关系型数据库

数据库就是数据表数据库关系数据库关系对象的集合。

2.2.1关系型数据库

关系型数据库以行和列的形式存储数据,以便于用户理解。这一系列的行和列被称为表,一组表组成了数据库。 关系型数据库是用表的形式进行存储数据,列是固定的 ,行可以动态添加,这种形式称之为关系。

常见的关系型数据库 : MySQL、 Oracle、 SqlServer(服务器)

MySQL:自己独立,mysql界面化 数据量都布达不到商业要求,早期的mysql都是一些小公司。开源。目前的MySql和商业数据库媲美。大部分公司用的都是它。

Oracle关系型:商业数据库。甲骨文公司。效率高--非常稳定 ---提供系统函数非常丰富。

SqlServer:局限性比较大。微软。目前大部分的服务器都是liunx。只能在window系统下跑。

2.2.2非关系型数据库

非关系型数据库( not only struct query language ),译为不仅仅是结构化查询语言,也被称为NoSQL数据库,NoSQL的本意是“Not Only SQL”,指的是非关系型数据库,而不是“No SQL”的意思(没有SQL语句?),因此,NoSQL的产生并不是要彻底否定关系型数据库,而是作为传统关系型数据库的一个有效补充。NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。

非关系型数据库 经常作为关系型数据库的缓存数据库使用或者当成特殊业务处理应用

常见非关系型数据库:Redis MongoDB hbase redis 缓存

2.3三种数据模型

一篇搞懂数据模型【数据库概论】 - 知乎

2.3.1层次模型

层次数据模型就是的图形表示就是一个倒立生长的树,由基本数据结构中的树(或者二叉树)的定义可知,每棵树都有且仅有一个根节点,其余的节点都是非根节点。每个节点表示一个记录类型对应与实体的概念,记录类型的各个字段对应实体的各个属性。各个记录类型及其字段都必须记录。

2.3.2网状模型

网状数据模型可以看做是放松层次数据模型的约束性的一种扩展。网状数据模型中所有的节点允许脱离父节点而存在,也就是说在整个模型中允许存在两个或多个没有根节点的节点,同时也允许一个节点存在一个或者多个的父节点,成为一种网状的有向图。因此节点之间的对应关系不再是1:n,而是一种m:n的关系,从而克服了层次状数据模型的缺点。

2.3.3 关系模型

关系模型1970年由E.F.Codd提出的,是用二维表(Excel表)的形式表示实体和实体间的联系的模型。是现今数据库领域中应用最广泛的数据模型,简单、清晰。

面向对象关系模型

类:有属性和方法

面向对象数据模型把实体表示为类,一个类描述了对象属性和实体行为

数据表:二维表格的形式存储数据;类似于集合的存储。

行:一行数据,相当于类的实体对象

列:字段,相当于类的属性

面向对象关系模型

面向对象数据模型把实体表示为类,一个类描述了对象属性和实体行为

层次网状关系面向对象关系
优点简单,命令少,实体间联系固定的应用系统,层次模型性能优于关系模型,不次于网状模型。良好的完整性支持1.更直接描述现实世界;2.具有良好性能,存取效率高1.建立在严格数学概念基础上2概念单一数据结构简单清晰3.存取路径透明,数据独立性好。存储数据和操作,扩展性强
缺点表示非层次性不利,插入删除限制较多,查询节点需要通过双亲节点DDL语言极其复杂,数据独立性差查询不如非关系模型技术尚不成熟,无完全支持的DBMS产品

2.4 MySQL简介

MySql 服务器。写的是 SQL语言

MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。

由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。

MySQL这个名字,起源不是很明确。一个比较有影响的说法是,基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQL AB创始人之一的Monty Widenius的女儿也叫My。这两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。

MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB 的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。

Mysql优点

开源:MySQL源代码免费下载

简单:体积小,便于安装

性能优越:性能足够与商业数据库媲美

开源功能强大:提供的功能足够与商业数据库媲美

三、MySQL的安装与连接

MySQL官网:MySQL :: MySQL Downloads

1.下载MySQL

2.服务管理器中将自启动设置为手动启动

3.管理员身份运行命令提示符(小黑盒:win+r -->cmd)

开启服务:net start MySQL57(如果没有修改过服务名,我的服务名为MySQL5729)

关闭服务:net stop MySQL57

如果不以管理员身份运行,权限不够,会报错:发生系统错误

4.登录MySQL mysql –u 登录名 –p

本人为 mysql -uroot -p

如果出现不是内部命令或外部命令,也不是可运行的程序或批处理文件,就是没有配置环境变量。

path添加一下mysql安装的bin的路径

默认路径:C:\Program Files\MySQL\MySQL Server 5.7\bin

5.输入密码 进行登录

四、MySQL的使用

4.1 远程连接数据库

SQLGRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root';
grant all privileges ?on *.* to 'root'@'%' identified by 'root';
写命令的时候大小写不区分(一般推荐 要写大写全部大写  要写小写全部小写)
这里的123456为你给新增权限用户设置的密码,%代表所有主机,也可以具体到你的主机ip地址
flush privileges;?? 这句表示从mysql数据库的grant表中重新加载权限数据

4.2 数据库软件

Navicat官网:Navicat | 产品

数据库软件,一个软件可以包含多个数据库(一般一个项目只有一个数据库)

也可以通过数据库软件连接多人的数据库,

连接之前,要先把mysql数据库下的user表中的localhost的User列改为%

4.3 MySQL数据文件结构

MySQL的每个数据库都对应存放在一个与数据库同名的文件夹中,MySQL数据库文件包括:

MySQL(server)所建数据库文件

MySQL(server)所用存储引擎创建的数据库文件。

MySQL(server)创建并管理的数据库文件:

.frm文件:存储数据表的框架结构,文件名与表名相同,每个表对应一个同名frm文件,与操作系统和存储引擎无关,即不管MySQL运行在何种操作系统上,使用何种存储引擎,都有这个文件。除了必有的.frm文件,根据MySQL所使用的存储引擎的不同(MySQL常用的两个存储引擎是MyISAM和InnoDB),存储引擎会创建各自不同的数据库文件。

MyISAM数据库表文件:

.MYD文件:即MY Data,表数据文件。

.MYI文件:即MY Index,索引文件。

.log文件:日志文件。

InnoDB采用表空间(tablespace)来管理数据,存储表数据和索引。

ibdata1、ibdata2等:系统表空间文件,存储InnoDB系统信息和用户数据库表数据和索引,所有表共用。

.ibd文件:单表表空间文件,每个表使用一个表空间文件(file per table),存放用户数据库表数据和索引。

日志文件: ib_logfile1、ib_logfile2。

学习目标:使用命令来建库建表增删改查。

4.4 表字段类型

4.4.1数值型:

类型大小范围(有符号)范围(无符号)用途
TINYINT1 字节(-128,127)(0,255)小整数值
SMALLINT2 字节(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 字节(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4 字节(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8 字节(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
FLOAT4 字节(-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度浮点数值
DOUBLE8 字节(1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度浮点数值
DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值

4.4.2字符型

char c='A'

String s="abcef"

char 数据库:定长字符串。char(6):长度为6的字符串,这个字段中可以存储6个字符。——‘a’,系统会自动补全补空格补齐6个 保证占位一定是6个。

不足补齐,超出报错。比如:邮编、手机号

varchar(100):不定长。最大长度为100,如果存储一个a占位就是一个a长度,实际占位和实际内容有关,100是最大长度,不能超出,超出会报错。

CHAR0-255字节定长字符串
VARCHAR0-255字节变长字符串
TINYBLOB0-255字节不超过 255 个字符的二进制字符串
TINYTEXT0-255字节短文本字符串
BLOB0-65 535字节二进制形式的长文本数据
TEXT0-65 535字节长文本数据
MEDIUMBLOB0-16 777 215字节二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215字节中等长度文本数据
LOGNGBLOB0-4 294 967 295字节二进制形式的极大文本数据
LONGTEXT0-4 294 967 295字节极大文本数据

4.4.3日期型

类型大小**(字节)**范围格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3'-838:59:59'/'838:59:59'HH:MM:SS时间值或持续时间
YEAR11901/2155YYYY年份值
DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP81970-01-01 00:00:00/2037 年某时YYYYMMDD HHMMSS混合日期和时间值,时间戳

4.4.4二进制类型

文件存到磁盘上,路径存到数据库里

TINYBLOB0-255字节不超过 255 个字节的二进制字符串
BLOB0-65 535字节二进制形式的长文本数据,最大64k
MEDIUMBLOB0-16 777 215字节二进制形式的中等长度文本数据,最大16M
LOGNGBLOB0-4 294 967 295字节二进制形式的极大文本数据,最大4GB

4.5 数据完整性

目前一个最简单的表是没有安全性可言的,很多信息的录入都需要添加一些限制,但是目前mysql语句不支持设置限制,所以只能在建表的时候进行限制。

4.5.1数据完整性概念

数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)

数据完整性分为4类:

1)实体完整性(Entity Integrity)、

2)域完整性(Domain Integrity)、

3)引用完整性(Referential Integrity)

4)用户自定义完整性(User-defined Intergrity)。

1) 实体完整性:

实体完整性在表中的约束体现为:必须可以唯一性的标识这一行。必须有一个或多个字段可以直接找到这一行而且只找到这一行。

PRIMARY KEY(主键)约束:唯一 并且非空一个表只能有一个主键,一个主键可以包含1或者多列。

AUTO_INCREMENT (自增)约束:一般为主键服务。新增时无需指明本列值,系统会自动配置一个自动增长的数字

UNIQUE(唯一)约束:唯一但可以为空

2) 域完整性:

域完整性(Domain Integrity)是考虑如何限制向表中输入的值的范围

域完整性的约束:

1)FOREIGN KEY(外键)约束

2)DEFAULT(默认值)约束

3)NOT NULL(非空)约束

4)Check约束----MySql不支持

drop table if EXISTS tab_student; -- 如果表tab_student如果存在的话,就删除该表
?
create table tab_student(
-- auto_increment自增,一般配合主键使用
    stu_no int primary key auto_increment ,-- 主键保证非空 唯一
    stu_name varchar(200),-- 限制字段最多为200个字节
    stu_age int,
    stu_phone varchar(11) not null,-- 不允许为空
    stu_address varchar(2000) default '牛顿国际',-- 默认
    stu_sex varchar(2),
    stu_card varchar(20) unique -- 唯一列允许为空 但是不能重复
)

3) 引用完整性(Referential Integrity)

外键:两张表的关联关系。保证录入的一致性 删除的一致性 修改的一致性。一般情况下:本表的外键是另外一张表的主键

保证:外键表数据存储的值在主表的主键中一定能找到。

从表:新增或者修改外键有限制,不能大于主表主键的值

主表:修改主键或者删除数据时。

1)如果主表中没有对应记录,从表不能新增。

2)更新主表 、从表时,需要保证主从表数据的一致性

3)删除主表数据,从表中存在关联数据时也不能成功删除

4) 用户自定义完整性(User-defined Integrity)

规则

约束

触发器

五、数据库的语法使用

5.1 简单入门语法

show databases;  显示所有数据库
//系统数据库
information_schema:提供了访问数据库元数据的方式。
mysql:是mysql的核心数据库。
performance_schema :主要用于收集数据库服务器性能参数。
test : mysql创建的测试库。5的版本,8的版本没有
?
use? 数据库名称;  切换数据库(use mysql)就是切换到了mysql数据库
show  tables;  显示所有表(要先进入一个数据库)
select * from user;  必须在mysql数据库中。显示所有mysql数据库的用户信息
update user set ?authentication_string=password ('root') where user='root';?? 更改新密码为: root
flush? privileges;???刷新MySQL的系统权限相关表。修改密码后需要执行此语句
quit或者exit;  退出mysql

5.2 创建删除数据库

-- 格式:CREATE DATABASE? 数据库名 ?[default charset 编码格式 COLLATE 排序规则];
-- 建库语句
create database mybase01?default charset 'utf8' -- 字符编码格式
-- 字符编码格式一定要写,否则会出现中文不能转的异常
--COLLATE 'utf8_general_ci';
?
-- 删库语句
drop database mybase01;

5.3 建表删表语句

-- 建表
/*
create table 表名(
    字段名 数据类型(varchar...) 约束,
    字段名1 数据类型(varchar...) 约束,
    字段名2 数据类型(varchar...) 约束,
    字段名3 数据类型(varchar...) 约束,
    ....
    字段名n 数据类型(varchar...) 约束
)
*/
create table tab_student(
    stu_no int,
    stu_name varchar(200),
    stu_age int,
    stu_phone varchar(11),
    stu_address varchar(2000),
    stu_sex varchar(2)
)
/*
-- 删除
-- delete from 表名 :删除表中所有的数据,速度较慢,会保留日志,可以恢复,能加where条件(建议使用)
-- truncate table 表名 : 删除表中的所有数据,速度较快,不会保留日志,不可恢复,不能加where条件
-- drop table 表名  : 删除整张表
*/
delete from tab_student;

5.4 表格管理

-- 展示建表语句
show create table 表名;
-- 查看表结构
desc 表名;
?
-- 添加列
Alter table 表名 add 字段名? 数据类型? 约束;
-- 删除列
Alter table 表名 drop 字段名;
-- 修改列(前提是该列已经存在)
Alter table 表名 change 字段名? 新字段名? 新的数据类型? 新的约束;
?
-- 表外添加主键(格外注意复合主键(主键中有多个字段))
Alter table 表名? add? CONSTRAINT? 约束名? primary key(主键字段,字段2)
-- 表外删除主键(若是主键有自增,要先通过修改列删除自增)
Alter table 表名 drop primary key;
?
-- 添加外键
Alter table 表名 add constraint 约束名 foreign key(外键)references 另外一张表(主键)
-- 例:
alter table tab_student constraint fk_classid foreign key (class_idw) references tab_class(class_id)
-- 删除外键
Alter table 表名 drop foreign key 约束名
?
-- 添加default约束(除此之外也可以用修改列来添加)
alter table 表名 alter column 列名 set default ‘’;
?
-- 添加唯一约束
Alter? table? 表名? add? unique(列名);
?
-- 查看索引名
show index from tab_student;
-- 删除索引名
Alter? table? 表名? drop? index? 索引名/默认为列名

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 02:04:35  更:2022-09-15 02:06:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:22:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码