数据库概述:
- 什么数据库: 存放数据和管理的仓库,简而言之就是一个文件系统,这个文件必须通过标准的SQL访问.
- 数据库就是一个文件系统,只不过我们需要通过命令(SQL)来操作这个文件系统
- 数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。
- 数据库是长期储存在计算机内、有组织的、可共享的数据集合。数据库中的数据指的是以一定的数据模型组织、描述和储存在一起、具有尽可能小的冗余度、较高的数据独立性和易扩展性的特点并可在一定范围内为多个用户共享。
关系型数据库: E-R关系图
E:Entity实体 R:relation关系
关系型数据库作用:主要是用来存储实体与实体之间的关系,
常见的数据库:
关系型数据库:
- mysql : 小型.开源免费,大多数中小型互联网公司都在使用这个,sun公司收购了 (集群),5.5以前的都是免费的,6.X之后的版本都是收费的
- mariadb: 开源免费数据, 和mysql基本上一模一样,但是它是免费的,并且在不停的更新,是mysql开源版本的一个分支
- Oracle : 中大型的数据库,服务收费的,安全稳定. 证券,银行,保险公司, Oracle收购了sun公司, mysql6.x之后就开始收费了
- SQL Server : 大学里面教学使用比较多, 政府官网, 图形化界面做的很好 c#
- DB2 : IBM公司, 主要运用在银行系统, 服务器软硬件解决方案
- sybase : powerdesinger 数据建模工具
- SQLite : 运用在嵌入式系统中的小型数据库,android
查看数据库排名网站: https://db-engines.com/en/ranking
MYSQL数据库服务器
数据库服务器安装了Mysql服务软件的一台电脑
MYSQL的SQL语句
SQL: Structrued Query Langauage 结构化的查询语言
- DDL(Data Definition Language): 数据定义语言 : 定义数据库或者表结构. alter(修改) create(创建) drop(删除) truncate(截断)
- DML(Data Manipulation Language): 数据操纵语言: 用来操作表中数据: insert(插入) update(更新) delete(删除)
- DQL(Data Query Language): 数据查询语言: 用来查询数据 select(选择) from(从哪里查) where(哪一条,判断条件)
- DCL(Data Control Language): 数据控制语言: 用来控制用户权限 grant(授权) revoke(取消授权)
数据库管理员(Database Administrator,简称DBA),是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。
登录数据库:
方式一: mysql -u root -p 按回车后提示后输入密码
方式二:mysql -uroot -p自己的密码
完整格式:
mysql -h主机地址 -u用户名 -p密码
连接本机:
mysql -hlocalhost -uroot -p123456
mysql -h127.0.0.1 -uroot -p123456
注意:不写-hlocalhost代表默认访问本机数据库服务器
-u username 用户名
-p password密码
数据库的CRUD操作
创建数据库:
create database 数据库的名字;create database 数据库的名字 character set 字符集;create database 数据库的名字 character set 字符集 collate 校对规则;
数据库明明规范:
- 由字母、数字、下划线、@、#和$符号组成
- 首字母不能是数字和$符号
- 不允许有空格和特殊字符
- 长度小于128位
查看数据库:
--查看数据库定义的语句show create database 数据库的名字;--查看所有的数据库show databases;--查看当前使用的数据库select database();
修改数据库的字符集:
--修改数据的字符集alter database 数据库的名字 character set 字符集;
删除数据库:
drop databae 数据库的名字;
选择数据库:
--切换数据库use 数据库的名字;
存储引擎
查看数据库管理系统支持的引擎
第一种:
show engines;
- Engine参数表示存储引擎的名称
- Support参数表示MySQL数据库管理系统是否支持该存储引擎
- Comment参数表示关于存储引擎的注释
- Transactions参数表示存储引擎是否支持事务
- XA参数表示存储引擎支持的分布式是否符合XA规范
- Savepoints参数表示存储引擎是否支持事务处理中的保存点
第二种:
show variables like'have%';
- variable_name参数表示存储引擎的名字
- value参数表示MySQL数据库管理系统是否支持存储引擎(DISABLED表示支持但是没有开启,YES表示支持)
查询默认存储引擎
show variables like'storage_engine%';
修改默认的存储引擎
打开MySQL安装目录下的my.ini,找到如图所示,default-storage-engine=INNODB,修改INNODB值即可
选择存储引擎
* MyISAM存储引擎:由于该存储引擎不支持事务、也不支持外键,所以访问嘟嘟比较快。因此对事务完整性没有要求,并以访问为主的应用格式和该存储引擎。
* InnoDB存储引擎:由于该存储引擎在事务上具有优势,即支持具有提交、回滚和崩溃恢复能力的事务安装,所以比MyISAM存储引擎占用更多的磁盘空间。因此需要进行频繁的更新、删除操作,同时还对事务的完整性要求比较高,需要实现并发控制,此时适合该存储引擎。
* MEMORE存储引擎:该存储引擎使用内存来存储数据,因此该存储引擎的数据访问熟读快,但是安全上没有保障。如果应用中涉及数据比较小,需要快速访问,则适合使用该存储引擎。
表的CRUD操作:
表中的数据库对象包含列、索引和触发器。
- 列(Columns):也称属性列,在具体创建表时,必须指定列的名字和数据类型
- 索引(Indexes):时根据指定的数据库表列建立起来的顺序,提供了快速访问数据的途径且可监督表的数据,是其索引执行的列中的数据不重复。
- 触发器(Triggers):是指用户定义的事务命令的集合,当对一个表中的数据进行插入、更新或者删除时这组命令就会自动执行,可以用来确保数据的完整性和安全性。
创建表:
createtable 表名( 列名 列的类型 [列的约束], 列名 列的类型 [列的约束]);
查看表:
--查看所有的表show tables;--查看表的创建过程show createtable 表名;或者 show createtable 表名 \G --查看表的结构desc 表名;或者 describe 表名;
更新表
altertable 旧表名 rename [to] 新表名;或者 rename table 旧表名 to 新表名;altertable 表名 character set 字符集;
删除表:
droptable 表名;