数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
数据库的本质就是一个C/S架构基于网络通信的应用程序。
经过多年的发展,根据不同的需求,市面上出现了各种存储方式,存取速度不同的数据库,我们通常根据数据库的存取数据的特点来进行分类。将不同的数据库分为这两类:关系型数据库与非关系型数据库。
关系型数据库 | 默认端口号 |
---|---|
MySQL | 3306 |
Oracle | 1521 |
SQL Server | 1433 |
db2 | 5000 |
access | 不需要 |
非关系型数据库 | 默认端口号 |
---|---|
MongoDB | 27017 |
Redis | 6379 |
Memcached | 11211 |
web框架 | 默认端口号 |
---|---|
django | 8000 |
flask | 5000 |
tomcat | 8080 |
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL 使用标准的 SQL 数据语言形式;目前MySQL是开源免费的,隶属于 Oracle 旗下产品,拥有社区版与商业版两个版本。
库 | 文件夹 |
---|---|
表 | 文件夹 |
记录 | 文件中的数据 |
字段 | 文件的表头 |
查看我这篇详细版:https://blog.csdn.net/weixin_44884608/article/details/119112963?spm=1001.2014.3001.5502
1. 以管理员身份进入到cmd中 2. mysqld --install 添加服务 了解:mysqld --remove 删除服务 3. 默认情况是未启动状态,需要手动点击启动 4.如何查看服务是否启动? 1.services.msc 2.我的电脑 -> 右键 -> 管理 -> 服务和应用程序 3.任务管理器 -> 服务 -> MySQL
mysql -u root -p # 客户端用户在cmd窗口登录 mysql -u root -p 密码 # 在cmd中命令尾部跟密码,明文密码显示不建议使用
# MySQL客户端第一次登录不需要密码登录,密码输入 回车键即可 mysqladmin -uroot -p原密码 password 新密码 # 在cmd窗口输入即可 改密码例子: mysqladmin -uroot -p123 password 123456
当时间过长忘记MySQL密码,如何破解?
可以将MySQL获取用户名和密码校验的功能看成是一个装饰器,装饰在客户端请求访问的功能上,如果将装饰器移除,那么MySQL服务端就不会校验用户名和密码了。
# 1、先关闭当前mysql服务端 命令行方式启动(让mysql跳过用户名密码验证功能) mysqld --skip-grant-tables # 2、直接以无密码的方式连接 mysql -uroot -p 直接回车 # 3、修改当前用户的密码 update mysql.user set password=(123456) where user='root' and host='localhost'; ''' 真正存储用户表的密码字段 存储的肯定是密文 只有用户自己知道明文是什么 其他人都不知道 这样更加安全 ''' # 4、立刻将修改数据刷到硬盘 flush privileges; # 5、关闭当前服务端 然后以正常情况启动
MySQL默认的配置文件是在MySQL的软件目录下的my-default.ini
,my-default.ini
是一个模板配置文件,一般是不可动,不可修改。ini
结尾的一般为配置文件。程序启动会先加载配置文件中的配置之后真正的启动。
[mysqld] # 一旦服务端启动立刻加载下面配置 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysql] # 一旦客户端端启动立刻加载下面配置 ... [client] # 其他客户端 ...
my.ini
的配置文件,修改配置文件后一定要重启服务才能生效# 统一编码的配置 直接拷贝即可 [mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 [mysql] default-character-set=utf8
作用:方便登录
# 偷懒 将管理员的用户名密码添加到配置文件中 [mysqld] # MySQL服务端 character-set-server=utf8 collation-server=utf8_general_ci [client] # 其他客户端 default-character-set=utf8 [mysql] # MySQL客户端 user="root" # 不识别单引号 password=123456 default-character-set=utf8
ps:大部分的业务逻辑都是增删改查(远程操控文件夹)
# 增 create database db1; create database db1 charset='gbk'; # 查 show databases; # 查所有. 查看数据库下的所有库名信息 show create database db1; # 查单个,查看以及创建的数据库db1是用的什么字符编码. # 改 alter database db1 charset='utf8'; # 改的只是数据库的字符编码 # 删除 drop database db2;
''' 在操作表(文件)的时候 需要指定所在的库(文件夹) ''' # 查看当前所在的库的名字 select database(); # 切换库 use db1; # 增(表) create table t1(id int,name char(4)); # 查 show tables; # 查看当前库下面的所有表名 show create table t1; # 查单个表 # 查看表结构 describe t1; # 支持简写 desc t1; # 改字段类型 alter table t1 modify name char(16); # 删 drop table t1; """ craete table db2.t1(id int); # 也可以用绝对路径的形式操作不同的库 """
''' 1、一定要先有库 有表 最后才能操作记录 ''' # 增 # 加into不加into都可以, 不过为了语义完整还是加into insert into t1 values(1,'xiao'); # 为表t1中的第一个字段, 第二个字段插值, 一个小括号就是一条记录. insert into t1 values(1,'xiao'),(2,'chen'),(3,'a'); # 查 *代表所有字段 select * from t1; # 将t1表的数据都查出来 ;当数据量特别大的时候不建议使用 select name from t1; # 在当前路径查看t1表中属于字段name的记录 # 改 update t1 set name='DSB' where id > 1; # 将表t1中id>1的name字段修改为DSB # 删 delete from t1 where id > 1; delete from t1 where name='xiao'; # 将表所有的数据清空 delete from t1;