-
随意的存储到文件中,存储的格式也取决于自己
-
软件开发目录规范——初步规范存储位置(单机)
-
数据库——基于网络通讯的一个应用程序
数据库
本质:一款基于网络通讯的应用程序
关系型数据库:
-
彼此之间有关系或者约束
-
存储数据的表现形式往往是表格的形式
name password hobby
jake 123 eat
-
每一个字段还会有存储类型的限制——姓名只能存字符串类型
-
非关系型数据库:
-
通常是以k,v键值对的形式存储
MySQL
任何基于网络通讯的应用程序底层使用都是socket
服务端:
-
基于socket通讯
-
收发消息
-
SQL语句
客户端:
-
基于socket通讯
-
收发消息
-
SQL语句
MySQL不但支持自己的客户端,也支持其他的语言充当客户端
解决语言沟通的障碍——统一的语言(SQL语句)
概念介绍
库——文件夹
表——文件
记录——文件内的一行数据
name password hobby
jason 123 学习
egon 123 女教练
tank 123 吃生蚝
表头: 表格的第一行字段
字段:name password hobby
MySQL安装
服务端——mysqld.exe
客户端——mysql.exe
PS:服务端最好以管理员身份运行终端
MySQL启动
-
切换到mysql的bin目录下,输入服务端——mysqld
-
保留原先的终端,以客户端的身份链接到服务端
mysql -h 127.0.0.1 -p 3306 -uroot -p
启动中可能遇到的问题
MSVCP100.dll文件缺失——安装vc2010即可
SQL语句入门
-
MySQL中的sql语句是以分号作为结束的标志
-
基本命令
-
show databases; 查看所有的库的名字
-
mysql -uroot -p 链接服务端的命令简写
-
输入了不想执行的命令 c
-
客户端的求出quit exit 加不加分号都可以
环境变量的配置
-
查看当前的具体进程——tasklist
-
杀死进程——taskkill /F /PID
如何将mysql服务端制作成系统服务(开机自启动)
-
查看当前计算机的运行进程数——services.msc
-
将mysql添加到系统服务——mysqld --install
-
移除服务—— mysql --remove
设置密码
mysqladmin -uroot -p原密码,password 新密码
直接在终端输入即可,无需进入客户端
破解密码
"""
你可以将mysql获取用户名和密码校验的功能看成是一个装饰器
装饰在了客户端请求访问的功能上
我们如果将该装饰器移除 那么mysql服务端就不会校验用户名和密码了
"""
# 1 先关闭当前mysql服务端
命令行的方式启动(让mysql跳过用户名密码验证功能)
mysqld --skip-grant-tables
# 2 直接以无密码的方式连接
mysql -uroot -p 直接回车
# 3 修改当前用户的密码
update mysql.user set password=password(123456) where user='root' and host='localhost';
"""
真正存储用户表的密码字段 存储的肯定是密文
只有用户自己知道明文是什么 其他人都不知道 这样更加的安全
密码比对也只能比对密文
"""
# 4 立刻将修改数据刷到硬盘
flush privileges;
# 5 关闭当前服务端 然后以正常校验授权表的形式启动
mysql的默认配置文件
"""
my-default.ini
ini结尾的一般都是配置文件
程序启动会先加载配置文件中的配置之后才真正的启动
"""
[mysqld] # 一旦服务端启动立刻加载下面的配置
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql] # 一旦客户端启动立刻加载下面的配置
...
[client] # 其他客户端
...
# 需要你自己新建一个my.ini的配置文件
# 验证配置是否真的是自动加载
[mysql]
print('hello world')
# 修改配置文件后一定要重启服务才能生效
# 统一编码的配置 无需掌握 直接拷贝即可
# 偷懒 将管理员的用户名和密码也添加到配置文件中
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
user="root"
password=123456
default-character-set=utf8
基本的sql语句(增删改查)
针对库的增删改查
# 增
create database db1;
create database db2 charset='gbk';
# 删
drop database db2;
# 改
alter database db2 charset = 'utf8';
# 查
show databases;
针对表的增删改查(需要先指定库)
# 查看当前库名
select database();
# 切换库
use db1;
# 增
create table t1(id int,name char(4));
# 删
drop table t1;
# 改
alter table t1 modify name char(16);
# 查
show tables;
show create table t1;
describe t1; -----简写 desc t1;
针对数据的增删改查(在指定了库和表之后才可以对数据操作)
# 增
insert into t1 values(1,'jake'); 一条一条加
insert into t1 values(1,'jake')(2,'rose');
# 删
delete from t1 where id > 1;
delete from t1 where name = 'jake';
# 改
updata t1 set name='SB' where name = 'jake';
# 查
select * from t1; 查看所有数据数据多的时候不建议使用
select name from t1;