
SQL是个关系型数据库
SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。
SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的SQL语言作为数据输入与管理的 SQL
接口。它以记录集合作为 *** 作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使他具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。 结构化查询语言(Structured Query Language)最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。如今无论是像Oracle、Sybase、DB2、Informix、SQL Server这些大型的数据库管理系统,还是像Visual Foxpro、PowerBuilder这些PC上常用的数据库开发系统,都支持SQL语言作为查询语言。 美国国家标准局(ANSI)与国际标准化组织(ISO)已经制定了SQL标准。ANSI是一个美国工业和商业集团组织,负责开发美国的商务和通讯标准。ANSI同时也是ISO和International Electrotechnical Commission(IEC)的成员之一。ANSI 发布与国际标准组织相应的美国标准。1992年,ISO和IEC发布了SQL国际标准,称为SQL-92。ANSI随之发布的相应标准是ANSI SQL-92。ANSI SQL-92有时被称为ANSI SQL。尽管不同的关系数据库使用的SQL版本有一些差异,但大多数都遵循 ANSI SQL 标准。SQL Server使用ANSI SQL-92的扩展集,称为T-SQL,其遵循ANSI制定的 SQL-92标准。 SQL语言包含4个部分: ※ 数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。 ※ 数据 *** 作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。 ※ 数据查询语言(DQL),例如:SELECT语句。 ※ 数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。 SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据 *** 作语言(DML)及数据控制语言(DCL)。 SQL 是用于访问和处理数据库的标准的计算机语言。 SQL 指结构化查询语言 SQL 使我们有能力访问数据库 SQL 是一种 ANSI 的标准计算机语言
在创建表的时候可以设置,方法如下,用一下sql语句。
create table tableName(
id int identity(1,1) primary key,
data varchar(50))
解释:其中identity(1,1)代表自增,第一个1代表从1开始计数,第二个1代表每次增长1。
扩展资料:
SQL 全名是结构化查询语言[1](Structured Query Language),是用于数据库中的标准数据查询语言,IBM 公司最早使用在其开发的数据库系统中。1986年10月,美国国家标准学会(ANSI) 对 SQL 进行规范后,以此作为关系式数据库管理系统的标准语言 (ANSI X3 135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对 SQL 规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。
参考资料:
百科-SQL语言
存储引擎是什么?
MySQL中的数据用各种不同的技术存储在文件(或者内存)中 这些技术中的每一种技术都使用不同的存储机制 索引技巧 锁定水平并且最终提供广泛的不同的功能和能力 通过选择不同的技术 你能够获得额外的速度或者功能 从而改善你的应用的整体功能
例如 如果你在研究大量的临时数据 你也许需要使用内存存储引擎 内存存储引擎能够在内存中存储所有的表格数据 又或者 你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)
这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型) MySQL默认配置了许多不同的存储引擎 可以预先设置或者在MySQL服务器中启用 你可以选择适用于服务器 数据库和表格的存储引擎 以便在选择如何存储你的信息 如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性
选择如何存储和检索你的数据的这种灵活性是MySQL为什么如此受欢迎的主要原因 其它数据库系统(包括大多数商业选择)仅支持一种类型的数据存储 遗憾的是 其它类型的数据库解决方案采取的 一个尺码满足一切需求 的方式意味着你要么就牺牲一些性能 要么你就用几个小时甚至几天的时间详细调整你的数据库 使用MySQL 我们仅需要修改我们使用的存储引擎就可以了
在这篇文章中 我们不准备集中讨论不同的存储引擎的技术方面的问题(尽管我们不可避免地要研究这些因素的某些方面) 相反 我们将集中介绍这些不同的引擎分别最适应哪种需求和如何启用不同的存储引擎 为了实现这个目的 在介绍每一个存储引擎的具体情况之前 我们必须要了解一些基本的问题
如何确定有哪些存储引擎可用
你可以在MySQL(假设是MySQL服务器 以上版本)中使用显示引擎的命令得到一个可用引擎的列表
mysql> show engines; + + + + | Engine | Support | Comment | + + + + | MyISAM | DEFAULT | Default engine as of MySQL with great performance | | HEAP | YES | Alias for MEMORY | | MEMORY | YES | Hash based stored in memory useful for temporary tables | | MERGE | YES | Collection of identical MyISAM tables | | MRG_MYISAM | YES | Alias for MERGE | | ISAM | NO | Obsolete storage engine now replaced by MyISAM | | MRG_ISAM | NO | Obsolete storage engine now replaced by MERGE | | InnoDB | YES | Supports transactions row level locking and foreign keys | | INNOBASE | YES | Alias for INNODB | | BDB | NO | Supports transactions and page level locking | | BERKELEYDB | NO | Alias for BDB | | NDBCLUSTER | NO | Clustered fault tolerant memory based tables | | NDB | NO | Alias for NDBCLUSTER | | EXAMPLE | NO | Example storage engine | | ARCHIVE | NO | Archive storage engine | | CSV | NO | CSV storage engine | + + + + rows in set ( sec)这个表格显示了可用的数据库引擎的全部名单以及在当前的数据库服务器中是否支持这些引擎
对于MySQL 以前版本 可以使用mysql> show variables like have_% (显示类似 have_% 的变量):
mysql> show variables like have_% ; + + + | Variable_name | Value | + + + | have_bdb | YES | | have_crypt | YES | | have_innodb | DISABLED | | have_isam | YES | | have_raid | YES | | have_symlink | YES | | have_openssl | YES | | have_query_cache | YES | + + + rows in set ( sec)你可以通过修改设置脚本中的选项来设置在MySQL安装软件中可用的引擎 如果你在使用一个预先包装好的MySQL二进制发布版软件 那么 这个软件就包含了常用的引擎 然而 需要指出的是 如果你要使用某些不常用的引擎 特别是CSV RCHIVE(存档)和BLACKHOLE(黑洞)引擎 你就需要手工重新编译MySQL源码
使用一个指定的存储引擎
你可以使用很多方法指定一个要使用的存储引擎 最简单的方法是 如果你喜欢一种能满足你的大多数数据库需求的存储引擎 你可以在MySQL设置文件中设置一个默认的引擎类型(使用storage_engine 选项)或者在启动数据库服务器时在命令行后面加上 default storage engine或 default table type选项
更灵活的方式是在随MySQL服务器发布同时提供的MySQL客户端时指定使用的存储引擎 最直接的方式是在创建表时指定存储引擎的类型 向下面这样:
CREATE TABLE mytable (id int title char( )) ENGINE = INNODB
你还可以改变现有的表使用的存储引擎 用以下语句:
ALTER TABLE mytable ENGINE = MyISAM
然而 你在以这种方式修改表格类型的时候需要非常仔细 因为对不支持同样的索引 字段类型或者表大小的一个类型进行修改可能使你丢失数据 如果你指定一个在你的当前的数据库中不存在的一个存储引擎 那么就会创建一个MyISAM(默认的)类型的表
各存储引擎之间的区别
为了做出选择哪一个存储引擎的决定 我们首先需要考虑每一个存储引擎提供了哪些不同的核心功能 这种功能使我们能够把不同的存储引擎区别开来 我们一般把这些核心功能分为四类:支持的字段和数据类型 锁定类型 索引和处理 一些引擎具有能过促使你做出决定的独特的功能 我们一会儿再仔细研究这些具体问题
字段和数据类型
虽然所有这些引擎都支持通用的数据类型 例如整型 实型和字符型等 但是 并不是所有的引擎都支持其它的字段类型 特别是BLOG(二进制大对象)或者TEXT文本类型 其它引擎也许仅支持有限的字符宽度和数据大小
这些局限性可能直接影响到你可以存储的数据 同时也可能会对你实施的搜索的类型或者你对那些信息创建的索引产生间接的影响 这些区别能够影响你的应用程序的性能和功能 因为你必须要根据你要存储的数据类型选择对需要的存储引擎的功能做出决策
锁定
数据库引擎中的锁定功能决定了如何管理信息的访问和更新 当数据库中的一个对象为信息更新锁定了 在更新完成之前 其它处理不能修改这个数据(在某些情况下还不允许读这种数据)
锁定不仅影响许多不同的应用程序如何更新数据库中的信息 而且还影响对那个数据的查询 这是因为查询可能要访问正在被修改或者更新的数据 总的来说 这种延迟是很小的 大多数锁定机制主要是为了防止多个处理更新同一个数据 由于向数据中插入信息和更新信息这两种情况都需要锁定 你可以想象 多个应用程序使用同一个数据库可能会有很大的影响
不同的存储引擎在不同的对象级别支持锁定 而且这些级别将影响可以同时访问的信息 得到支持的级别有三种:表锁定 块锁定和行锁定 支持最多的是表锁定 这种锁定是在MyISAM中提供的 在数据更新时 它锁定了整个表 这就防止了许多应用程序同时更新一个具体的表 这对应用很多的多用户数据库有很大的影响 因为它延迟了更新的过程
页级锁定使用Berkeley DB引擎 并且根据上载的信息页( KB)锁定数据 当在数据库的很多地方进行更新的时候 这种锁定不会出现什么问题 但是 由于增加几行信息就要锁定数据结构的最后 KB 当需要增加大量的行 也别是大量的小型数据 就会带来问题
行级锁定提供了最佳的并行访问功能 一个表中只有一行数据被锁定 这就意味着很多应用程序能够更新同一个表中的不同行的数据 而不会引起锁定的问题 只有InnoDB存储引擎支持行级锁定
建立索引
建立索引在搜索和恢复数据库中的数据的时候能够显著提高性能 不同的存储引擎提供不同的制作索引的技术 有些技术也许会更适合你存储的数据类型
有些存储引擎根本就不支持索引 其原因可能是它们使用基本表索引(如MERGE引擎)或者是因为数据存储的方式不允许索引(例如FEDERATED或者BLACKHOLE引擎)
事务处理
事务处理功能通过提供在向表中更新和插入信息期间的可靠性 这种可靠性是通过如下方法实现的 它允许你更新表中的数据 但仅当应用的应用程序的所有相关 *** 作完全完成后才接受你对表的更改 例如 在会计处理中每一笔会计分录处理将包括对借方科目和贷方科目数据的更改 你需要要使用事务处理功能保证对借方科目和贷方科目的数据更改都顺利完成 才接受所做的修改 如果任一项 *** 作失败了 你都可以取消这个事务处理 这些修改就不存在了 如果这个事务处理过程完成了 我们可以通过允许这个修改来确认这个 *** 作
lishixinzhi/Article/program/MySQL/201311/29301
1)数据定义语言:负责数据的模式定义与数据的物理存取构建;
(2)数据 *** 纵语言:负责数据的 *** 纵,如查询与增、删、改等;
(3)数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等。
早期的数据库管理都是采用文件系统。在文件系统中,数据按其内容、结构和用途组成若干命名的文件。文件一般为某个用户或用户组所有,但可供其他用户共享。用户可以通过 *** 作系统对文件进行打开、读、写和关闭等 *** 作。 文件系统有明显的缺点: (1)编写应用程序很不方便。 应用程序的设计者必须对所用的文件的逻辑及物理结构有清楚的了解。 *** 作系统 只能打开、关 闭、读、写等几个低级的文件 *** 作命令,对文件的查询修改等处理都须在应用程序内解决。应用程序还 不可避免地在功能上有所重复。在文件系统上编写应用程序的效率不高。 (2)文件的设计很难满足多种应用程序的不同要求,数据冗余经常是不可避免的。 为了兼顾各种应用程序的要求,在设计文件系统时,往往不得不增加冗余的数据。数据冗余不仅浪费空间,而且会带来数据的不一致性(inconsistency)在文件系统中没有维护数据一致性的监控机制,数据的一致性完全有用户负责维护。在简单的系统中勉强能应付,但在大型复杂的系统中几乎是不可能完成的。 (3)文件结构的修改将导致应用程序的修改,应用程序的维护量将很大。 (4)文件系统不支持对文件的并发访问(concurrent access)。 (5)数据缺少统一管理,在数据的结构、编码、表示格式、命名以及输出格式等方面不容易做到规范化、标准化;数据安全和保密方面,也难以采取有效的办法。 针对文件系统的缺点,人们发展了以统一管理和共享数据为主要特征的数据库系统。在数据库系统中,数据不再仅仅服务于某个程序或用户,而是看成一个单位的共享资源,由一个叫数据库管理系统(Data Management System,简称DBMS)的软件统一管理。由于有DBMS的统一管理,应用程序不必直接介入诸如打开、关闭、读写文件等低级的 *** 作,而由DBMS代办。用户也不必关系数据存储和其他实现的细节,可在更高的抽象级别上观察和访问数据。文件结构的一些修改也可以由DBMS屏蔽,使用户看不到这些修改,从而减少应用程序的维护工作量,提高数据的独立性。由于数据的统一管理,人们可以从全单位着眼,合理组织数据,减少数据冗余;还可以更好地贯彻规范化和标准化,从而有利于数据的转移和更大范围的共享。由于DBMS不是为某个应用程序服务,而是为整个单位服务的,DBMS做得复杂一些也是可以接受的。许多在文件系统中难以实现的动能,在DBMS中都一一实现了。 例如:适合不同类型用户的多种用户界面,保证并发访问时的数据一致性的并发控制(concurrent control),增进数据安全性(security)的访问控制(access control),在故障的情况下保证数据一致性的恢复(recovery)功能,保证数据在语义上的一致性的完整性约束(integrity constraints)检查功能等。随着计算机应用的发展,DBMS的功能愈来愈强,规模愈来愈大,复杂性和开销也随之增加。目前,在一些功能非常明确且无数据共享的简单应用系统中,为减少开销,提高性能,有时仍采用文件系统;不过在数据密集型应用系统中,基本上都使用数据库系统。 现代的数据库管理系统应该具备的7个功能:1、提供高级的用户接口2、查询处理和优化 这里的查询(query)泛指用户对数据库所提的访问要求,不但包含数据检索,也包括修改\定义新数据等3、数据目录管理4、并发控制5、恢复功能6、完整性约束检查7、访问控制 数据管理和数据处理一样,都是计算机系统的最基本的支撑技术。尽管计算机科学技术经历了飞速的发展,但数据管理的这一地位没有变化。数据管理将作为计算机科学技术的一个重要分支一直发展下去,社会信息化,对数据管理的要求也愈高。
以上就是关于sql是一个什么样的数据库全部的内容,包括:sql是一个什么样的数据库、数据库如何设置主键(ID)自动增长啊(SQL语句)、MySQL数据库存储引擎详解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)