数据库——基本概念
⼀、概述(了解)
数据库(Database,简称DB)
数据库技术是计算机应⽤领域中⾮常重要的技术,它产⽣于20世纪,60年代末,是数据管理的最新技术,也是软件技术的⼀个重要分⽀。
简单的说,数据库就是⼀个存放数据的仓库,这个仓库是按照⼀定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的,我们可以通过数据库提
供的多种⽅法来管理数据库⾥的数据。更简单的形象理解,数据库和我们⽣活中存放杂物的仓库性质⼀样,区别只是存放的东西不同。
数据库表(table)
数据表是关系数据库中⼀个⾮常重要的对象,是其他对象的基础,也是⼀系列⼆维数组的集合,⽤来存储、操作数据的逻辑结构。
根据信息的分类性情。
⼀个数据库中可能包含若⼲个数据表,每张表是由⾏和列组成,记录⼀条数据,数据表就增加⼀⾏,每⼀列是由字段名和字段数据集合组成,列被称之为字段。每⼀列还有⾃⼰
的多个属性,例如是否允许为空、默认值、长度、类型、存储编码、注释等。例如:
数据(data)
存储在表中的信息就叫做数据。
数据库系统有3个主要的组成部分
1.数据库(Database System):⽤于存储数据的地⽅
2.数据库管理系统(Database Management System,DBMS):⽤户管理数据库的软件。
3.数据库应⽤程序(Database Application):为了提⾼数据库系统的处理能⼒所使⽤的管理数据库的软件补充。
数据库的发展史(五个阶段)
1.⽂件系统
数据库系统的萌芽阶段,通过⽂件来存取数据.
⽂件系统是数据库系统的萌芽阶段,出现在上世纪五六⼗年代,可以提供简单的数据存取功能,但⽆法提供完整、统⼀的数据管理功能,例如复杂查询等。所以在管理较少、较简单的数据或者只是⽤来存取简单数据,没有复杂操作的情况下,
2.层次型数据库
数据库系统真正开始阶段,数据的存储形式类似树形结构,所以也叫树型数据库.
3.⽹状数据库
数据的存储形式类似⽹状结构.
从⼆⼗世纪六⼗年代开始,第⼀代数据库系统(层次模型数据库系统、⽹状模型数据库系统)相继问世,它们为统⼀管理和共享数据提供了有⼒的⽀撑
在这个阶段,⽹状模型数据库由于它的复杂、专⽤性,没有被⼴泛使⽤。⽽在层次模型数据库中,IBM公司的IMS(Information Management System,信息管理系统)层次模型数据库系统则得到了极⼤的发展,⼀度成为最⼤的数据库管理系统,拥有 4.关系型数据库
⼆⼗世纪七⼗年代初,关系型数据库系统开始⾛上历史舞台,并⼀直保持着蓬勃的⽣命⼒.关系型数据库系统使⽤结构化查询语⾔(Structured Query Language,SQL)作为数据库定义语⾔DDL和数据库操作语⾔DML
5.⾯向对象数据库
mysql语句转oracle把⾯向对象的⽅法和数据库技术结合起来,可以使数据库系统的分析、设计最⼤程度地与⼈们对客观世界的认识相⼀致,并且能够有效的为⾯向对象程序提供更好的数据库⽀撑
⼆.数据库的特点
⑴实现数据共享
数据共享包含所有⽤户可同时存取数据库中的数据,也包括⽤户可以⽤各种⽅式通过接⼝使⽤数据库,并提供数据共享。
⑵减少数据的冗余度
同⽂件系统相⽐,由于数据库实现了数据共享,从⽽避免了⽤户各⾃建⽴应⽤⽂件。减少了⼤量重复数据,减少了数据冗余,维护了数据的⼀致性。
⑶数据⼀致性和可维护性,以确保数据的安全性和可靠性
主要包括:①安全性控制:以防⽌数据丢失、错误更新和越权使⽤;
②完整性控制:保证数据的正确性、有效性和相容性;
③并发控制:使在同⼀时间周期内,允许对数据实现多路存取,⼜能防⽌⽤户之间的不正常交互作⽤。
⑷故障恢复
由数据库管理系统提供⼀套⽅法,可及时发现故障和修复故障,从⽽防⽌数据被破坏。数据库系统能尽快恢复数据库系统运⾏时出现的故障,可能是物理上或是逻辑上
简述一下java语言的特点分布式锁redis原理的错误。⽐如对系统的误操作造成的数据错误等。
三.数据库分类
在当今的互联⽹中,最常⽤的数据库模型主要是两种,即关系型数据库和⾮关系型数据库。
1 关系型数据库介绍
(1) 关系型数据库 : 是把复杂的数据结构归结为简单的⼆元关系(即⼆维表格形式)。
(2) ⽬前主流的关系型数据库:MySQL、Oracle 、 Sql server、DB2 。。。
Oracle 是世界上使⽤最⼴泛的数据库,上世纪末随着⽹络浪潮的到来,Oracle推出9i这个版本,i表⽰internet,全⾯⽀持⽹络引⽤。10g,g是grid⽹格,是Oracle公司为迎接“⽹格计算”时代的来临⽽提供的数据库解决⽅案。
MySQL是⼀个开源的、免费的关系型数据库,。由于其体积⼩、速度快、总体拥有成本低,尤其是开放源码这⼀特点,⼀般中⼩型⽹站的开发都选择MySQL作为⽹站数据库。
SQL Server 微软公司的关系型数据库,⼀般.NET平台会将其作为⾸选.
DB2是IBM出品的⼀系列关系型数据库管理系统,分别在不同的操作系统平台上服务。
主流数据库介绍
2 ⾮关系型数据库介绍
(1)⾮关系型数据库诞⽣背景
⾮关系型数据库也被成为NoSQL数据库,NOSQL的本意是“Not Only SQL”.⽽不是“No SQL”的意思,因此,NoSQL的产⽣并不是要彻底地否定⾮关系型数据库,⽽是
作为传统关系型数据库的⼀个有效补充。NOSQL数据库在特定的场景下可以发挥出难以想象的⾼效率和⾼性能。
随着互联⽹Web2.0⽹站的兴起,传统的关系型数据库在应付web2,0⽹站,特别是对于规模⽇益扩⼤的海量数据,超⼤规模和⾼并发的微博、、SNS类型的web2.0
纯动态⽹站已经显得⼒不从⼼,暴露了很多难以克服的问题。
例如:传统的关系型数据库IO瓶颈、性能瓶颈都难以有效突破,于是出现了⼤批针对特定场景,以⾼性能和使⽤便利为⽬的功能特异化的数据库产品。NOSQL(⾮关
系型)类的数据就是在这样的情景下诞⽣并得到了⾮常迅速的发展
(2) NOSQL⾮关系型数据库⼩结:
1、NOSQL不是否定关系数据库,⽽是作为关系数据库的⼀个重要补充
2、NOSQL为了⾼性能、⾼并发⽽⽣,但是要求对数据⼀致性要求不能⾼
3、NOSQL典型产品memcached (纯内存,k-v),redis(持久化缓存,k-v),mongodb(⽂档的数据库,xml-json)
四.MySQL介绍
MySQL 数据库:是互联⽹领域⾥⼀款最重要的,深受⼴⼤⽤户欢迎的开源关系型数据库软件之⼀、由瑞典MySQL AB公司开发与维护。2008年。MySQL AB公司被SUN公司收购,2009年,SUN公司⼜被传统数据数据库领域⼤佬甲⾻⽂(oracle)公司收购,因此,MySQL数据库软件⽬前属于Oracle公司,成为传统数据库领域⽼⼤的⼜⼀个数据库产品,甲⾻⽂公司收购MySQL后,使得⾃⾝在商业数据库与开源软件领域市场占有份额都跃居第⼀的位置,这样的格局,引起了很多⼈的担忧,这种担忧直接导致后来的Mysql分⽀数据库MariaDB的诞⽣于发展。
MySQL 发展历史
1985 年,瑞典的⼏位志同道合⼩伙⼦(David Axmark、Allan Larsson 和Monty Widenius) 成⽴了⼀家公司,这就是MySQL AB 的前⾝。
1990年,TcX公司的客户中开始有⼈要求为他的API提供SQL⽀持。当时有⼈提议直接使⽤商⽤数据库,但是Monty觉得商⽤数据库的速度难以令⼈满意。于是,他直接借助于mSQL的代码,将它集成到
⾃⼰的存储引擎中。令⼈失望的是,效果并不太令⼈满意,于是,Monty雄⼼⼤起,决⼼⾃⼰重写⼀个SQL⽀持。
1996年,MySQL 1.0发布,它只⾯向⼀⼩拨⼈,相当于内部发布。
1996年10⽉,MySQL 3.11.1发布(MySQL没有2.x版本),最开始只提供Solaris下的⼆进制版本。⼀个⽉后,Linux版本出现了。
1999~2000年,MySQL AB公司在瑞典成⽴。Monty雇了⼏个⼈与Sleepycat合作,开发出了Berkeley DB引擎, 因为BDB⽀持事务处理,所以MySQL从此开始⽀持事务处理了。
2003年12⽉,MySQL 5.0版本发布,提供了视图、存储过程等功能。
2008年1⽉16⽇,Sun(太阳微系统)正式收购MySQL。
2009年4⽉20⽇,甲⾻⽂公司宣布以每股9.50美元,74亿美元的总额收购Sun电脑公司。
2010年12⽉,MySQL 5.5发布,其主要新特性包括半同步的复制及对SIGNAL/RESIGNAL的异常处理功能的⽀持,最重要的是InnoDB存储引擎终于变为当前MySQL的默认存储引擎。
2013年6⽉18⽇,甲⾻⽂公司修改MySQL授权协议,移除了GPL。但随后有消息称这是⼀个bug。
为什么选择MySQL数据库?
(1) MySQL性能卓越、服务稳定,很少出现异常宕机
(2) MySQL开放源代码且⽆版权制约,⾃主性及使⽤成本低
(3) MySQL历史悠久,社区及⽤户活跃,遇到问题可以解决
(4) MySQL软件体积⼩,安装使⽤简单,并且易于维护,安装及维护成本低
(5) MySQL品牌⼝碑效应,使得企业⽆需考虑就直接⽤
(6) MySQL⽀持多⽤操作系统,提供多种API接⼝,⽀持多⽤开发语⾔,特别对流⾏的语⾔有很好的⽀持
MariaDB 介绍 :
出现在2009年. MAriaDB数据库管理系统是MySQL数据库的⼀个分⽀,主要由开源社区维护,采⽤GPL授权许可。开发这个MariaDB的原因之⼀是:甲⾻⽂公司收购了MySQL后,MySQL有闭源的潜在风险,因此MySQL开源社区采⽤分⽀的⽅式来避开这个风险。
MariaDB默认的存储引擎是Maria,不是MyISAM。Maria可以⽀持事务,但是默认情况下没有打开事务⽀持,因为事务⽀持对性能会有影响。可以通过以下语句,转换为⽀持事务的Maria引擎。ALTER TABLE `tablename` ENGINE=MARIA TRANSACTIONAL=1;
五.下载及安装
a:官⽹下载mysql安装程序
b:安装mysql服务端
c:安装mysql客户端
d:客户端连接服务端
e:通过客户端向服务器发送命令,执⾏对数据库⽂件的增删改差操作。
Windows版安装
#1.下载:MySQL Community Server 5.7.20
sql/downloads/mysql/
#2.解压
将官⽹下载的解压包解压到指定⽬录(例如 D://mysql-5.7.20-winx64)
#3.添加环境变量
【右键计算机】--》【属性】--》【⾼级系统设置】--》【⾼级】--》【环境变量】--》【在第⼆个内容框中到变量名为Path 的⼀⾏,双击】 --> 【将MySQL的bin⽬录路径追加到变值值中,⽤;分割】
C:\Program Files (x86)\Parallels\Parallels Tools\Applications;d:\mysql-5.7.16-winx64\bin
#4.初始化
mysqld --initialize-insecure
#5.启动mysql服务
mysqld
#6.连接mysql服务
mysql -uroot -p 回车,有密码输⼊密码,没有继续回车
解压⽅式安装
解压⽅式安装过
ps:制作服务必须使⽤全路径⽅式
# 制作MySQL的Windows服务,在终端执⾏此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --install
# 移除MySQL的Windows服务,在终端执⾏此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --remove'
# 启动MySQL服务
net start mysql(后⾯不加分号)
# 关闭MySQL服务
net stop mysql(后⾯不加分号)
制作服务
在启动mysql服务后,打开windows任务管理器,会有⼀个名为的进程运⾏,所以是MySQL服务器程序。
退出登录:quit 或 exit 或 \q ;
next
next
next
....
ps:mis⽅式安装,会安装的东西⽐较全,使⽤起来⽐较⽅便
推荐:mis⽅式安装
Linux版本
1、下载地址:sql/downloads/mysql/5.6.html#downloads
也可以直接复制64位的下载地址,通过命令下载:wget sql/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_
2、解压
#解压
tar -zxvf mysql-5.6.33-linux-glibc2.5-x86_
#复制解压后的mysql⽬录
cp -r mysql-5.6.33-linux-glibc2.5-x86_64 /usr/local/mysql
3、添加⽤户组和⽤户
#添加⽤户组
groupadd mysql
#添加⽤户mysql 到⽤户组mysql
useradd -g mysql mysql
4、安装
cd /usr/local/mysql/<br>mkdir ./data/mysql
chown -R mysql:mysql ./
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
cp support-files/my-defaultf /etc/myf
源码交易源码交易傻妞平台#修改启动脚本
vi /etc/init.d/mysqld
#修改项:
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/mysql
#启动服务
service mysqld start
#测试连接
./mysql/bin/mysql -uroot
#加⼊环境变量,编辑 /etc/profile,这样可以在任何地⽅⽤mysql命令了
export PATH=$PATH:/usr/local/mysql//bin<br>source /etc/profile
#启动mysql
service mysqld start
#关闭mysql
service mysqld stop
#查看运⾏状态
service mysqld status
5、错误
5.1 sqlyog连接时,报1130错误,是由于没有给远程连接的⽤户权限问题
解决1:更改 ‘mysql’数据库‘user’表‘host’项,从‘localhost’改成‘%’。
use mysql;
select 'host'from user where user='root';
update user set host = '%' where user ='root';
flush privileges;
解决2:直接授权
GRANT ALL PRIVILEGES ON *.* TO ‘root’@'%’ IDENTIFIED BY ‘youpassword’ WITH GRANT OPTION;
5.2 安装时的⼀些错误
-bash: ./scripts/mysql_install_db: /usr/bin/perl: bad interpreter: 没有那个⽂件或⽬录
解决: yum -y install perl perl-devel
Installing MySQL /bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决:yum -y install libaio-devel
linux版本安装
六.啥是SQL?
上⾯咱们介绍过数据库的组成部分,其中数据库管理系统可以接收⼀些命令,对数据⽂件进⾏添加、删除、修改、查询等操作。那么这些命令就是 SQL .
SQL:(Structured Query Language)是结构化查询语⾔缩写。是⼀门专门与数据库管理系统打交道的语⾔。
SQL语⾔:是关系型数据库的标准语⾔, 其主要⽤于存取数据,查询数据,更新数据和管理数据库系统等操作。
具体可以把SQL分为4个部分:
数据控制语⾔ ( DCL):主要⽤于控制⽤户的访问权限。其中GRANT语句⽤于给⽤户增加权限,REVOKE语句⽤于收回⽤户的权限
数据定义语⾔(DDL):DROP、CREATE、ALTER等语句;数据库定义语⾔。主要⽤于定义数据库,表,视图,索引和触发器等。CREATE语句主要⽤于创建数据库,创建表,创建视图。ALTER语句主要⽤于修改表的定义,修改视图的定义。DROP语句主要⽤于删除数据库,删除表和删除视图等。
数据操作语⾔(DML):INSERT、UPDATE、DELETE语句;数据库操作语⾔。主要⽤于插⼊数据,更新数据,删除数据。INSERT语句⽤于插⼊数据,UPDATE语句⽤于更新数据,DELETE语句⽤于删除数据.
数据查询语⾔(DQL):SELECT语句。主要⽤于查询数据。
#1. 操作⽂件夹
增:create database db1 charset utf8;
查:show databases;
改:alter database db1 charset latin1;
删除: drop database db1;
#2. 操作⽂件
先切换到⽂件夹下:use db1
增:create table t1(id int,name char);
查:show tables
改:alter table t1 modify name char(3);
alter table t1 change name name1 char(2);
删:drop table t1;
#3. 操作⽂件中的内容/记录
增:insert into t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');
查:select * from t1;
改:update t1 set name='sb' where id=2;
删:delete from t1 where id=1;
穿梭时空的侠客有女主吗清空表:
delete from t1; #如果有⾃增id,新增的数据,仍然是以删除前的最后⼀样作为起始。
truncate table t1;数据量⼤,删除速度⽐上⼀条快,且直接从零开始,
auto_increment 表⽰:⾃增
primary key 表⽰:约束(不能重复且不能为空);加速查
View Code
animate cafe上海店
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论