了解数据库
数据库演变过程
随意的存储到文件中,存储的格式也取决于自己
软件开发目录规范——初步规范存储位置(单机)
数据库——基于网络通讯的一个应用程序
数据库
本质:一款基于网络通讯的应用程序
关系型数据库:
彼此之间有关系或者约束
存储数据的表现形式往往是表格的形式
name password hobby
jake 123 eat
每一个字段还会有存储类型的限制——姓名只能存字符串类型
非关系型数据库:
通常是以k,v键值对的形式存储
MySQL
任何基于网络通讯的应用程序底层使用都是socket
服务端:
基于socket通讯
收发消息
SQL语句
客户端:
基于socket通讯
收发消息
SQL语句
MySQL不但支持自己的客户端,也支持其他的语言充当客户端
解决语言沟通的障碍——统一的语言(SQL语句)
概念介绍
库——文件夹
表——文件
记录——文件内的一行数据
name password hobbyjason 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=utf8collation-server=utf8_general_ci[client]default-character-set=utf8[mysql]user="root"password=123456default-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;