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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:
数据库的基础概述

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

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

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

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

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

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

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

数据库对象:数据库,表,索引,视图(虚表),用户,触发器,存储过程,存储函数,游标。
数据库:是按照数据结构来组织、存储和管理数据的仓库。
表:用来组织信息的数据结构。
索引:是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 
视图:就是可以将多个表(>=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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
存储 安全 搜索推荐
酒店管理系统的数据库的应用以及选择
酒店管理系统数据库关乎运营效率和服务质量。数据库用于数据存储、管理、分析及客户关系管理,确保房态与预订精准。选择时重视性能稳定性、数据安全、易用性、可扩展性和成本效益。合适的数据库能提升酒店运营效率并优化客户体验。
17 2
|
13天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
|
1月前
|
存储 监控 关系型数据库
数据库核心术语解析与应用
数据库核心术语解析与应用
61 0
|
1月前
|
存储 运维 关系型数据库
数据的力量:构筑现代大型网站之数据库基础与应用
数据的力量:构筑现代大型网站之数据库基础与应用
46 0
|
2月前
|
存储 NoSQL 关系型数据库
现代数据库技术的发展与应用
本文将探讨现代数据库技术的发展趋势和广泛应用领域。我们将从传统关系型数据库开始,介绍NoSQL数据库、分布式数据库以及最新的图数据库等技术,探讨它们的特点和优势。此外,我们还将讨论数据库在大数据、云计算和物联网等领域中的应用案例,并展望未来数据库技术的发展方向。
|
1月前
|
供应链 数据库 开发者
深入了解数据库锁:类型、应用和最佳实践
深入了解数据库锁:类型、应用和最佳实践
|
6天前
|
存储 传感器 监控
数据库的应用
数据库广泛应用于电子商务、物流、酒店管理、医疗、航空、教育、政府和物联网等领域,用于高效存储和管理商品信息、订单数据、医疗记录、航班详情等各类数据,提升效率和服务质量。随着技术进步,其应用场景将持续扩展。
10 1
|
13天前
|
NoSQL 大数据 数据挖掘
现代数据库技术与大数据应用
随着信息时代的到来,数据量呈指数级增长,对数据库技术提出了前所未有的挑战。本文将介绍现代数据库技术在处理大数据应用中的重要性,并探讨了一些流行的数据库解决方案及其在实际应用中的优势。
|
25天前
|
存储 NoSQL 大数据
新型数据库技术在大数据分析中的应用与优势探究
随着大数据时代的到来,传统数据库技术已经无法满足海量数据处理的需求。本文将探讨新型数据库技术在大数据分析中的应用情况及其所带来的优势,为读者解析数据库领域的最新发展趋势。
|
1月前
|
存储 机器学习/深度学习 NoSQL
数据库技术的发展与应用
数据库技术的发展与应用

推荐镜像

更多