疫情环境下的网络学习笔记 python 4.30 初识数据库

4.30

数据库

存储数据的演变过程

  1. 随意地存到一个文件中,数据的格式千差万别,完全取决于我们自己

  2. 软件开发目录规范

    限制了存储数据的具体位置:db,lib,conf,core。。。每一个软件的纪录只在当前的计算机上保存,那么其中的数据只在当前计算机有效

  3. 使用数据库服务器,将单机变成联网

数据库的本质

数据库本质是一款基于网络通信的应用程序,数据库软件有很多:

  • 关系型:MySql,oracle,db2,sqlserver
  • 非关系型:redis,mongodb,memcache

关系型:数据之间彼此有关系或约束,存储数据的表现形式通常是表格,每个字段还会有存储类型的限制,比如数据类型,长度

非关系型:数据通常都是k:v键值对形式

MySql

任何基于网络通信的引用程序都是socket
MySql不单单支持MySql自己的客户端,还支持其他编程语言来充当客户端操作
任何解决语言沟通的障碍:
	- 让服务端兼容所有的语言
	- 采用统一的语言:SQL语句

重要概念介绍

库:文件夹
表:文件
记录:文件里一行行的数据
name pwd  age
aaa  123  21
bbb  321  22
表头:表格的第一行字段
字段:name,password,age。。。

MySql安装

IT界一般不会轻易使用新版本,因为可能出现旧版本没有出现的问题

  1. MySql官网 ---->Downloads
  2. 按照这种方式下载,服务端和客户端一并下载到本地

MySql服务端与客户端

在bin文件夹下

  • 服务端:mysqld.exe
  • 客户端:mysql.exe

配置MySql,cmd尽量用管理员身份运行

启动

  1. 管理员运行cmd

  2. cd切换到MySql所在的bin目录下

    cd F:\MYSQL\MYSQL5.7.30\MySQL Server 5.7\bin
    mysqld -uroot -p
    6008
    
  3. 保留原来的cmd窗口,再打开一个cmd

    mysql -h 127.0.0.1 -P 3306 -uroot -p密码
    

    mysql默认端口号3306

    mysql第一次以管理员身份进入没有密码,直接回车即可

sql语句基本命令

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

2. 基本命令:
	show databases; 查案所有的库名

3. 链接服务端的命令可以简写为mysql -uroot -p

4. 当输入的命令不正确,但是不想让服务端报错并返回,就在最后加上 \c,这一行就不会执行

5. 退出mysql:exit,quit,不用加分号

6. 在链接服务端的时候,只输入mysql也能链接,但是链接的不是管理员身份,只是游客模式

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

小知识点补充:
如何查看当前具体进程
	tasklist
	tasklist|findstr mysqld
杀死具体进程
	taskkill \F \PID 8504

环境变量配置

每次启动MySQLd还需要切到对应文件路径下才能操作,繁琐:添加环境变量,直接使用mysqld启动服务端
将mysqld服务端制作成系统服务:mysqld --install
移除mysqld系统服务:mysqld --remove

设置密码

mysqladmin -uroot -p原密码 password 新密码

忘记密码

可以将mysql获取用户名密码校验功能看成一个装饰器,装饰在客户端请求访问的功能上
如果移除装饰器,那么sql服务端就不会校验密码了
1. 关闭当前mysql服务端:在任务管理器里关闭

2. 命令行的方式启动,让mysqol跳过用户名密码验证功能
	mysqld --skip-grant-tables
	进入管理员账户

3. 修改当前用户的密码:mysql下的user
	update mysql.user set password=password(123) where user='root' and host ='localhost';
	真正存储用户表的密码字段,存储的是密文,只有用户自己直到明文是什么,其他人不知道,这样更加安全
	password方法会加密123,放进where后面指定的用户里

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

统一编码

mysql默认的配置文件

my-default.ini
ini结尾的一般都是配置文件,程序启动会先家咋配置文件中的配置之后才真正启动

在my.ini,直接拷贝代码进来,再重启

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
user="root"
password=123456
default-character-set=utf8

可选偷懒:将管理员的用户和密码加在mysql.ini中的mysql里

[mysql]
user="用户名"
password="密码"

基本sql语句

大部分的业务逻辑都是增删改查:create,alter,drop,show,select

全部要背下来

针对库的增删改查

# 增
create database db1 charset='gbk'; # 创建新库(文件夹)

# 查
show databases; # 查所有
show create database db1; # 查单个

# 改
alter database db1 charset='utf-8';

# 删
drop database db1;

针对表的增删改查

# 操作表的时候,要指定表所在的库
# 查看当前所在的库的名字
select database();
# 切换库,相当于双击db1库文件夹,进入
# 接下来的操作都在db1下进行
use db1;

# 创建表t1
create table t1(id int,name char(4));
# 表中包含两个字段,id,name
# id是整型,name是长度为4的字符串

# 查看当前库下所有的表名
show tables;
# 查看表t1,包括表下的数据
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库,可以这样在别的库下操作

针对数据的操作

# 一定要现有库,表,最后才能操作数据
# 增加数据
# 增加一行
insert into t1 values(2020,'aaa');
# 增加多行,用逗号隔开
insert into t1 values(2020,'aaa'),(2021,'bbb'),(2022,'ccc')

# 查看数据
# 查t1表中所有的数据
select * from t1 # 该命令在数据量很大的时候不要用
select name from t1 # 查看t1中所有name

# 改数据
update t1 set name='deimos' where name= 'aaa';

# 删数据
delete from t1 where name='bbb';

# 将表所有的数据清空
delete from t1

猜你喜欢

转载自www.cnblogs.com/telecasterfanclub/p/12823078.html