数据库初识及操作命令
数据库初识
DBMS(数据库管理系统)
数据库管理系统是为管理数据库而设计的电脑软件系统, 一般具有存储, 截取, 安全保障, 备份等基础功能
通俗来说, 这个工具负责通过操作系统和硬盘交流, 高效的管理数据, 并且还支持对外通信, 相当于一个socket服务端, 想操作数据的人或项目都可以连接到这个工具, 并通过这个工具来管理数据
关系型数据库(RDBMS)
关系型数据库模型是把负责的数据结构归结为简单的二元关系
这几个表之间建立了某种关系, 共享着双方的数据. 这就是关系. 关系型数据库存储的数据大概就是这个样子
结构化查询语言(SQL)
操作关系型数据库的命令, 称之为SQL
SQL是一种特殊目的的编程语言, 是一种数据库查询和程序设计语言, 用于存取数据以及查询, 更新和管理关系数据库系统; 同时也是数据库脚本文件的扩展名.
不同数据库系统之间的SQL不能完全相互通用
常用的关系型数据库:
oracle数据库
Oracle前身叫SDL、由Larry Ellison和两个变成任意在1977创办,他们开发了主机的拳头产品,在市场上大量销售。Oracle公司是最早开发关系型数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场占有率数一数二 。
Oracle公司是目前全球最大的数据库软件公司,也是近年业务增长极为迅速的软件提供与服务商
主要应用范围:传统大企业、大公司、政府、金融、证券等。
版本升级:oracle8i,oracle9i,oracle10g,oracle11g,oracle12c
MySQL
MySQL被广泛的应用在Internet上的大中小型网站中。由于体积小、速度快、总体拥有成本低,开放源代码
MariaDB数据库
MAriaDB数据库管理系统是MySQL数据库的一个分支,主要由开元社区维护,采用GPL授权许可。开发这个MariaDB的原因之一是:甲骨文公司收购了MySQL后,有MySQL闭源的潜在风险,因此MySQL开元社区采用分支的方式来避开这个风险。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM的存储引擎,它使用了Percona的XtraDB(InnoDB的变体)这个版本还包括了PrimeBase XT (PBXT)和Federated X存储引擎。
SQL Server数据库
Microsoft SQL Server是微软公司开发的大型关系数据库系统。SQL Server的功能比较全面,效率高,可以作为中型企业或单位的数据库平台。SQL Server可以与Winodws操作系统紧密集成,不论是应用程序开发速度还是系统事务处理运行速度,都得到较大的提升,对于在Windows平台上开发的各种企业级信息管理系统来说,不论是C/S(客户机/服务器)架构还是B/S(浏览器/服务器)架构。SQL Server都是一个很好的选择。SQL Server的缺点是只能在Windows系统下运行
Access数据库
Access是入门级小型桌面数据库,性能安全性都很一般,可供个人管理或小型企业只用
Access不是数据库语言,只是一个数据库程序,目前最新版本为Office 2007,其特点主要如下:
(1)完善地管理各种数据库对象,具有强大的数据组织,用户管理、安全检查等功能
(2)强大的数据处理功能,在一个工作组级别的网络环境中,使用Access开发的多用户管理系统具有传统的XSASE(DBASE、FoxBASE的统称)数据库系统所无法实现的客户服务器(Ckient/Server)结构和响应的数据库安全机制,Access具备了许多先进的大型数据管理管理系统所具备的特征。
(3)可以方便地生成各种数据对象,利用存储的数据建立窗体和报表
(4)作为Office套件的一部分,可以与Office集成,实现无缝连接
(5)能够利用Web检索和发布数据,实现与Internet的连接,Access主要适用于中小企业应用系统,或作为客户机/服务器系统中的客户端数据库。
其他不常用关系型数据库
DB2,PostgreSQL,Informix,Sybase等。这些关系型数据库逐步的淡化了普通运维的实现,特别是互联网公司几乎见不到
非关系型数据库
非关系型数据库也被称为NoSQL数据库, NoSQL的本意是"NOT ONLY SQL", NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能.传统的关系型数据库对于规模日益扩大的海量数据, 超大规模和高并发的微博, 微信等动态网站已经显得力不从心
非关系型数据库(NoSQL)类的数据就是这样诞生并迅速发展, 高性能, 高并发, 对数据一致性要求不高
开源的NoSQL体系,如Facebook的Cassandra,Apache的HBase,也得到了广泛认同,Redis,mongb也逐渐越来越受到各类大中小型公司的欢迎和追捧
小结
1, NOSQL不是否定关系数据库,而是作为关系数据库的一个重要补充 2, NOSQL为了高性能、高并发而生,忽略影响高性能,高并发的功能
3, NOSQL典型产品memcached (纯内存),redis(持久化缓存),mongodb(文档的数据库)
MySQL
安装目录
![](https://img2018.cnblogs.com/blog/1730033/201911/1730033-20191126165117311-1672307125.png)
![](https://img2018.cnblogs.com/blog/1730033/201911/1730033-20191126165205009-1420264694.png)
配置my.ini(默认参数)
[client]
#设置mysql客户端默认字符集
default-character-set=utf8
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8
user = 'root'
password = '123'
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=E:\mysql-5.6.45-winx64
# 设置mysql数据库的数据的存放目录
datadir=E:\mysql-5.6.45-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
root用户修改密码
方法一:
使用 set password 命令
首先登陆MySQL, 使用mysql自带的那个客户端连接上mysql
格式: mysql > set password for 用户名@localhost = password('新密码')
方法二:
使用mysqladmin(因为我们将bin已经添加到环境变量了, 这个mysqladmin也在bin目录下, 所以可以直接使用这个mysqladmin功能, 使用它来修改密码)
mysqladmin, 是一个执行管理操作的客户端程序. 可以用来检查服务器的配置和当前状态, 创建和删除数据库, 修改用户密码等等的功能, 虽然mysqladmin的很多功能通过MySQL自带的mysql客户端可以搞定, 但是有时候使用mysqladmin操作会比较简单
格式: mysqladmin -u用户名 -p旧密码 password 新密码
但是这种方式会直接明文显示密码, 所以最好连接进入到mysql里面之后, 在进行密码的修改和设置
方法三:
用update直接编辑mysql库中的user表
首先登录MySQL, 连接上mysql服务端
mysql>use mysql;
# use mysql 的意思是切换到mysql这个库, 这个库是所有的用户表和权限相关的表都在这个库里面, 我们进入到这个库才能修改这个库里面的表
mysql>update user set password=password('123') where user='root' and host='localhost';
# 其中 password=password('123')前面的password是变量, 后面的password 是mysql提供的给密码加密用的, 我们最好不要明文的存密码, 其中user是一个表, 存着所有的mysql用户的信息
mysql>flush privileges;
# 刷新权限, 让其生效, 否则不生效, 修改不成功.
root用户忘记密码
关闭正在运行的MySQL服务, net stop mysql(这个mysql是你添加的mysqld到系统服务时的服务名)
打开DOS窗口, 转到mysql\bin目录.
输入mysqld --skip-grant-tables 回车. --skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证, 因为之所以mysql启动之后, 客户端连接的时候需要登录认证, 输入密码, 因为mysql服务端启动的时候, 加载了自己内部的一些权限相关信息的授权表, 权限认证表什么的, 这样就要求客户端必须有认证, 如果启动的时候没有加载这些表和设置, 那么我们客户端再进行登录的时候, 就不需要认证了, 登录之后登录之后到mysql这个存有所有用户信息的表中去修改密码.(但是有个问题, 这个过程中需要关闭服务端, 以后解决).
tips:
有一个问题, 直接使用上述指令, 直接通过mysqld启动服务的话, 就不能通过net stop mysql的方式来关闭服务了, 所以用到杀死进程这个指令(win10): tasklist|findstr mysqld 找到mysqld服务的端口号, 然后taskkill/F/PID 端口号来杀死这个mysql服务的进行, 以后就可以使用net start/net stop mysql的方式来启动和关闭了
再开一个DOS窗口, 转到mysql\bin目录
输入mysql回车, 如果成功, 将出现MySQL提示符 >
连接权限数据库: use mysql
改密码: update user set password=password("123") where user="root";
刷新权限(必须步骤): flush privileges; 凡是涉及到密码修改或者后面我们会学到的权限修改, 修改完之后全部要执行这一句
退出 quit
注销系统, 再进入, 使用新密码登录修改编码
永久修改编码
在数据库软件中的my.ini中 可以配置默认编码集,这样以后再创建时默认的就是配置中的编码集
简易SQL语句
数据库的操作
增:
create database 数据库名 charset utf8
创建一个库, 可以指定字符集
删:
drop database 数据库名
删除某个库
改:
alter database 库名 charset utf8
修改库的字符集
查:
show databases
查看数据库中所有的库
show create database 库名
查看单独某个库的创建信息
表的操作
表的介绍
表相当于文件, 表中的一条记录就相当于文件中的一行内容, 表中的一条记录有对应的标题, 称为表的字段
操作前先切换:
use 库名
要操作表文件, 先切换到对应的库下 , 才能操作表
增:
create table t1(id int, name char(10))
创建一个表, 设置字段以及记录格式
删:
drop table t1
改:
alter table t1 modify name char(3)
修改字段属性, 将name字段的char长度改为3
alter table t1 change 旧字段名 新字段名 新数据类型
查:
select database()
查看当前所在的是哪个库
show tables
查看当前库中所有的表
show create table t1
查看表的创建信息
desc t1
describe t1
这两个是一样的结果, 查看表信息