zoukankan      html  css  js  c++  java
  • Mysql数据库简介

    一、认识数据库

    1.数据库的由来

      之前所认识的数据都是存存某一个文件当中,但是一个文件只能存在于一台机子上,但在现实中不可能所有的数据都是存放在一台机子上的。

      (1)现实中是不可能将所有的应用程序放在一台机子上的

      假设所有的应用程序只安装在一台机子上,若该机子崩掉,则意味着数据永久性的消失,所以除非煞笔,要不然没有人会这么做的。并且一台机子的性能是有限的,有些人就想到了给机子添加硬件,关键是你再怎么添加硬件来提升性能,到最后肯定是会达到一个极限的,所以,将所有的应用程序都安装在一台机子上的做法是不可取的。

      (2)数据的安全型没有保障

      数据若之存放于单独某一台机子上,数据的共享性就必然不一致了。所以,尽量不要将所有的数据存放于一台机子上。

      (3)并发效果

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

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

      总结上述几点:

        在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专门的
    处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全性等一系列问题,总之,把程序员从数
    据管理中解脱出来,专注于自己的程序逻辑的编写。
    二、数据库概述
    1.数据的概念
      世界中用来描述一切事物状态的记录符号称之为数据,它可以是图片、视频、文件等等。
    2.数据库的概念
      数据库即存放所有数据的一个仓库,只是这个仓库是位于计算机上的,并且是按照一定的格式来储存的。
    3.数据库管理系统(DataBase Management System-DBMS)

      为了科学地组织和存储数据,高效获取和维护数据,这就用到了一个系统软件---数据库管理系统,如MySQL、Oracle、SQLite、Access、MS SQL Server。

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

      记录:1 张大胖  324245234 22(多个字段的信息组成一条记录,即文件中的一行内容)

      表:student,scholl,class_list(即文件)

      数据库:oldboy_stu(即文件夹)

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

      数据库服务器:一台计算机(对内存要求比较高)

    总结:

        数据库服务器-:运行数据库管理软件

        数据库管理软件:管理-数据库

        数据库:即文件夹,用来组织文件/表

        表:即文件,用来存放多行内容/多条记录

    三、Mysql介绍

      1.mysql是什么?

      MySQL是一个关系型数据库管理系统,是一个基于socket编写的c/s架构软件。

      客户端的软件:MySQL自带>>如MySQL命令,mysqldump命令等

             python模块>>如pymysql

      2.数据库管理软件的分类

      主要分成两大类:

        关系型:如sqllite,db2,oracle,access,sql server,MySQL,注意:sql语句通用

        非关系型mongodb,redis,memcache

      可以理解成:

        关系型数据库需要有表结构

          非关系型数据库是key-value存储的,没有表结构
    四、安装
    linux版本
    1.解压tar包
    cd /software
    tar -xzvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz
    mv mysql-5.6.21-linux-glibc2.5-x86_64 mysql-5.6.21
    
    2.添加用户与组
    groupadd mysql
    useradd -r -g mysql mysql
    chown -R mysql:mysql mysql-5.6.21
    
    3.安装数据库
    su mysql
    cd mysql-5.6.21/scripts
    ./mysql_install_db --user=mysql --basedir=/software/mysql-5.6.21 --datadir=/software/mysql-5.6.21/data
    
    4.配置文件
    cd /software/mysql-5.6.21/support-files
    cp my-default.cnf /etc/my.cnf
    cp mysql.server /etc/init.d/mysql
    vim /etc/init.d/mysql   #若mysql的安装目录是/usr/local/mysql,则可省略此步
    修改文件中的两个变更值
    basedir=/software/mysql-5.6.21
    datadir=/software/mysql-5.6.21/data
    
    5.配置环境变量
    vim /etc/profile
    export MYSQL_HOME="/software/mysql-5.6.21"
    export PATH="$PATH:$MYSQL_HOME/bin"
    source /etc/profile
    
    6.添加自启动服务
    chkconfig --add mysql
    chkconfig mysql on
    
    7.启动mysql
    service mysql start
    
    8.登录mysql及改密码与配置远程访问
    mysqladmin -u root password 'your_password'     #修改root用户密码
    mysql -u root -p     #登录mysql,需要输入密码
    mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;     #允许root用户远程访问
    mysql>FLUSH PRIVILEGES;     #刷新权限
    
    源码安装mysql
    源码安装mysql
    
    
    1. 解压
    tar zxvf  mariadb-5.5.31-linux-x86_64.tar.gz   
    mv mariadb-5.5.31-linux-x86_64 /usr/local/mysql //必需这样,很多脚本或可执行程序都会直接访问这个目录
    
    2. 权限
    groupadd mysql             //增加 mysql 属组 
    useradd -g mysql mysql     //增加 mysql 用户 并归于mysql 属组 
    chown mysql:mysql -Rf  /usr/local/mysql    // 设置 mysql 目录的用户及用户组归属。 
    chmod +x -Rf /usr/local/mysql    //赐予可执行权限 
    
    3. 拷贝配置文件
    cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf     //复制默认mysql配置 文件到/etc目录 
    
    4. 初始化
    /usr/local/mysql/scripts/mysql_install_db --user=mysql          //初始化数据库 
    cp  /usr/local/mysql/support-files/mysql.server    /etc/init.d/mysql    //复制mysql服务程序 到系统目录 
    chkconfig  mysql on     //添加mysql 至系统服务并设置为开机启动 
    service  mysql  start  //启动mysql
    
    5. 环境变量配置
    vim /etc/profile   //编辑profile,将mysql的可执行路径加入系统PATH
    export PATH=/usr/local/mysql/bin:$PATH 
    source /etc/profile  //使PATH生效。
    
    6. 账号密码
    mysqladmin -u root password 'yourpassword' //设定root账号及密码
    mysql -u root -p  //使用root用户登录mysql
    use mysql  //切换至mysql数据库。
    select user,host,password from user; //查看系统权限
    drop user ''@'localhost'; //删除不安全的账户
    drop user root@'::1';
    drop user root@127.0.0.1;
    select user,host,password from user; //再次查看系统权限,确保不安全的账户均被删除。
    flush privileges;  //刷新权限
    
    7. 一些必要的初始配置
    1)修改字符集为UTF8
    vi /etc/my.cnf
    在[client]下面添加 default-character-set = utf8
    在[mysqld]下面添加 character_set_server = utf8
    2)增加错误日志
    vi /etc/my.cnf
    在[mysqld]下面添加:
    log-error = /usr/local/mysql/log/error.log
    general-log-file = /usr/local/mysql/log/mysql.log
    3) 设置为不区分大小写,linux下默认会区分大小写。
    vi /etc/my.cnf
    在[mysqld]下面添加:
    lower_case_table_name=1
    
    修改完重启:#service  mysql  restart
    源码安装mariadb
    window版本
    #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 --initialize-insecure
    
    #5、启动MySQL服务
    mysqld # 启动MySQL服务
    
    #6、启动MySQL客户端并连接MySQL服务
    mysql -u root -p # 连接MySQL服务器
    安装
    
    
    上一步解决了一些问题,但不够彻底,因为在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题:
    
    
    
    注意:--install前,必须用mysql启动命令的绝对路径
    # 制作MySQL的Windows服务,在终端执行此命令:
    "c:mysql-5.7.16-winx64inmysqld" --install
     
    # 移除MySQL的Windows服务,在终端执行此命令:
    "c:mysql-5.7.16-winx64inmysqld" --remove
    
    
    
    注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:
    # 启动MySQL服务
    net start mysql
     
    # 关闭MySQL服务
    net stop mysql
    将MySQL服务做成window服务
    五、软件管理
    待更。。
    六、初识 sql 语句
    mysql服务端软件即mysqld帮我们管理好文件夹以及文件,前提是作为使用者的我们,需要下载mysql的客户端,或者其他模块来连接到mysqld,
    然后使用mysql软件规定的语法格式去提交自己命令,实现对文件夹或文件的管理。该语法即sql(Structured Query Language 即结构化查询语言)
    SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。SQL语言分为3种类型:
    #1、DDL语句    数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
    #2、DML语句    数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
    #3、DCL语句    数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
    语句类型
    1.登录MySQL数据库
    mysql -u root -p
    登录
    2.库的操作
    # charset:给数据库指定编码格式
    增: create database db charset utf8;
    
    # 查询数据库中所有的库
    查: show databases;
    
    # 因还未增添数据,故只能修改字符编码
    改: alter database db charset gbk;
    
    # 删除指定的库
    删: drop database db;
    对库的操作
    3.文件夹的操作
    # 首先得切换至需要操作的文件夹下
    use db;
    
    # 创建文件夹,并指定表字段数据类型
    增:create table student(id int,name char);
          create table db.student(id int,name char);
    
    # 查询当前库下的所有文件夹
    查:show tables;
    
          # 只能改表字段下的数据
    改:alter table student modify name char(15);
          # 更改表字段的同时可以更改表字段下的数据
          alter table student change name new_name char(10);
    
    删:drop table student;
    对文件夹的操作

    4.文件的操作
    # 增加数据是最后一个一定不能加逗号
    增:insert into student values(1,'Luffy'),(2,'Namy'),(3,'Brooke');
    
    查:
    表格式化:desc student;
    指定条件查找:select * from student where id>1;
    查所有:select * from student;
    
    改:update student set name='LUFFY' where id =1;
    
    删:
    # 如果有自增id(即id默认主动增加),新增的数据,仍然是以删除前的最后一条记录作为起始
    delete from student where id=1;
    # 数据量大,删除速度比上一条快,且新增的记录直接从零开始
    truncate table student;
    
    auto_increment 表示:自增(即在默认情况下,往表格中加一条数据,id会自动加1)
    primary key 表示:约束(不能重复且不能为空--not null unique);加速查找
    对文件的操作
     

     

  • 相关阅读:
    C# 扩展方法使用
    C# 程序集安装与卸载
    C#截取当前活动窗体的图片
    DateTime格式
    c# asp.net 多数组索引的解决方法
    关于DataSet中Relations的应用
    datalist 分页
    ASP.NET(C#) Repeater分页的实现
    asp.net 六大对象之Request、Response
    什么是DOM
  • 原文地址:https://www.cnblogs.com/Smart1san/p/9339149.html
Copyright © 2011-2022 走看看