·一、什么是数据库?(DataBase,简称DB)
数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的。
数据库是长期存放在计算机内、有组织、可共享的数据即可。
数据库中的数据按一定的数据模型组织、描述和储存、具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享
二、什么是数据管理系统?
mysql 主要用于大型门户,它主要的优势就是开放源代码,因为开放源代码这个数据库是免费的,oracle主要用于银行、铁路、飞机场大型公司。该数据库功能强大,软件费用高。
数据库服务器:运行数据库存管理软件
数据库管理软件:管理——数据库
数据库:即文件夹,用来组织文件/表
表:即文件,用来存放多行内容/多条记录
数据库存管理软件分类
数据库的本质就是一款基于网络通信的应用程序,它仅仅就是一个基于网络通信的应用程序
关系型数据库: mysql、oracle、db2、access、sql server
非关系型数据库:redis、mongodb、memcache
关系型:数据之间彼此有关系或者约束、存储数据的表现形式通常是以表格存储、每次个字段还会有 存储类型的限制,比如姓名只能存字符串,需要有表结构
非关系型:存储数据通常都是以k,v键值的形式,没有表结构
三、mysql
Mysql是一个关系型数据库管理系统,任何基于网格通信的应用程序底层用的都是socket
mysql不单支持mysql自己的客户端app还支持其他编程语言来充当客户端操作
服务端
基于socket通信
收发消息
sql语句
客户端
基于socket通信
收发消息
sql语句
库 》》》》 文件夹
表 》》》》 文件
记录 》》》 文件内一行行的数据
name password hobby
lili 123 学习
summer 123 弹琴
表头 表格的第一行字段
字段 name、password、hobby
服务端 mysql.exe 客户端 mysql.exe
常见软件的默认端口号 mysql 3306 redis 6379 mongodb 27017 django 8000 flask 5000 Mysql 第一次以管理员身份进入是没有密码的,直接回车即可 客户端连接服务端完整命令 mysql -h 127.0.0.1 -p 3306 -uroot -p
1、mysql中的sql语句是以分号作为结束的标志 2、基本命令 show databases;查看所有的库名 3、连接服务端的命令可以简写 mysql -uroot -p 4、当输入的命令不对又不想让服务端执行并返回报错信息,可以用c取消 错误命令 c 5、客户端退出,退出命令加不加分号都可以执行 quit exit 6、当你在连接服务端的时候发现只输入mysql也能连接 但是你不是以管理员身份运行的,只是一个游客模式
环境变量配置
每次启动mysqld需要先切到对应的文件路径下才能操作太多繁琐
将mysql所在的文件路径添加到系统环境变量中
将mysql服务端制作成系统服务(开机自启动) 查看当前计算机的运行进程数 services.msc 将mysql制作成系统服务 mysql -- install 移除mysql系统服务 mysql --remove
mysqladmin -uroot -p 原密码 password 新密码
改命令直接在终端输入即可,无需进入客户端
mysqladmin -uroot -p123 password 123456
忘记密码了怎么办? 可以将mysql获取用户名和密码校验的功能看成是一个装饰器 装饰在了客户端请求访问的功能上 我们如果将该装饰器移除,那么Mysql服务端就不会校验用户名和密码了 1、先关闭当前mysql服务端 命令行的方式启动(让Mysql跳过用户名密码验证功能) mysql --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、关闭当前服务端,然后以正常校验授予权表的形式启动
my_default.ini ini结尾的一般都是配置文件 程序启动会先加载配置文件中的配置之后才真正的启动 [mysql] 一旦服务端启动立刻启动加载下面的配置 sql_mode=NO_ENGINE_SUBSTITUION,STRICT_TRANS_TABLES [mysql] 一旦客户端启动立刻加载下面的配置 ... [client] 其他客户端 ... 需要你自己新建一个my.ini的配置文件 验证配置是否真的是自动加载 [mysql] print('hello world') 修改配置文件后一定要重启服务才能生效 统一编码的配置,无需掌握真接拷贝即可 偷懒 将管理员的用户名和密码也添加到配置文件中 [mysql] character-set-server=utf8 collation-server=utf8_general_ci [client] default_character_set=utf8 [mysql] user='root' password=123456 default-character-set=utf8
针对库的增删改查(文件夹)
#增 create database db1; create database db2 charset='gbk'; #查 show databases; #查所有 show create database db1; 查单个 #改 alter database db2 charset='utf8'; #删 drop database db2;
针对表的增删改查(文件)
在操作表(文件)的时候,需要指定所在的库(文件夹) 查看当前所在的库名字 select database(); 切换库 use db1; #增 create table t1(id int,name char); #查 show tables; show create table t1; desc t; (describe t1;的缩写) #改 alter table t1 modify name char(16); #删 drop table t1; create table db2.t1(id int);也可以用绝对路径的形式操作不同的库
针对数据的增删改查(一行行数据)
要有库 有表才能操作记录 #增 insert into t1 values(1,'jason'); insert into t1 values(1,'jason'),(2,'egon'),(3,'tank'); #查 select * from t1; 该命令数据量特别大的时候不建议用 select name from t1; #改 update t1 set name ='lili' where id > 1; #删 delete from t1 where id > 1; delete from t1 where name-'json'; #将表所有的数据清空 delete from t1;