zoukankan      html  css  js  c++  java
  • 数据库 理论

    数据库的概念

    使用文件来管理数据

    1.管理不方便 

    2.文件操作效率问题

    3.一个程序产生的数据不能共享

    所以产生了数据库

      本质:将保存数据的部分 存到一个公共的地方 所有的用户涉及到数据相关 都必须来这个公共地方查找

    补充 假如存发数据库的计算机 炸了 那么 他的数据就都会没了 所以就会有多个计算机来存放数据库 数据共享 

    数据库之MySQL

      本质就是一款基于网络通信的应用软件
      任何基于网络通信的软件 底层都是socket

    模拟 mysql服务端

      - 基于socket通信

      - 收发消息

      - SQL语句(其实是一个公共的标准)

    模拟 mysql客户端

      - 基于socket通信

      - 收发消息

      - SQL语句(其实是一个公共的标准)

    ps:MySQL不单单支持MySQL的客户端来操作 也支持其他编程语言直接操作  python java c++ php语法都不一样

    DBMS 数据管理系统

      分为  关系型数据库 (数据与数据之间可以有关联限制的)

          关系型数据库通常都是表结构,也就意味着你在用关系型数据库的时候第一步就是确定表结构

          先搞清楚什么是 记录 : 记录就是 文件内(表内)的一行行数据

          补充: 库 : 一个个文件夹  表: 一个个文件   字段: 表内写的第一行数据   字段 :字段名+字段类型

            字段特定的类型 存名字用的 字符串 

                    存密码用的 数字

                    存生日用的 日期

            常见的 非关系型数据库  MySQL(免费 开源 性能不差 支持大量的高并发)

                         SQLserver (微软的产品 仅仅支持windows)

                        Oracle (最牛B的数据库 但是收费高)

                         DB2 (收费)

          非关系型数据库

            通常都是以k,v键值的形式 存储数据  (速度快 二级缓存)

            redis,mongodb(文档型数据库 非常接近关系型的非关系型数据),memcache

    MySQL其实可以把它看成一款支持远程操作文件的软件

    安装MySQL
        在IT行业 不要轻易的尝试最新版本的软件
    
    下载之后 是将MySQL的服务端和客户端都下载了下来
        解压
        查看文件目录
    
        服务端
            mysqld
        客户端
            mysql
    
        启动mysqld
            1.切换到bin目录下
            2.执行mysqld
    
        ps:做前期MySQL配置的时候 终端建议你用管理员身份运行
    
        windows+r启动的是普通用户
    
        mysql在初始登陆的时候 是没有密码的 直接回车即可
    
        mysql中的sql语句 是以分号结束的 不敲分号 默认你没有输入完
        客户端还会让你继续输入
    mysql的安装

    mysql中的sql语句 是以分号结束的 不敲分号 默认你没有输入完
    客户端还会让你继续输入

    SQL语句

        客户端登陆
            mysql -h 127.0.0.1 -P 3306 -uroot -p
            可以简写
            mysql -uroot -p
    
            如果不输入用户名和密码 默认是访客模式登陆  所能用到的功能很少
    
        客户端退出登陆
            exit;
            quit;
        查看所有的数据库
            show databases;
    
    
        查看某个进程
            tasklist |findstr 名称(这个要退出才能查看!)
    
        杀死进程
            taskkill /F /PID 进程号
    
    
    
    
    制作环境变量
        将启动文件所在的路径添加到系统的环境变量中
        注意:配置完之后一段要重新启动mysql服务端及cmd终端
    
    将mysqld制作成系统服务(电脑启动,客户端自动启动,只要启动客户端即可)
        制作系统服务 你的cmd终端一定要是管理员身份
    
        mysqld --install(要将cmd全部退出,再重新打开,直接输入该命令!)
    
    
    
    修改密码
        没有密码的情况下
            mysqladmin -uroot -p password 123
        有密码的情况下
            mysqladmin -uroot -p123 password 123456
    
        当命令输入错误的时候  可以用c取消前面的命令  cancel
    
    破解密码
        现将已经启动的服务端停掉
    
        1.跳过用户名和密码的验证功能 启动服务端
            mysqld --skip-grant-tables  启动服务端 跳过授权表
        2.修改管理员用户对应的密码
            update mysql.user set password=password(123) where user='root' and host='localhost';
        3.关闭当前服务端  重新以校验用户名密码的方式启动
        4.正常以用户名密码的方式 连接mysql服务端
    
    配置文件
        s查看 mysql服务端简单配置
        通常情况下配置文件的后缀都是ini结尾
    
        mysql自带的配置文件不要修改
        但是你可以新建一个配置文件 my.ini
        mysql服务端在启动就会自动加载你的my.ini配置文件内的配置
    
        修改完配置文件之后需要先将服务端停止  重新启动 才能生效
    
        修改了配置文件一定要重启服务端
    
    
    数据库的基本操作
        库  类似于文件夹
            增
                create database db1;
            查
                show databases;  查所有
                show create database db1;  查单个
            改
                alter database db1 charset='gbk';  修改编码
            删
                drop database db1;  删库
        表
            在创建表的时候 需要先指定库
                指定库:  use 库名
                查看当前虽在的库: select database()
    
            增
                create table userinfo(id int,name char);
    
            查
                show tables;  查看某个库下面的所有的表
                show create table userinfo;
                desc userinfo;    <==> describe userinfo;
            改
                alter table userinfo modify name char(32);
            删
                drop table userinfo;
    
    
        记录
            先创建一个库或者指定一个已经存在的库
            切换到该库下 创建表
            然后再操作记录
            create database db1;
            create table userinfo(id int,name char(32),password int);
    
            增
                insert into userinfo values(1,'jason',123);  插入单条数据
                insert into userinfo values(1,'jason',123),(2,'egon',123),(3,'tank',123);  插入多条数据
            查
                select * from userinfo;  查询所有的字段信息
                select name from userinfo;  查询指定字段信息
                select id,name from userinfo where id=1 or name=tank;  带有筛选条件的字段信息
            改
                update userinfo set name='kevin' where id=1;  修改数据的一个字段信息
                update userinfo set name='jason',password=666 where id=1;  修改数据的多个字段
            删
                delete from userinfo where id =1;  指定删符合条件的数据
                delete from userinfo;  将表中的数据全部删除
    趁自己还没死 多折腾折腾
  • 相关阅读:
    并发编程三、线程可见性的底层原理
    并发编程二、线程的安全性和线程通信
    并发编程一、多线程的意义和使用
    Java进程监控
    分布式消息通信之RabbitMQ_Note
    分布式消息通信之RabbitMQ_02
    分布式消息通信之RabbitMQ_01
    分布式消息通信之RabbitMQ Tutorials
    SpringMVC重点分析
    Apache POI 4.0.1版本读取本地Excel文件并写入数据库(兼容 xls 和 xlsx)(五)
  • 原文地址:https://www.cnblogs.com/lddragon/p/11366359.html
Copyright © 2011-2022 走看看