zoukankan      html  css  js  c++  java
  • 了解数据库

    数据库演变过程

    • 随意的存储到文件中,存储的格式也取决于自己

    • 软件开发目录规范——初步规范存储位置(单机)

    • 数据库——基于网络通讯的一个应用程序

    数据库

    本质:一款基于网络通讯的应用程序

    关系型数据库:

    • 彼此之间有关系或者约束

    • 存储数据的表现形式往往是表格的形式

      name password hobby

      jake 123 eat

      • 每一个字段还会有存储类型的限制——姓名只能存字符串类型

    非关系型数据库:

    • 通常是以k,v键值对的形式存储

    MySQL

    任何基于网络通讯的应用程序底层使用都是socket

    服务端:

    • 基于socket通讯

    • 收发消息

    • SQL语句

    客户端:

    • 基于socket通讯

    • 收发消息

    • SQL语句

    MySQL不但支持自己的客户端,也支持其他的语言充当客户端

    解决语言沟通的障碍——统一的语言(SQL语句)

    概念介绍

    库——文件夹

    表——文件

    记录——文件内的一行数据

    name     password       hobby
    jason   123 学习
    egon   123 女教练
    tank   123 吃生蚝
    表头: 表格的第一行字段
    字段:name     password hobby

    MySQL安装

    官网:https://www.mysql.com/

    服务端——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=utf8
    collation-server=utf8_general_ci
    [client]
    default-character-set=utf8
    [mysql]
    user="root"
    password=123456
    default-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;

  • 相关阅读:
    记录锁
    linux多线程同步pthread_cond_XXX条件变量的理解
    设置创建文件掩码遇到的问题
    函数的可重入和线程安全
    sigemptyset,sigfillset,sigaddset,sigdelset,sigismember,sigprocmask,sigpendmask作用
    嵌入式中断服务函数的一些特点
    linux alarm函数解除read write等函数的阻塞
    孤儿进程,僵死进程
    标准IO的缓冲问题
    《实用技巧》——让你的网站变成响应式的3个简单步骤
  • 原文地址:https://www.cnblogs.com/bailongcaptain/p/12828094.html
Copyright © 2011-2022 走看看