第30天 数据库管理软件的相关概念 安装配置mysql 基本sql语句(库,表,数据的增查改删)

数据库管理软件相关的概念

数据库管理软件:本质就是个cs架构的套接字程序(解决本地文件存储数据的问题而开发的一个程序)
服务端套接字 客户端套接字
操作系统 操作系统
计算机(本地文件) 计算机硬件

1.程序的所有组件不可能运行在一台计算机上
一台计算机性能有限,我们需要将程序的各个组件分布于多台机器去执行

2.数据安全问题
每台计算机都只能操作本地的文件,这就导致了数据的不一致
将数据与应用程序分离,把文件存放于一台机器,然后多台机器通过网络去访问这台机器上的文件,实现数据的共享(数据安全问题,需要加锁处理问题。。。)

3.并发
远程连接(支持并发)
打开文件
读写(加锁)
关闭文件

常见的数据库管理软件

关系型数据库管理软件(表跟表之间是有关系的)
mysql,oracle
去IOE运动

非关系型数据库管理软件(key:value形式的数据库)
redis,memcache,mongodb(后台数据去用)
redis,memcache通常是用来当作缓存用的,把数据放到内存里面用
mongodb(当作后台数据去用)

非关系型数据库:查询快
关系型数据库:方便管理

sql语句:套接字管理软件的作者为使用者规定的命令规范

数据库重要概念总结
数据-------------------》事物的状态
记录-------------------》文件中的一条信息
表---------------------》一个文件
库---------------------》文件夹
表头-------------------》表格第一行字段
字段-------------------》字段名+字段类型
数据库管理软件-----------》套接字程序:mysqld(server),mysql(client)
数据库服务器-------------》运行mysqld的计算机

扫描二维码关注公众号,回复: 12529711 查看本文章

数据库???
可能指的是库,也有可能指的是数据库管理软件,或者是数据库服务器

windows系统下载并安装mysql软件
下载安装好后,使用时需要开启两个端口,一个是服务端(mysqld),一个是客户端(mysql)
在cmd里面输入命令”mysqld“会开启服务端,再打开一个cmd端口输入命令”mysql -u(用户名) root -p(密码) -h(ip) -P(端口号,默认端口号3306)“

在前期配置mysql的时候,cmd终端进来以管理员的身份运行
windows+r 输入cmd 进入的是普通用户终端 有一些命令是无法执行的
搜索cmd右键 以管理员身份运行

启动mysql
先切换到mysql所在的目录下,然后输入mysql即可
保留原来的cmd窗口重新打开一个

常见的软件默认端口号

mysql 3306
redis 6379
mongpdb 27017
django 8000
flask 5000

mysql第一次以管理员身份进入是没有密码的

客户端连接服务端完整命令:mysql -h 127.0.0.1 -P 3306 -uroot -p

sql语句初识

1.mysql中的sql语句是以分号作为结束的标志

2.基本命令
    show databases;(查看所有的数据库名)
    
3.连接服务端的命令可以简写
    mysql -uroot -p
    
4.当你输入的命令不对,又不想让服务端执行返回报错信息可以用\c取消
    错误命令 \c取消
    
5.客户端退出 退出命令加不加分号都可以
    quit
    exit

6.当你在连接服务端的时候发现输入mysql也能连接
    但是你不是管理员身份 而只是一个游客模式

环境变量配置及系统服务制作

小知识点补充
1.如何查看当前具体进程2
    tasklist
    tasklist |findstr mysqld

2.如何杀死具体进程(只有在管理员cmd窗口下才能成功)
    taskkill /F /PID PID号

环境变量配置

每次启动mysql需要先切到对应的文件路径下才能操作太过繁琐
将mysqld所在的文件路径添加到系统环境变量中

将mysql服务端制作成系统服务(开机自启动),这样就不需要两个cmd窗口了
查看当前计算机运行的进程数
    service.msc
将mysql制作成系统服务
    mysqld --install
移除mysql系统服务
    mysqld --remove


设置密码
mysqladmin -uroot -p原密码 password 新密码
该命令直接在终端输入即可,无需进入客户端

跳过授权并重置密码(密码破解
可以将myql获取用户名和密码的校验的功能看成是一个装饰器
装饰在了客户端请求访问的功能上
我们如果将装饰器移除,那么mysql服务端就不会校验用户名和密码了

1.先关闭当前mysql服务端
命令行的方式启动(让mysql跳过用户名密码验证功能)
mysqld --skip-grant-tables跳过授权表启动
2.直接以无密码的方式连接
mysql -uroot -p 直接回车
3.修改当前用户的密码
update mysql.user set password=password(123) where(注意,一定要使用where指定修改的密码,不然会把数据库所有的密码都改成123)
user="root" and host="localhost"

真正存储用户表的密码字段,存储的肯定是密文
只有用户自己知道明文是什么,其他人都不知道,这样更加的安全
密码比对也只能比对密文

4.立刻将修改的数据刷到硬盘
flush privileges
5.关闭当前服务端,然后以正常校验授权的形式启动

统一编码,配置无需密码直接以管理员身份登陆

修改配置文件后一定要重启mysql服务才能生效(重点注意)

mysql默认的配置文件
my-default.ini
ini结尾的一般都是配置文件
程序启动会先加载配置文件中的配置之后才真正启动
[mysqld] # 一旦服务端启动立刻加载下面的配置
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql] # 一旦客户端启动立刻加载下面的配置
。。。
[client] # 其他客户端
。。。

需要你自己新建一个my.ini的配置文件
验证配置是否真的会自动加载
[mysql]
print("hello world")

修改配置文件后一定要重启mysql服务才能生效(重点注意)

统一编码的配置 无需掌握 直接拷贝即可
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

将管理员的用户名和密码也添加到配置文件中后,
之后启动mysql数据库就不需要输入用户名和密码了 直接输入mysql会直接以管理员身份启动
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
user="root"
password=123
default-character-set=utf8

基本sql语句
ps:大部分程序的业务逻辑其实都是增删改查

针对库的增删改查(文件夹)

增:create database db1;(指定编码格式的完整命令为:create database db1 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(4));
查:show tables; (查看当前库下的所有表名)
    show create table t1;(查当前库下的指定表信息)
    describe t1;(将当前表的信息以表格的形式展示,支持简写 desc t1;)
改:alter table t1 modify name char(16);
删:drop table t1;

表的增查改删也可以以绝对路径的形式进行操作,无需切换文件路径
create table db2.t1(id int);(例如在文件db1路径下,新增加一个db2库中的t1的表格)

针对数据的增删改查(一行行数据)

一定要现有库 有表 最后才能操作记录
增:insert into t1 values(1,"nana");
    insert into t1 values(1,"nana"),(2,"dada"),(3,"tank")
查:select * from t1; (该命令当数据量特别大的时候不建议使用,*号代表所有的意思)
#    select id,name from t1; (将t1中所有用户的id,名字显示出来)   
简写  select name from t1; (将t1中所有用户的名字显示出来)
改:update t1 set name="lala" where id = 1;(将id等于1的名字改成lala)
删:delete from t1 where id > 1; (将id大于1的数据全部删除)
    delete from t1 where name ="tank"; (将名字为tank的数据删除)
将表所有的数据清空:delete from t1;

猜你喜欢

转载自blog.csdn.net/Yosigo_/article/details/113519255