MySQL数据库的基本概述和基本应用

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:
数据库的基础概述

数据库服务器:它只是提供了帮忙实现数据存储,数据管理的功能

一个数据如何编排受限于一个数据库服务器的数据模型
数据模型:数据逻辑模型和数据的物理模型
逻辑模型:数据本身在逻辑意义上(人类可以理解的基础上)是如何组织的 
物理模型:数据如何存储下来(如何存储在文件里面,一共需要几个文件,文件需不需要放在某个特定文件系统上,文件如何命名等等)

逻辑模型:层次模型(一个父节点可以有多个子节点,但一个子节点只能有一个父节点)结构很清晰但会形成大量数据冗余

数据冗余:在一个数据集合中重复的数据称为数据冗余. 

网状模型:(一个父节点可以有多个子节点,一个子节点也可以有多个父节点)结构化不够清晰,不适合数据存储方式。

关系模型:又称作实体关系模型,它没有所谓的节点意义上的定义,也就是没有根节点上的定义了,它就是把一个根当做一个存储范围,而在这个存储范围内存在有被描述为实体的东西。
实体:就像是学员信息库中的学生,成绩,课程等等。
关系:通过某一个对应的属性建立联系的某种机制就称为实体之间的关系。
约束:定义的数据必须符合某个条件
引用性约束(外键约束):就如同你填写的任何数据必须在其他表中出现过。
检查性约束(自定义的检查条件):自己定义的检查条件,通常与现实意义有关系。
唯一性约束:能够保证通过某一个属性或多个属性来保证某个特定实体的唯一性(允许为空,允许同时为空。一张表可以有多个唯一性约束)
主键(一张表只能有一个主键约束,不允许出现空值和重复出现)

有多张表组成的就叫做数据库
表是由行和列组成的。
行:就是一个具体的实体
列:指的是属性,就是为了定义实体的。
一个表中没有行就叫做空表,但是一个表不可以没有列。
数据:对应实体的各种属性
为了降低存储冗余,定义多个实体
通过某属性跟其他表建立关联关系

数据库对象:数据库,表,索引,视图(虚表),用户,触发器,存储过程,存储函数,游标。
数据库:是按照数据结构来组织、存储和管理数据的仓库。
表:用来组织信息的数据结构。
索引:是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 
视图:就是可以将多个表(>=1)联合组织起来合并成一个类似数据表的技术方便用户多表查询
用户:一些权限的集合是用来读取数据库中资源的凭证。
触发器:是一个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete,update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。
存储过程:(StoredProcedure)是一组为了完成特定功能的语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程
存储函数:
游标:是系统为用户开设的一个数据缓冲区,存放语句的执行结果。每个游标区都有一个名字。用户可以用语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。

开放数据库互连(Open Database Connectivity,ODBC)是微软公司开放服务结构(WOSA,Windows OpenServicesArchitecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。ODBC文档是用C语言描述的,许多实际的ODBC驱动程序也是用C语言写的。  

JDBC(JavaDataBaseConnectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。 

数据库的基本操作 :  

数据库对象的操作:
创建 CREATE
修改 ALTER
删除 DORP
数据库定义语言DDL(DataDefinitionLanguage),是用于描述数据库中要存储的现实世界实体的语言。一个数据库模式包含该数据库中所有实体的描述定义。这些定义包括结构定义、操作方法定义等。

数据库表的操作:
添加 INSERT INTO
删除 UPDATE
修改 DELETE
查询 SELECT
数据操纵语言DML(DataManipulationLanguage),用户通过它可以实现对数据库的基本操作。例如,对表中数据的查询、插入、删除和修改。在DML中,应用程序可以对数据库作插,删,改,排,检等五种操作。

数据库中用户或角色的操作:
授予权限 GRANT
取消权限 REVOKE
数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、DENY、REVOKE等语句,在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言。  

变量:内存空间,用来存储数据的。
变量类型:
存储空间的大小
存储数据的格式
MySQL的数据类型:  
MySQL的数据类型主要有三种:数值型,字符型,日期时间型(MySQL中不存在真正意义上的布尔型)
数值型
精确数据:
整型:是不包含小数部分的数值型数据。整型数据只用来表示整数,以二进制形式存储,占用4个字节。
TINYINT 一个很小的整数。从 0 到 255 的整型数据。存储大小为 1 字节。
SMALLINT 一个小整数。从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。
MEDIUMINT是一个中等大小整数。有符号的范围是-8388608到8388607,无符号的范围是0到16777215。存储大小为占3字节
INT(INTEGER)一个正常大小的整数。从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的同义字为 integer。
BIGINT 一个大整数。从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。
近似数据:
浮点型:表示带有小数的数据,与之相对的是整型,也就是只能保存整数。
单精度浮点型(FLOAT)是数值型数据的一种,用字母F表示。它与数值型数据完全等价,只是在存储形式上用浮点格式,主要是为了得到较高的计算精度。
双精度浮点型(DOUBLE)是具有更高精度的一种数据型数据,用字母B表示。它采用固定长充浮点格式存储,占用8个字节。
字符型:
字符:
CHAR(length): CHAR(20) 使用指定长度的固定长度表示的字符串。 占用多余的字符 ,不区分大小写。
VARCHAR(length):VARCHAR(20)可以保存可变长度的字符串。其中M代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。 不会占用多余字符,也不区分大小写。
CHARACTER SET:字符集,CHAR和VARCHAR的限定符
COLLATE:排序规则,CHAR和VARCHAR的限定符
BINARY(length): 严格区分字母大小写。
VARBINARY(length): 严格区分字母大小写。
BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

如果检索的值必须与指定进行存储而没有填充的值相同,最好使用BLOB数据类型。

创建表时,MySQL 可以默默更改BINARY或VARBINARY列的类型。

TEXT:文本格式,最大长度为65535(2^16-1)个字符。而且不区分大小写。
TINYTEXT 一个TEXT列,最大长度为255(2^8-1)个字符。
TEXT 
MEDIUUMTEXT 一个TEXT列,最大长度为16777215(2^24-1)个字符。
LONGTEXT 一个TEXT列,最大长度为4294967295(2^32-1)个字符。
BLOB:二进制的大文本,最大长度为65535(2^16-1)个字符,区分大小写。
TINYBLOB 最大长度为255(2^8-1)个字符。
BLOB
MENDIUUMBLOB 最大长度为16777215(2^24-1)个字符。
LONGBLOB 最大长度为4294967295(2^32-1)个字符。
两种复合数据类型 ENUM 和 SET,
ENUM(0,1)枚举类型 枚举。一个仅有一个值的字符串对象,这个值式选自与值列表'value1'、'value2', ...,或NULL。一个ENUM最多能有65535不同的值。
SET 基本元素 一个集合。能有零个或多个值的一个字符串对象,其中每一个必须从值列表'value1', 'value2', ...选出。一个SET最多能有64个成员。 
日期时间型: 
日期型:DATE一个日期。支持的范围是'1000-01-01'到'9999-12-31'。MySQL以'YYYY-MM-DD'格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列。时间进行存储时用/标记(2012/10/25)
时间型:TIME一个时间。范围是'-838:59:59'到'838:59:59'。MySQL以'HH:MM:SS'格式来显示TIME值,但是允许你使用字符串或数字把值赋给TIME列。
日期数据行: DATETIME 一个日期和时间组合。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL以'YYYY-MM-DD HH:MM:SS'格式来显示DATETIME值,但是允许你使用字符串或数字把值赋给DATETIME的列
年:YEAR 一个2或4位数字格式的年(缺省是4位)。允许的值是1901到2155,和0000(4位年格式),如果你使用2位,1970-2069( 70-69)。MySQL以YYYY格式来显示YEAR值,但是允许你把使用字符串或数字值赋给YEAR列。(YEAR类型在MySQL3.22中是新类型。)

类型通常还有修饰符:UNSIGNED修饰符规定字段只保存正值。因为不需要保存数字的正、负符号,可以在储时节约一个“位”的空间。从而增大这个字段可以存储的值的范围。 

MySQL的简单基本应用:

数据库对象:MySQL命令使用过后都要用分号结束
创建:CREATE
CREATE {DATABASE(数据库)|TABLE(表)|INDEX(目录)|VIEW(索引)|USER(用户)}
 CREATE DATABASE db_name;


修改:ALTER
ALTER DATABASE;
删除:DORP
DROP DATABASE db_name;


SHOW DATABASES 查看数据库是否创建成功。  

其实数据库是一个目录文件存放在/var/lib/mysql/中的目录。如下图所示:


在mysql中USE mydb; 把mydb作为默认库,下面执行的所有操作过程都将在此数据库中执行。  

创建表:
CREATE TABLE students (StuID INT UNSIGNED, Name CHAR(20)); 表中的每一个字段之间用逗号空格隔开。
DESC students;显示创建的表结构
删除表中的字段:ALTER TABLE students DORP StuID;
添加一个字段:ALTER TABLE students ADD ClassID INT(10) UNSIGNED;

查看更多操作信息使用help alter table;

数据的操作应用:
新增:INSERT INTO (INTO是可省略的)
INSERT [INTO] tb_name [(col1,col2,...)] {VALUE|VALUES} (VAL1,VAL2,...); []表示可省略,若省略就表示所有
修改:UPDATE
UPDATE tb_name SET column_name=value WHERE condition ;修改特定数据
WHERE中的condition指的是对表中某字段或某些字段做判定(等值比较,通配符匹配,正则表达式匹配)
如:WHERE StuID=2
WHERE StuID>2
WHERE BirthDate IS NULL NULL和0是不同的。
其中的%:任意长度的任意字符
其中的_:任意单个字符
WHERE column LIKE 表示搜索某名字中带某个字符的 通配符
WHERE column LIKE %i%;
WHERE column RLIKE 'pattern' 正则表达式
WHERE column RLIKE '*i.*' 搜索某字符中带i字符的

删除:DELETE
DELETE FROM tb_name WHERE condition(条件);
查询:SELECT  
SELECT 字段 FORM 表 WHERE condition; (支持where条件)

数据库中用户或角色的基本操作应用
授予权限 GRANT 帮助信息:HELP GRANT

GRANT PRIVILEGES ON dbname.tbname TO 'username'@'host' IDENTIFIED BY 'password';
username@host 这个用户名的主机来源,用户名要用引号
Host:可以是IP,也可以是NETWORK(网络地址),172.16.%.% (由172.16.开头的合法的网络地址)
grant create,select on zhaodb.* to tom;-----把zhaodb库的所有表的创建和查询赋予tom
权限设置之后不会立即生效使用PLUSH PRIVILEGES;刷新数据立即生效 
取消权限 REVOKE
REVOKE privileges ON dbname.tbname FROM 'username'@'host';  

设置好权限后可进行mysql 客户端连接操作:
-h SERVER -u USERNAME -p
如:mysql -udbuser -h172.16.11.1 -p 本人使用的是172.16.11.2作为客户端机器,注意客户端上必须安装了mysql呦。。。不过这样不安全所以。。。。。。

给客户端加密码
SET PASSWORD FOR 'username'@'host'=PASSWORD('password')
PLUSH PRIVILEGES;立即生效
如:SET PASSWORD FOR 'dbuser'@'172.16.%.%'=PASSWORD('redhat')

收回一个用户的所有权限:删除user
DROP USER 'username'@'host'

本文转自 z永 51CTO博客,原文链接:http://blog.51cto.com/pangge/1039901

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
阿里云牵手海亮科技,共建“教育科技数据库创新应用中心”
海亮科技选择引入阿里云PolarDB开源分布式版(PolarDB for Xscale)数据库,不仅能解决海亮科技数据库业务中面临的可靠性、稳定性问题,也为海亮科技业务的高速发展提供了更好的灵活性和可扩展性。
|
1月前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
272 4
|
1天前
|
应用服务中间件 数据库
Tomcat 的数据库连接池设置与应用
Tomcat 的数据库连接池设置与应用
10 3
ly~
|
1天前
|
存储 安全 搜索推荐
数据库的应用
数据库在众多领域中发挥着关键作用。在企业管理与运营方面,它支持客户关系管理和企业资源规划,帮助企业了解客户需求、优化资源配置;在金融领域,银行系统和证券交易依赖数据库保障安全性和准确性,进行风险评估;在医疗保健行业,电子病历管理和医疗资源管理通过数据库提高诊断准确性和资源利用率;在教育领域,学生信息管理和在线教育平台利用数据库优化教学管理,提供个性化学习体验;在电子商务中,商品管理和订单管理则确保了信息的准确性和高效处理。
ly~
9 1
|
3天前
|
关系型数据库 数据挖掘 数据库
解析数据库联结:应用与实践中的 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN 与 CROSS JOIN
解析数据库联结:应用与实践中的 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN 与 CROSS JOIN
10 1
|
16天前
|
Cloud Native 关系型数据库 分布式数据库
阿里云牵手海亮科技,共建“教育科技数据库创新应用中心”
近日,阿里云与世界500强旗下、国内领先的教育服务提供商海亮科技集团(以下简称“海亮科技”)达成合作,联合成立“教育科技数据库创新应用中心”。双方将充分整合优势资源,共同推进教育科技领域的数据库技术研究和国产数据库的应用与发展。
56 8
|
13天前
|
存储 搜索推荐 数据挖掘
数据库的应用
数据库在众多领域发挥着重要作用。在企业管理中,它助力客户关系、人力资源和财务管理,提升决策科学性和效率;金融领域中,银行系统、证券交易和保险行业依托数据库保障交易安全、投资决策及风险管理;医疗行业则通过电子病历管理和数据分析提高诊疗准确性并优化资源配置;电子商务运用数据库实现商品、订单管理和用户行为分析,增强购物体验;教育领域中,数据库支持学生信息、教学资源管理和教育数据分析,促进家校沟通与教学质量提升;科学研究方面,数据库促进数据共享、科研项目管理和深入数据分析,加速科学进步。
19 3
|
18天前
|
数据采集 关系型数据库 MySQL
MySQL表约束的种类与应用
在设计数据库时,合理应用各种约束对于创建一个结构化良好且能够有效维护数据完整性的数据库至关重要。每种约束类型都有其特定的应用场景,理解并正确应用这些约束,可以大大提高数据库应用的稳定性和性能。
29 3
|
2月前
|
缓存 前端开发 JavaScript
Rails应用慢如蜗牛?揭开数据库到前端的全方位性能优化秘籍,从此告别龟速加载!
【8月更文挑战第31天】本文探讨了Ruby on Rails应用的性能优化方法,涵盖数据库查询与前端渲染。通过具体代码示例,介绍了如何使用`includes`避免N+1查询问题,利用缓存机制提高效率,以及通过合并和压缩CSS及JavaScript文件优化前端渲染。这些技巧有助于全面提升应用性能和用户体验。
37 1
|
2月前
|
存储 C# 关系型数据库
“云端融合:WPF应用无缝对接Azure与AWS——从Blob存储到RDS数据库,全面解析跨平台云服务集成的最佳实践”
【8月更文挑战第31天】本文探讨了如何将Windows Presentation Foundation(WPF)应用与Microsoft Azure和Amazon Web Services(AWS)两大主流云平台无缝集成。通过具体示例代码展示了如何利用Azure Blob Storage存储非结构化数据、Azure Cosmos DB进行分布式数据库操作;同时介绍了如何借助Amazon S3实现大规模数据存储及通过Amazon RDS简化数据库管理。这不仅提升了WPF应用的可扩展性和可用性,还降低了基础设施成本。
61 0

热门文章

最新文章