zoukankan      html  css  js  c++  java
  • 数据库概念和基本操作(mysql的操作)

    一 数据库介绍

    1.为什么要使用数据库?

      基于我们之前所学,数据想要永久保存,都是保存于文件中的,毫无疑问,一个文件仅仅只能存在于某一台机器上。如果我们暂时忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运行在一台机器上,那么用文件存取数据,并没有什么问题,但是很不幸,这些假设都是我们自己意淫出来的,真实情况下都会出现以下几个问题:

      1.程序所有的组件就不可能运行在一台机器上

    #因为这台机器一旦挂掉则意味着整个软件的崩溃,并且程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的,受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。
    
    #于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分布于多台机器去执行。

      2.数据安全问题

    #根据1的描述,我们将程序的各个组件分布到各台机器,但需知各组件仍然是一个整体,言外之意,所有组件的数据还是要共享的。但每台机器上的组件都只能操作本机的文件,这就导致了数据必然不一致。
    
    #于是我们想到了将数据与应用程序分离:把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件(用socket实现),即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,需要加锁处理。。。。

      3.并发

    根据2的描述,我们必须写一个socket服务端来管理这台机器(数据库服务器)上的文件,然后写一个socket客户端,完成如下功能:

    #1.远程连接(支持并发)
    #2.打开文件
    #3.读写(加锁)
    #4.关闭文件

      总结

    #我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专门的处理软件,这就是mysql等数据管理软件的由来,但是mysql解决的不静静是数据共享的问题,还有查询效率,安全性等一系列的问题,总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写。

    二 数据库概述

    1.数据

      描述事物的符号记录被称为数据,描述事物的符号既可以是数字,也可以是文字、图片、图像、声音、语言等,数据有多种表现形式,它们都可以经过数字化后存入计算机。

    2.数据库

      数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。

    3.数据库管理系统(DataBase Management System 简称DBMS)

      在了解数据和数据库的概念后,如何科学地组织和存储数据,如何高效获取和维护数据成了关键,这就用到了一个有系统软件---数据库管理系统。常见的数据管理系统有:MySQL、Oracle、SQLite、Access、MS MQL Server等。

      Mysql,甲骨文公司的免费数据库管理系统,主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码,因为开放源代码的数据库是免费的。

      Orance,同样是甲骨文公司的产品,不过他是收费的,但是Orance数据库主要用于银行,铁路,飞机场等,该数据库功能强大,软件费用高。

      SQL Server,微软公司的产品,主要应用于大中型企业,如联想、方正等。

    4.数据库服务器、数据管理系统、数据库、表与记录的关系(重点!!!)

    记录:钢铁侠  22  男  (多个字段的信息组成的一条记录,即文件中的一行内容)

    表:student (即文件)

    数据库:school  (即文件夹)

    数据库管理系统:MySql (是一个软件)

    数据库服务器:一台计算机 (对硬件的配置要求较高)

    总结:

      数据库服务器——运行数据库的管理软件的计算机

      数据库管理软件——管理数据库的软件

      数据库——组织文件(表)的文件夹

      表——存放多条记录的文件

      额外内容:

      数据库客户端——可以连接数据库的任意客户端

      数据库管理员DBA

    5.数据库的分类

      1.关系数据库:有表的概念,以表中一条条记录存储数据的数据库称之为关系数据库,代表的数据库有:mysql、orance、sqlServer、access、db2。

      2.非关系数据库:没有表的概念,通过key---value键值对方式存储数据的数据库,代表的数据库有:mongodb、redis、memcache。

    接下里我们重点讲解以mysql数据为例的数据库操作。

    三 Mysql数据库的安装

    1.MySql介绍

    在了解安装过程前,我们来了解一下MySql数据库。

    #mysql就是一个基于socket编写的C/S架构的软件
    #客户端软件
      mysql自带:如mysql命令,mysqldump命令等
      python模块:如pymysql

    2.Mysql的下载安装

    #1、下载:MySQL Community Server 5.7.16
    http://dev.mysql.com/downloads/mysql/
    
    #2、解压
    如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:mysql-5.7.16-winx64
    
    #3、添加环境变量
    【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】
     
    #4、初始化服务器
    mysqld --install
    
    #5、启动MySQL服务
    cmd命令行下:mysqld 或者在服务中手动打开MYSQL的服务(进入系统服务: win+r => services.msc => 找到mysql服务手动启动或关闭)# 启动MySQL服务
    
    #6、启动MySQL客户端并连接MySQL服务
    mysql -u root -p # 连接MySQL服务器

    3.Mysql操作

      基本操作

    # 查看mysql版本: select version();
    # 查看当前用户: select user();
    # 查看mysqld下的(当前用户可以操作的)所有数据库: show databases; 

      密码操作

    # 知道旧密码
    # 修改密码: mysqladmin -uroot -p旧密码 password "新密码"

    # 遗忘旧密码 # 1.绕过授权表启动服务(先停止安全认证的服务): mysqld --skip-grant-tables; # 2.以任意密码登录root用户: mysql -uroot -p任意 # 3.更新密码: update mysql.user set password=password("新密码") where user=root and host="localhost" # 4.刷新权限: flush privileges; #5.关闭当前的数据库服务器,利用操作如下: 1.tasklist|findstr mysql :找到当前mysql服务器的端口号 2.taskkill /F /pid 端口号 :关闭服务器 #6.打开安全认证的服务器,即去服务中打开MYSQL服务器 #再次进入mysql发现密码已经改好了。

      统一字符编码

    # 1.在mysql安装根目录下:创建my.ini (my.cnf) (命令:type nul>文件名.文件后缀)
    #2. 修改配置文件
    [mysqld]
    default-character-set=utf8 
    [client]
    default-character-set=utf8 
    [mysql]
    default-character-set=utf8
    
    #mysql5.5以上:修改方式有所改动
    [mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    
    #3. 重启服务
    #4. 查看修改结果:
    s
    show variables like '%char%'

    四 初识sql语句(结构化查询语言)

    1.库的基本操作

    #前提:已经连接上数据库
    #
    1.增:创建数据库 #采用默认编码集(即配置文件中的编码集):create database db1; #db1为数据库名 #采用自定义编码集:create database db1 charset = "gbk"; #2.查:查看数据库信息 #纵观所有的数据库:show databases; #查看某个数据库的详细信息:show create database db1; #db1为数据库名 #3.改:修改数据库的编码集 # alter database db1 charset ="utf8"; #4.删,移除数据库 #drop database db1;

    2.表的基本操作

    #在具体的某个库下创建表
    #进入指定的数据库 :use db1 #db1数据库名
    #确定当前使用的数据库: select database();
    
    #1.增:创建表(字段1 类型,...,字段n 类型)
    #create table t1(name char ,age int );
    
    #2.查:查看表信息
    #查看当前数据库中的所有表:#show tables
    #查看当前某张表的详细信息:show create table t1; #t1为表名
    #查看表字段结构信息:desc t1; #t1为表名 
    
    #3.改:修改表信息
    #修改字段属性 : alter table t1 modify name char(20);
    #修改字段名 : alter table t1 change name user char(16);
    #修改表名 :alter table t1 rename t2;  #将表名t1修改为t2
    
    #删:移除表
    #drop table t1;

    3.字段的基本操作

    #前提:知道具体操作的是哪张表
    #1.增:添加字段
    #insert into t2(user,age) values("aa",18),("bb",20);
    
    #2.查:
    #select * from t2  查看t2表中的全部字段信息
    #select user from t2 查看t2表中的user的字段信息
    
    #3.改
    #update t2 set age =28 where user ="cc";
    
    #4.删
    #delete from t2 where age >8  删除t2表中年龄大于8的字段信息
  • 相关阅读:
    【ceph | 运维】部署osd
    【osd | 运维】osd数据均衡
    leveldb——leveldb入门篇之Linux下编译配置和使用
    【Linux系统编程】预分配磁盘空间
    【filestore】源码剖析
    【Linux】Linux Page Cache的理解
    ceph internal 之 底层对象
    【Linux】磁盘基础知识
    Spring Cloud Alibaba学习08Seata基本使用
    Spring Cloud Alibaba学习05Sentinel基本使用
  • 原文地址:https://www.cnblogs.com/846617819qq/p/10235104.html
Copyright © 2011-2022 走看看