MySQL数据库的基本概述和基本应用-阿里云开发者社区

开发者社区> 科技小能手> 正文

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

简介:
+关注继续查看
数据库的基础概述

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

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

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

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

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

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

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

数据库对象:数据库,表,索引,视图(虚表),用户,触发器,存储过程,存储函数,游标。
数据库:是按照数据结构来组织、存储和管理数据的仓库。
表:用来组织信息的数据结构。
索引:是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 
视图:就是可以将多个表(>=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的基本操作
1.MySQL数据库的安装: CentOS6上mysql服务端和客户端的安装和启动: #使用yum安装mysql数据库的服务端和客户端 yum install -y mysql mysql-server #把mysql服务端加入开机自启动 chkconfig msyqld on #立即启动mysql...
592 0
MVC3、如何应用EntityFramework 连接MySql 数据库
原文:MVC3、如何应用EntityFramework 连接MySql 数据库 新的一年,新的开始。 今天总结的主题是在MySql中应用EntityFramework 的Code First模式。 开发环境:Win8 + MySql5.5 +VS 2012. 第一步是在数据库中新建一个表,具体字段如下图。
1010 0
MySQL有哪些存储引擎,各自的优缺点,应用场景
经常面试都会问到MYSQL有哪些存储引擎,以及各自的优缺点。今天主要分享常见的存储引擎:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)等,以及最常用的MyISAM与InnoDB两个引擎 ,文章尾部有两者的详细比较。
1341 0
Python/MySQL时间的实际应用记录
前言 网上关于mysq时间、python时间与时间戳等文章很多,翻来翻去找不到头绪,根据不同博客的写法,挑了几个来测试,这里记录一下。 况且,不以实际需求为前提的博文,就是瞎写,估计以后自己都看不懂。
1213 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4494 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
7762 0
Mysql数据库基本操作 (一)
1.使用mysql数据库的必备要素 a. 安装MySQL服务端 b. 安装MySQL客户端 c. 【客户端】连接【服务端】 d. 【客户端】发送命令给【服务端MySQL】服务的接受命令并执行相应操作(增删改查等)   2.
696 0
获取访问MySQL的应用
接到业务需求,要我统计哪个应用访问了哪些表,一般来讲可以通过: 1.show full processlist; 2.SELECT HOST FROM information_schema.processlist where user='dbname' and INFO like '%tbname.
1162 0
14426
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载