数据库初识及操作命令

百般思念 提交于 2019-12-05 17:25:30

数据库初识

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

​ 这两个是一样的结果, 查看表信息

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!