当前位置:首页 » 数据仓库 » mysql什么类型数据库
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

mysql什么类型数据库

发布时间: 2023-05-12 11:36:47

Ⅰ mysql是什么类型的数据库

mysql(发音为"my
ess
cue
el",不是"my
sequel")是一种开放源代码的关系型数据库管理系统(rdbms),mysql数据库系统使用最常用的数据库管理语言--结构化查询语言(sql)进行数据库管理。
由于mysql是开放源代码的,因此任何人都可以在general
public
license的许可下下载并根据个性化的需要对其进行修改。mysql因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,mysql是管理内容最好的选择。
mysql关系型数据库于1998年1月发行第一个版本。它使用系统核心提供的多线程机制提供完全的多线程运行模式,提供了面向c、c++、eiffel、java、perl、php、python以及tcl等编程语言的编程接口(apis),支持多种字段类型并且提供了完整的操作符支持查询中的select和where操作。
mysql开发组计划于2001年中期公布mysql4.0版本。在这个版本中将有以下新的特性被提供:新的表定义文件格式、高性能的数据复制功能、更加强大的全文搜索功能。在此之后,mysql开发着希望提供安全的数据复制机制、在beos操作系统上的mysql实现以及对延时关键字的定期刷新选项。随着时间的推进,mysql将对ansi
92/ansi
99标准完全兼容。
时至今日
mysql

php
的结合绝对是完美.很多大型的网站也用到mysql数据库.mysql的发展前景是非常光明的!

Ⅱ mysql是什么数据库

1、MySQL是一个关系型数据库管理系统,系数据库将数据保存在不同的表中,
而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性
2、MySQL使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性
3、支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统
4、为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等
5、支持多线程,充分利用 CPU 资源
6、优化的 SQL查询算法,有效地提高查询速度
7、提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作数据表名和数据列名
8、提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径
9、提供用于管理、检查、优化数据库操作的管理工具
10、支持多种存储引擎
11、MySQL 是开源的
12、MySQL 使用标准的 SQL数据语言形式
13、复制全局事务标识,可支持自我修复式集群
14、复制无崩溃从机,可提高可用性
15、复制多线程从机,可提高性能
16、原生JSON支持

Ⅲ mysql属于什么数据库系统

MySQL是一种开源关系数据库管理系统(RDBMS),它使用最常用的数据库管理语言-结构化查询语言(SQL)进行数据库管理。MySQL是开源的,因此任何人都可以根据通用公共许可证下载并根据个人需要对其进行修改。它的速度,可靠性和适应性引起了人们的广泛关注。大多数人认为,当不需要事务处理时,MySQL是管理内容的最佳选择。MySQL是一个关系数据库管理系统。关系数据库将数据存储在不同的表中,而不是将所有数据都放在一个大型仓库中,这提高了速度和灵活性。
MySQL使用的SQL语言是用于访问数据库的最常用的标准化语言。MySQL软件采用双重授权策略,分为社区版本和商业版本。由于其体积小,速度快,总拥有成本低,尤其是开放源代码的特性,通常中小型网站开发都选择MySQL作为网站数据库。

Ⅳ 数据库Mysql和Oracle是关系型数据库吗还有哪些非关系型数据库

数据库可分为关系型的和非关系型,MySQL和Oracle就是常见的关系型数据库。那么什么是关系型数据库,什么是的非关系型数据库呢?

关系型和非关系型数据库的定义和区别

关系型和非关系型的区别就是数据的存储方式,简单的理解就是关系型数据库所呈现数据结构是表,由睁穗二维表及其之间的联系所组成的一个数据组织,可以将关系理解为表,关系型就是表格型式的,数据存储在数据表的行和列中。非关系型数据库应该理解为一种数据结构化存储方法的集合,大块数据组合在一起,可以是文档或者键值对图结构等,属于分布式存储。

关系型数据库和非关系型悉好卜数据的优缺点

关系型数据库容易理解,二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解,可以使用SQL语言进行数据库的操作,便于维护,但同时也有一些缺点就是其读写性能比较差,数据结构固定,对海量数据的处理不尽人意。

非关系型数据库由于无需sql层的解析所以读写性能很高再加上它是基于键值对的,数据没有耦合性,容易扩展。数据的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等。但是它不提供sql支持,学习和使用成本较高,无事务处理。

目前常见的关系型和非关系型数据库

关系型数据库:

Oracle、DB2、MicrosoftSQLServer、MicrosoftAccess、MySQL

非关系型数袜唯据库:

NoSql、Cloudant、MongoDb、redis、HBase

Ⅳ MySQL属于什么数据库

属于亚马逊的云数据库服务。
云数据库 MySQL(TencentDB for MySQL)是腾讯云基于开源数据库 MySQL 专业打造的高性能分布式数据存储服务,让用户能够在云中更轻松地设置、操作和培稿扩袜肆展关系数据库。
云数据库 MySQL 主要特点如下:

云存储服务配好孝,是腾讯云平台提供的面向互联网应用的数据存储服务。
完全兼容 MySQL 协议,适用于面向表结构的场景;适用 MySQL 的地方都可以使用云数据库。
提供高性能、高可靠、易用、便捷的 MySQL 集群服务。
整合了备份、扩容、迁移等功能,同时提供新一代数据库工具DMC,用户可以方便的进行数据库的管理。

Ⅵ 什么是MySql数据库

MySQL数据库:

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

    MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。

    MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。

    数据库简介:

    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的历史最早可以追溯到1979年,那时Oracle也才小打小闹,微软的SQL Server影子都没有。有一个人叫Monty Widenius, 为一个叫TcX的小公司打工,并用BASIC设计了一个报表工具,可以在4M主频和16KB内存的计算机上运行。过了不久,又将此工具,使用C语言重写,移植到Unix平台,当时,它只是一个很底层的面向报表的存储引擎。这个工具叫做Unireg。

    可是,这个小公司资源有限,Monty天赋极高,面对资源有限的不利条件,他反而更能发挥潜能,总是力图写出最高效的代码。并因此养成了习惯。与Monty同在一起的还有一些别的同事,很少有人能坚持把那些代码持续写到20年后,而Monty却做到了。

    1990年,TcX的customer 中开始有人要求要为它的API提供SQL支持,当时,有人想到了直接使用商用数据库算了,但是Monty觉得商用数据库的速度难令人满意。于是,他直接借助于mSQL的代码,将它集成到自己的存储引擎中。但不巧的是,效果并不太好。于是, Monty雄心大起,决心自己重写一个SQL支持。

    1996年,MySQL 1.0发布,只面向一小拨人,相当于内部发布。到了96年10月,MySQL 3.11.1发布了,呵呵,没有2.x版本。最开始,只提供了Solaris下的二进制版本。一个月后,Linux版本出现了。

    紧接下来的两年里,MySQL依次移植到各个平台下。它发布时,采用的许可策略,有些与众不同:允许免费商用,但是不能将MySQL与自己的产品绑定在一起发布。如果想一起发布,就必须使用特殊许可,意味着要花银子。当然,商业支持也是需要花银子的。其它的,随用户怎么用都可以。这种特殊许可为MySQL带来了一些收入,从而为它的持续发展打下了良好的基础。(细想想,PostgreSQL曾经有几年限入低谷,可能与它的完全免费,不受任何限制有关系)。

    MySQL3.22应该是一个标志性的版本,提供了基本的SQL支持。

    MySQL关系型数据库于1998年1月发行第一个版本。它使用系统核心提供的多线程机制提供完全的多线程运行模式,提供了面向C、C++、Eiffel、Java、Perl、PHP、Python以及Tcl等编程语言的编程接口(APIs),支持多种字段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作。

    MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。

    1999-2000年,有一家公司在瑞典成立了,叫MySQL AB (AB是瑞典语“股份公司”的意思)。 雇了几个人,与Sleepycat合作,开发出了 Berkeley DB引擎, 因为BDB支持事务处理,所以,MySQL从此开始支持事务处理了。

    2000年4月,MySQL对旧的存储引擎进行了整理,命名为MyISAM。同时,2001年,Heikiki Tuuri向MySQL提出建议,希望能集成他们的存储引擎InnoDB,这个引擎同样支持事务处理,还支持行级锁。

    如今,遗憾的是,BDB和InnoDB好像都被Oracle收购了,为了消灭竞争对手,哪怕是开源的,都是不择手段。

    MySQL与InnoDB的正式结合版本是4.0。

    到了MySQL5.0,2003年12月,开始有View,存储过程之类的东东,当然,其间, bug也挺多。

    在2008年1月16号 MySQL被Sun公司收购。

    最近,MySQL的创始人Monty Widenius已经向Sun提交了辞呈。head都要走了。

    据说,被Sun收购的公司多薄命,不知道MySQL今后前途如何,希望一路走好。相信MySQL的生命力还是很长久的。

    时至今日 mysql 和 php 的结合绝对是完美.很多大型的网站也用到mysql数据库.mysql的发展前景是非常光明的!

    MySQL常用命令:

    1:使用SHOW语句找出在服务器上当前存在什么数据库:

    mysql> SHOW DATABASES;

    2:2、创建一个数据库MYSQLDATA

    mysql> CREATE DATABASE MYSQLDATA;

    3:选择你所创建的数据库

    mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)

    4:查看现在的数据库中存在什么表

    mysql> SHOW TABLES;

    5:创建一个数据库表

    mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));

    6:显示表的结构:

    mysql> DESCRIBE MYTABLE;

    7:往表中加入记录

    mysql> insert into MYTABLE values (”hyq”,”M”);

    8:用文本方式将数据装入数据库表中(例如D:/mysql.txt)

    mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;

    9:导入.sql文件命令(例如D:/mysql.sql)

    mysql>use database;

    mysql>source d:/mysql.sql;

    10:删除表

    mysql>drop TABLE MYTABLE;

    11:清空表

    mysql>delete from MYTABLE;

    12:更新表中数据

    mysql>update MYTABLE set sex=”f” where name=’hyq’;

    全局管理权限对应解释:

    FILE: 在MySQL服务器上读写文件。

    PROCESS: 显示或杀死属于其它用户的服务线程。

    RELOAD: 重载访问控制表,刷新日志等。

    SHUTDOWN: 关闭MySQL服务。

    数据库/数据表/数据列权限:

    ALTER: 修改已存在的数据表(例如增加/删除列)和索引。

    CREATE: 建立新的数据库或数据表。

    DELETE: 删除表的记录。

    DROP: 删除数据表或数据库。

    INDEX: 建立或删除索引。

    INSERT: 增加表的记录。

    SELECT: 显示/搜索表的记录。

    UPDATE: 修改表中已存在的记录。

    特别的权限:

    ALL: 允许做任何事(和root一样)。

    USAGE: 只允许登录–其它什么也不允许做。

    MySQL数据库导入方法:

    MySQL数据库的导入,有两种方法:

    1) 先导出数据库SQL脚本,再导入;

    2) 直接拷贝数据库目录和文件。

    在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。

    所以一般推荐用SQL脚本形式导入。下面分别介绍两种方法。

    2. 方法一 SQL脚本形式

    操作步骤如下:

    2.1. 导出SQL脚本

    在原数据库服务器上,可以用phpMyAdmin工具,或者mysqlmp命令行,导出SQL脚本。

    2.1.1 用phpMyAdmin工具

    导出选项中,选择导出“结构”和“数据”,不要添加“DROP DATABASE”和“DROP TABLE”选项。

    选中“另存为文件”选项,如果数据比较多,可以选中“gzipped”选项。

    将导出的SQL文件保存下来。

    2.1.2 用mysqlmp命令行

    命令格式

    mysqlmp -u 用户名 -p 数据库名 > 数据库名.sql

    范例:

    mysqlmp -u root -p abc > abc.sql

    (导出数据库abc到abc.sql文件)

    提示输入密码时,输入该数据库用户名的密码。

    2.2. 创建空的数据库

    通过主控界面/控制面板,创建一个数据库。假设数据库名为abc,数据库全权用户为abc_f。

    2.3. 将SQL脚本导入执行

    同样是两种方法,一种用phpMyAdmin(mysql数据库管理)工具,或者mysql命令行。

    2.3.1 用phpMyAdmin工具

    从控制面板,选择创建的空数据库,点“管理”,进入管理工具页面。

    在"SQL"菜单中,浏览选择刚才导出的SQL文件,点击“执行”以上载并执行。

    注意:phpMyAdmin对上载的文件大小有限制,php本身对上载文件大小也有限制,如果原始sql文件

    比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可获得1:5或更高的压缩率。

    gzip使用方法:

    # gzip xxxxx.sql

    得到

    xxxxx.sql.gz文件。

    提示输入密码时,输入该数据库用户名的密码。

    3 直接拷贝

    如果数据库比较大,可以考虑用直接拷贝的方法,但不同版本和操作系统之间可能不兼容,要慎用。

    3.1 准备原始文件

    用tar打包为一个文件

    3.2 创建空数据库

    3.3 解压

    在临时目录中解压,如:

    cd /tmp

    tar zxf mydb.tar.gz

    3.4 拷贝

    将解压后的数据库文件拷贝到相关目录

    cd mydb/

    cp * /var/lib/mysql/mydb/

    对于FreeBSD:

    cp * /var/db/mysql/mydb/

    3.5 权限设置

    将拷贝过去的文件的属主改为mysql:mysql,权限改为660

    chown mysql:mysql /var/lib/mysql/mydb/*

    chmod 660 /var/lib/mysql/mydb/*

    Mssql转换mysql的方法:

    1.导表结构

    使用MySQL生成create脚本的方法。找到生成要导出的脚本,按MySQL的语法修改一下到MySQL数据库中创建该表的列结构什么的。

    2.导表数据

    在MSSQL端使用bcp导出文本文件:

    bcp “Select * FROM dbname.dbo.tablename;” queryout tablename.txt -c -Slocalhostdb2005 -Usa

    其中”"中是要导出的sql语句,-c指定使用 进行字段分隔,使用 进行记录分隔,-S指定数据库服务器及实例,-U指定用户名,-P指定密码.

    在MySQL端使用mysqlimport 导入文本文件到相应表中

    mysqlimport -uroot -p databasename /home/test/tablename.txt

    其中-u指定用户名,-p指定密码,databasename指定数据库名称,表名与文件名相同

    MySQL备份与恢复:

    MySQL备份恢复数据的一般步骤

    备份一个数据库的例子:

    1、备份前读锁定涉及的表

    mysql>LOCK TABLES tbl1 READ,tbl1 READ,…
    如果,你在mysqlmp实用程序中使用--lock-tables选项则不必使用如上SQL语句。

    2、导出数据库中表的结构和数据

    shell>mysqlmp --opt db_name>db_name.sql

    3、启用新的更新日志

    shell>mysqladmin flush-logs

    这样可以记录你备份后的数据改变为恢复数据准备。

    4、解除表的读锁

    mysql>UNLOCK TABLES;

    为了加速上述过程,你可以这样做:

    shell> mysqlmp --lock-tables --opt db_name>db_name.sql; mysqladmin flush-logs

    但是这样可能会有点小问题。上命令在启用新的更新日志前就恢复表的读锁,
    在更新繁忙的站点,可能有备份后的更新数据没有记录在新的日志中。
    现在恢复上面备份的数据库

    1、对涉及的表使用写锁

    mysql>LOCK TABLES tbl1 WRITE,tbl1 WRITE,…

    2、恢复备份的数据

    shell>mysql db_name < db_name.sql

    3、恢复更新日志的内容

    shell>mysql --one-database db_name < hostname.nnn

    假设需要使用的日志名字为hostname.nnn

    4、启用新的更新日志

    shell>mysqladmin flush-logs

    5、解除表的写锁

    mysql>UNLOCK TABLES;

    希望上面的例子能给你启发,因为备份数据的手法多种多样,你所使用的和上面所述可能大不一样,但是对于备份和恢复中,表的锁定、启用新的更新日志的时机应该是类似的,仔细考虑这个问题。

    MySQL数据库优化:

    选择InnoDB作为存储引擎

    大型产品的数据库对于可靠性和并发性的要求较高,InnoDB作为默认的MySQL存储引擎,相对于MyISAM来说是个更佳的选择。

    优化数据库结构

    组织数据库的schema、表和字段以降低I/O的开销,将相关项保存在一起,并提前规划,以便随着数据量的增长,性能可以保持较高的水平。

    设计数据表应尽量使其占用的空间最小化,表的主键应尽可能短。·对于InnoDB表,主键所在的列在每个辅助索引条目中都是可复制的,因此如果有很多辅助索引,那么一个短的主键可以节省大量空间。

    仅创建你需要改进查询性能的索引。索引有助于检索,但是会增加插入和更新操作的执行时间。

    InnoDB的ChangeBuffering特性

    InnoDB提供了changebuffering的配置,可减少维护辅助索引所需的磁盘I/O。大规模的数据库可能会遇到大量的表操作和大量的I/O,以保证辅助索引保持最新。当相关页面不在缓冲池里面时,InnoDB的changebuffer将会更改缓存到辅助索引条目,从而避免因不能立即从磁盘读取页面而导致耗时的I/O操作。当页面被加载到缓冲池时,缓冲的更改将被合并,更新的页面之后会刷新到磁盘。这样做可提高性能,适用于MySQL5.5及更高版本。

    InnoDB页面压缩

    InnoDB支持对表进行页面级的压缩。当写入数据页的时候,会有特定的压缩算法对其进行压缩。压缩后的数据会写入磁盘,其打孔机制会释放页面末尾的空块。如果压缩失败,数据会按原样写入。表和索引都会被压缩,因为索引通常是数据库总大小中占比很大的一部分,压缩可以显着节约内存,I/O或处理时间,这样就达到了提高性能和伸缩性的目的。它还可以减少内存和磁盘之间传输的数据量。MySQL5.1及更高版本支持该功能。

    注意,页面压缩并不能支持共享表空间中的表。共享表空间包括系统表空间、临时表空间和常规表空间。

    使用批量数据导入

    在主键上使用已排序的数据源进行批量数据的导入可加快数据插入的过程。否则,可能需要在其他行之间插入行以维护排序,这会导致磁盘I/O变高,进而影响性能,增加页的拆分。关闭自动提交的模式也是有好处的,因为它会为每个插入执行日志刷新到磁盘。在批量插入期间临时转移唯一键和外键检查也可显着降低磁盘I/O。对于新建的表,最好的做法是在批量导入后创建外键/唯一键约束。

    一旦你的数据达到稳定的大小,或者增长的表增加了几十或几百兆字节,就应该考虑使用OPTIMIZETABLE语句重新组织表并压缩浪费的空间。对重新组织后的表进行全表扫描所需要的I/O会更少。

    优化InnoDB磁盘I/O

    增加InnoDB缓冲池大小可以让查询从缓冲池访问而不是通过磁盘I/O访问。通过调整系统变量innodb_flush_method来调整清除缓冲的指标使其达到最佳水平。

    MySQL的内存分配

    在为MySQL分配足够的内存之前,请考虑不同领域对MySQL的内存需求。要考虑的关键领域是:并发连接——对于大量并发连接,排序和临时表将需要大量内存。在撰写本文时,对于处理3000+并发连接的数据库,16GB到32GB的RAM是足够的。

    内存碎片可以消耗大约10%或更多的内存。像innodb_buffer_pool_size、key_buffer_size、query_cache_size等缓存和缓冲区要消耗大约80%的已分配内存。

    日常维护

    定期检查慢的查询日志并优化查询机制以有效使用缓存来减少磁盘I/O。优化它们,以扫描最少的行数,而不是进行全表扫描。

    其他可以帮助DBA检查和分析性能的日志包括:错误日志、常规查询日志、二进制日志、DDL日志(元数据日志)。

    定期刷新缓存和缓冲区以降低碎片化。使用OPTIMIZETABLE语句重新组织表并压缩任何可能被浪费的空间。

Ⅶ 什么是MySQL数据库

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

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

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

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

MySQL,虽然功能未必很强大,但因为它的开源、广泛传播,导致很多人都了解到这个数据库。它的历史也富有传奇性。

Ⅷ 什么是数据库数据库的分类MySQL属于哪种

数据库就是指数据库管理系统:主要指信息时代专门存储管理信息数据的软件系统。分类可分关系型数据库、网状数据库和层次型数据库什么的。但是大家广泛接触的还是关系型数据库(信息数据主要可以二维表格模式展示的数据库)如:oracle、sqlserver、db2、access、foxpro等吧。mysql是个小型关系型数据库。

Ⅸ mysql数据类型

数据库类型可分为层次型、网状型和关系型。

层次型数据库是把数据根据层次构造(树结构)的方法呈现;网状型数据库是采用网状原理和方法,以网状数据模型为基础建立的数据库;关系型数据库是指采用了关系模型来组织数据的数据库。

数据库的作用

1、实现数据共享:数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。

2、减少数据的冗余度:同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的皮枯一致性。

3、保持数据的独立性:数据的独立性包括逻辑独立性(数据库中数据库的逻辑结构和应用程序相互独立)和物理独立性(数据物理结构的变化不影响数据的逻辑结构)。

4、数据实现集中控制:文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过燃渗洞数据模型表示各种数据的组织以及数据间的联系喊谈。


Ⅹ MySQL的数据类型和建库策略


无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构、充分利用空间是十分必要的。这就要求我们对数据库系统的常用数据类型有充分的认识。下面我就将我的一点心得写出来跟大家分享。
一、数字类型
数字类型按照我的分类方法分为三类:整数类、小数类和数字类。
我所谓的“数字类”,就是指 DECIMAL 和 NUMERIC,它们是同一种类型。它严格的说不是一种数字类型,因为他们实际上是将数字以字符串形式保存的;他的值的每一位 (包括小数点) 占一个字节的存储空间,因此这种类型耗费空间比较大。但是它的一个突出的优点是小数的位数固定,在运算中不会“失真”,所以比较适合用于“价格”、“金额”这样对精度要求不高但准确度肢唤要求非常高的字段。
小数类,即浮点数类型,根据精度的不同,有 FLOAT 和 DOUBLE 两种。它们的优势是精确度,FLOAT 可以表示绝对值非常小、小到约 1.17E-38 (0.000...0117,小数点后面有 37 个零) 的小数,而 DOUBLE 更是可以表示绝对值小到约 2.22E-308 (0.000...0222,小数点后面有 307 个零) 的小数。FLOAT 类型和 DOUBLE 类型占用存储空间分别是 4 字节和 8 字节。如果需要用到小数的字段,精度要求不高的,当然用 FLOAT 了。可是说句实在话,我们“民用”的数据,哪有要求精度那么高的呢?这两种类型至今我没有用过——我还没有遇到适合于使用它们的事例。
用的最多的,最值得精打细算的,是整数类型。从只占一个字困罩节存储空间的 TINYINT 到占 8 个字节的 BIGINT,挑选一个“够用”并且占用存储空间最小的类型是设计数据库时应该考虑的。TINYINT、SMALLINT、MEDIUMINT、INT 和 BIGINT 占用存储空间分别为 1 字节、2 字节、3 字节、4 字历尺凯节和 8 字节,就无符号的整数而言,这些类型能表示的最大整数分别为 255、65535、16777215、4294967295 和 18446744073709551615。如果用来保存用户的年龄 (举例来说,数据库中保存年龄是不可取的),用 TINYINT 就够了;九城的《纵横》里,各项技能值,用 SMALLINT 也够了;如果要用作一个肯定不会超过 16000000 行的表的 AUTO_INCREMENT 的 IDENTIFY 字段,当然用 MEDIUMINT 不用 INT,试想,每行节约一个字节,16000000 行可以节约 10 兆多呢。
二、日期时间类型
日期和时间类型比较简单,无非是 DATE、TIME、DATETIME、TIMESTAMP 和 YEAR 等几个类型。只对日期敏感,而对时间没有要求的字段,就用 DATE 而不用 DATETIME 是不用说的了;单独使用时间的情况也时有发生——使用 TIME;但最多用到的还是用 DATETIME。在日期时间类型上没有什么文章可做,这里就不再详述。
三、字符 (串) 类型
不要以为字符类型就是 CHAR,CHAR 和 VARCHAR 的区别在于 CHAR 是固定长度,只要你定义一个字段是 CHAR(10),那么不论你存储的数据是否达到了 10 个字节,它都要占去 10 个字节的空间;而 VARCHAR 则是可变长度的,如果一个字段可能的值是不固定长度的,我们只知道它不可能超过 10 个字符,把它定义为 VARCHAR(10) 是最合算的,VARCHAR 类型的占用空间是它的值的实际长度 +1。为什么要 +1 呢?这一个字节用于保存实际使用了多大的长度。从这个 +1 中也应该看到,如果一个字段,它的可能值最长是 10 个字符,而多数情况下也就是用到了 10 个字符时,用 VARCHAR 就不合算了:因为在多数情况下,实际占用空间是 11 个字节,比用 CHAR(10) 还多占用一个字节。
举个例子,就是一个存储股票名称和代码的表,股票名称绝大部分是四个字的,即 8 个字节;股票代码,上海的是六位数字,深圳的是四位数字。这些都是固定长度的,股票名称当然要用 CHAR(8);股票代码虽然是不固定长度,但如果使用 VARCHAR(6),一个深圳的股票代码实际占用空间是 5 个字节,而一个上海的股票代码要占用 7 个字节!考虑到上海的股票数目比深圳的多,那么用 VARCHAR(6) 就不如 CHAR(6) 合算了。
虽然一个 CHAR 或 VARCHAR 的最大长度可以到 255,我认为大于 20 的 CHAR 是几乎用不到的——很少有大于 20 个字节长度的固定长度的东东吧?不是固定长度的就用 VARCHAR。大于 100 的 VARCHAR 也是几乎用不到的——比这更大的用 TEXT 就好了。TINYTEXT,最大长度为 255,占用空间也是实际长度 +1;TEXT,最大长度 65535,占用空间是实际长度 +2;MEDIUMTEXT,最大长度 16777215,占用空间是实际长度 +3;LONGTEXT,最大长度 4294967295,占用空间是实际长度 +4。为什么 +1、+2、+3、+4?你要是还不知道就该打 PP 了。这些可以用在论坛啊、新闻啊,什么的,用来保存文章的正文。根据实际情况的不同,选择从小到大的不同类型。
四、枚举和集合类型
枚举 (ENUM) 类型,最多可以定义 65535 种不同的字符串从中做出选择,只能并且必须选择其中一种,占用存储空间是一个或两个字节,由枚举值的数目决定;集合 (SET) 类型,最多可以有 64 个成员,可以选择其中的零个到不限定的多个,占用存储空间是一个到八个字节,由集合可能的成员数目决定。
举个例子来说,在 SQLServer 中,你可以节约到用一个 BIT 类型来表示性别 (男/女),但 MySQL 没有 BIT,用 TINTINT 吗?不,可以用 ENUM('帅哥','美眉'),只有两种选择,所以只需一个字节——跟 TINYINT 一样大,但却可以直接用字符串 '帅哥' 和 '美眉' 来存取。真是太方便啦!
好了,MySQL 的数据类型介绍得差不多,我的建库策略也随着介绍数据类型介绍给大家一些。但这只是其中一部分,篇幅有限,不能再细说;其他的,就靠各人在对数据类型理解的基础上,多多实践、多多讨论。