• 数据库基础


    数据库
    就是存储数据的仓库(容器)
    存储数据的方式
    1.变量 无法永久存储
    2.文件处理,可以永久存储

    文件处理存在的弊端:
    1.文件处理速度慢
    2.文件只能本机读写 无法被共享
     单台计算机的性能终归是有限的
    两种方式
    1.升级硬件设备 提升幅度有限 垂直扩展
    2.服务器集群 分布式 横向扩展 可插拔设计(在一个服务器后面增加更多服务器 如果某一台并发达到最大 就把请求交给其他服务器)

    一旦把服务器拆分开后 数据就必须能够被不同计算机共享
    必须通过网络 也就是socket

    数据库软件的本质 也就是一个基于socket(TCP)的C/S结构的程序
    如果自己实现一个数据软件 需要解决的几个问题
    1.一旦数据共享 就存在竞争问题 需要处理锁
    2.不是所有的TCP连接请求都要接受,得加上安全验证
    3.文件处理带来的效率问题,需要想办法来提高处理速度(索引)
    有很多现成的数据库软件可以直接使用 又分为两大类
    1.关系型数据库
    该类型的数据 提供某种机制 可以帮你维护 数据与数据之间的关系
    例如 学员数据与班级数据可以通过其中一方找到另一方
    一般是基于文件实现的
    优点:容量大 可以永久存储
    mysql 免费开源 开源支持中小型企业并发 不支持全外链
    oracle 商用收费,学习免费,功能比mysql强大,用户管理和集群
    SQLServer 属于微软生态圈,只能运行与windows上
    mariaDB mysql创始人:维德纽斯 sun inodb 担心mysql的前程 基于mysql开发了mariaDB 用起来是一样的
    DB2
    sqllite 非常轻量级的数据库

    共同特征 都支持SQL
    结构化 查询语言
    学习数据库的重点就是SQL语句

    2.非关系型数据库
    数据与数据之间是独立的 不存在任何关联关系
    以KEY:VALUE的形式来存储
    优点:基于内存
    问题:断电丢失
    通常用于缓存
    redis
    MongoDB
    memcache

    该使用哪一类数据库?
    应该搭配使用,把数据量大的 存到关系型中 把经常访问的放到非关系型中
    提高访问速度

    数据库相关概念
    数据 本质上一堆带有含义的符号
    name=jack
    数据记录
    多个数据组成一条完整记录
    name =jack age=38 sex=man
    name =rose age=20 sex=woman
    name =bbr age=38 sex=man


    表 本质就是一个文件
    里面存储一堆数据记录

    库 本质就是一个文件夹
    里面放一堆表文件
    DBMS
    data base manager system
    数据库管理系统(TCP的服务器)
    负责管理一堆文件夹(即数据库)

    数据库服务器
    可能指的是运行有TCP服务器的程序 的计算机

    DBMS和服务器 一般运维管
    到公司之后会分给你一个账号密码 以及服务器地址

    mysqld 是服务器主程序
    mysqld 警告说:创建文件失败 由于权限不足 用管理员权限运行
    mysql是无界面客户端需要在cmd运行
    mysql连接服务器 需要指定以下参数
    -h 主机地址(ip)
    -p 端口号
    -u 用户名
    -p 密码

    服务器和客户端在同一台电脑 可以省略主机地址 端口号默认3306 可以省略
    如果不指定用户名和密码 以游客模式登陆 什么都看不到


    修改管理员密码
    1.如果知道原始密码,mysqladmin -uroot -proot password ***
    2.不知道原密码: 可以在启动服务器时 跳过授权表 mysqld --skip --granttables
    执行修改密码的命令 用户密码信息 存储在mysql数据库中的user表中
    update mysql.user set password=password('新密码') where user='root' and host='localhost'
    无密码登陆服务器 执行修改密码的操作

    关于库的增删改查
    创建一个数据库
    create database 库名称;
    删除库
    drop database 库名称;
    修改库的属性
    alter database 库名称 charset='新编码'
    查看创建库的详细信息
    show create database 库名称
    查看所有数据库
    show databases
    选择一个数据库
    use 库名称


    关于表的增删改查

    create table 表名称(name char,age int);
    create table 库.表名(name char,age int);

    查看所有表
    show tables:
    查看表的详细信息
    show create table t1;
    查看表结构
    desc t1;

    改编码
    alter table t1 charset="gbk"
    添加字段
    alter table t1 add sex char;

    删字段
    alter table t1 drop sex;
    改类型
    alter table t1 modify age char;
    改字段名字类型
    alter table t1 change age ages int;

    改表名称
    rename table 原表名 to 新表名;

    删除
    drop table 表名

    数据记录相关的操作是重点学习对象

    insert into table_name values("name",age);
    一次性插入多条记录
    insert into table_name values(值1,值2)(值2,值2)....;
    指定要插入数据的字段
    insert into table_name values(值);

    查看数据
    select * from t2; *表示查看所有字段
    修改
    update t2 set age = 200 where name="name";
    update t2 set age = 200,name='name' where name="name"

    删除数据
    delete from 表名 where name ='name';
  • 相关阅读:
    一个老码农对职场的思考
    PHP算法 (冒泡 选择排序 折半查找 顺序查找 斐波那契数列 素数 )
    php 图像的基本操作
    php 随机字符串 验证码
    php中 var_dump 和 echo 和 print_r() 和 print
    正则表达式的整理
    php上传文件原理
    git 几个简单命令
    git 几个简单命令
    会话技术Cookie
  • 原文地址:https://www.cnblogs.com/gengbinjia/p/10523059.html
Copyright © 2020-2023  润新知