zoukankan      html  css  js  c++  java
  • 疫情环境下的网络学习笔记 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:MYSQLMYSQL5.7.30MySQL Server 5.7in
      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
    
    
  • 相关阅读:
    c++作业2 9.22
    c++作业1 9.22
    c++练习题2
    c++练习题1
    10.10作业3
    10.10作业2
    10.10作业 1
    9.22作业5
    9.22作业4
    9.22zuo
  • 原文地址:https://www.cnblogs.com/telecasterfanclub/p/12823078.html
Copyright © 2011-2022 走看看