zoukankan      html  css  js  c++  java
  • mysql

    数据库 优势

      1.程序的稳定性:这样任意一台服务所在的机器崩溃了都不会影响数据和另外的服务

      2 数据的一致性:所有的数据都存储自爱一起,所有的程序操作的数据都是统一的,就不会出现数据不一样的现象

      3.并发:数据库可以良好的支持并发,所有的程序操作数据库都是通过网络.而数据本身支持并发的网络操作,不需要我们自己写socket

      4.效率:使用数据库对数据进行增删改查的效率要高出我们自己处理文件很多

    什么是数据(简称Data)

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

    在计算机中描述一个事物,就需要抽取这一事物的典型特征,组成一条记录,就相当于文件里的一行内容

    什么是数据库(DataBase,简称DB)

    数据库即存放数据的仓库,只不过这个仓库是在即计算机存储设备上,而且数据是按一定的格式存放的

    数据库是长期存放在计算机内,有组织,可共享的数据集合.

    数据库中的数据按一定的数据模型组织.描述和储存,具有较小的冗余度,较高的数据独立性和易扩展性,并可为各种用户共享

    什么是数据库管理系统(DataBase Management System,简称DBMS)

    可以科学的组织和存储数据,高效获取和维护数据

    常见的有 MySQL,Orale,SQLite,Access,MS SQL Server

    MySQL 主要用于大型门户,例如搜狗.新浪等 他主要的优势就是开放源代码,因为开放源代码这个数据库是免费的,他现在试甲骨文公司的产品

    oracle主要用于银行.铁路.飞机场等.该数据库功能强大,软件费用高.也是甲骨文公司的产品

    sql server 是微软公司的产品,主要应用于大型企业,如联想,方正

    数据库管理员DBA(database administrator)

    数据库服务器.数据库管理系统.数据库.表与记录的关系

    数据库:就是文件夹,用来组织文件表

    数据库管理系统: 管理 数据库  就是一个软件

    数据库服务器:运行数据库管理软件 就是一台计算机

    表:就是一个文件 用来存放多行内容多条记录

     mysql

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

    mysql是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增强了速度并提高了灵活性

    MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

    #进入mysql客户端
    $mysql
    mysql> select user();  #查看当前用户
    mysql> exit     # 也可以用q quit退出
    
    # 默认用户登陆之后并没有实际操作的权限
    # 需要使用管理员root用户登陆
    $ mysql -uroot -p   # mysql5.6默认是没有密码的
    #遇到password直接按回车键
    mysql> set password = password('root'); # 给当前数据库设置密码
    
    # 创建账号
    mysql> create user 'eva'@'192.168.10.%'   IDENTIFIED BY '123';# 指示网段
    mysql> create user 'eva'@'192.168.10.5'   # 指示某机器可以连接
    mysql> create user 'eva'@'%'                    #指示所有机器都可以连接  
    mysql> show grants for 'eva'@'192.168.10.5';查看某个用户的权限 
    # 远程登陆
    $ mysql -uroot -p123 -h 192.168.10.3
    
    # 给账号授权
    mysql> grant all on *.* to 'eva'@'%';
    mysql> flush privileges;    # 刷新使授权立即生效
    
    # 创建账号并授权
    mysql> grant all on *.* to 'eva'@'%' identified by '123' 
    
    mysql的账号操作
    mysql账号操作

    我们将数据按规则存在一个文件中,在设计一种规则可以拼凑组合成我们需要的操作,并通过这些指示在文件中存取数据,这串规则就被我们成为SQL.

    SQL:结构化查询语言(Structured Query Language)简称SQL是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存放数据以及查询.更新和管理关系数据库系统

    SQL语言主要用于存取数据.查询数据.更新数据和管理关系数据库系统.SQL语言由IBM开发.SQL语言分为3种类型

      1.DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER

      2.DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT

      3.DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE

    1. 操作文件夹(库)
       增:create database db1 charset utf8;
       查:show databases;
       改:alter database db1 charset latin1;
       删除: drop database db1;
    
    
    2. 操作文件(表)
       先切换到文件夹下:use db1
       增:create table t1(id int,name char);
       查:show tables;
       改:alter table t1 modify name char(3);
          alter table t1 change name name1 char(2);
       删:drop table t1;
        
    
    3. 操作文件中的内容(记录)
       增:insert into t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');
       查:select * from t1;
       改:update t1 set name='sb' where id=2;
       删:delete from t1 where id=1;
    
       清空表:
           delete from t1; #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。
           truncate table t1;数据量大,删除速度比上一条快,且直接从零开始,
    
    *auto_increment 表示:自增
    *primary key 表示:约束(不能重复且不能为空);加速查找

    存储引擎

    MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

    这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型)。 

    各种存储引擎的特性

    InnoDB

    MySql 5.6 版本默认的存储引擎。InnoDB 是一个事务安全的存储引擎,它具备提交、回滚以及崩溃恢复的功能以保护用户数据。InnoDB 的行级别锁定以及 Oracle 风格的一致性无锁读提升了它的多用户并发数以及性能。InnoDB 将用户数据存储在聚集索引中以减少基于主键的普通查询所带来的 I/O 开销。为了保证数据的完整性,InnoDB 还支持外键约束。

    MyISAM

    MyISAM既不支持事务、也不支持外键、其优势是访问速度快,但是表级别的锁定限制了它在读写负载方面的性能,因此它经常应用于只读或者以读为主的数据场景。

    Memory

    在内存中存储所有数据,应用于对非关键数据由快速查找的场景。Memory类型的表访问数据非常快,因为它的数据是存放在内存中的,并且默认使用HASH索引,但是一旦服务关闭,表中的数据就会丢失

    BLACKHOLE

    黑洞存储引擎,类似于 Unix 的 /dev/null,Archive 只接收但却并不保存数据。对这种引擎的表的查询常常返回一个空集。这种表可以应用于 DML 语句需要发送到从服务器,但主服务器并不会保留这种数据的备份的主从配置中。

    CSV

    它的表真的是以逗号分隔的文本文件。CSV 表允许你以 CSV 格式导入导出数据,以相同的读和写的格式和脚本和应用交互数据。由于 CSV 表没有索引,你最好是在普通操作中将数据放在 InnoDB 表里,只有在导入或导出阶段使用一下 CSV 表。

    NDB

    (又名 NDBCLUSTER)——这种集群数据引擎尤其适合于需要最高程度的正常运行时间和可用性的应用。注意:NDB 存储引擎在标准 MySql 5.6 版本里并不被支持。目前能够支持

    MySql 集群的版本有:基于 MySql 5.1 的 MySQL Cluster NDB 7.1;基于 MySql 5.5 的 MySQL Cluster NDB 7.2;基于 MySql 5.6 的 MySQL Cluster NDB 7.3。同样基于 MySql 5.6 的 MySQL Cluster NDB 7.4 目前正处于研发阶段。

    Merge

    允许 MySql DBA 或开发者将一系列相同的 MyISAM 表进行分组,并把它们作为一个对象进行引用。适用于超大规模数据场景,如数据仓库。

    Federated

    提供了从多个物理机上联接不同的 MySql 服务器来创建一个逻辑数据库的能力。适用于分布式或者数据市场的场景。

    Example

    这种存储引擎用以保存阐明如何开始写新的存储引擎的 MySql 源码的例子。它主要针对于有兴趣的开发人员。这种存储引擎就是一个啥事也不做的 "存根"。你可以使用这种引擎创建表,但是你无法向其保存任何数据,也无法从它们检索任何索引。

    mysql的工作流程

    MySQL架构总共四层,在上图中以虚线作为划分。 
      首先,最上层的服务并不是MySQL独有的,大多数给予网络的客户端/服务器的工具或者服务都有类似的架构。比如:连接处理、授权认证、安全等。 
      第二层的架构包括大多数的MySQL的核心服务。包括:查询解析、分析、优化、缓存以及所有的内置函数(例如:日期、时间、数学和加密函数)。同时,所有的跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。

      第三层包含了存储引擎。存储引擎负责MySQL中数据的存储和提取。服务器通过API和存储引擎进行通信。这些接口屏蔽了不同存储引擎之间的差异,使得这些差异对上层的查询过程透明化。存储引擎API包含十几个底层函数,用于执行“开始一个事务”等操作。但存储引擎一般不会去解析SQL(InnoDB会解析外键定义,因为其本身没有实现该功能),不同存储引擎之间也不会相互通信,而只是简单的响应上层的服务器请求。

      第四层包含了文件系统,所有的表结构和数据以及用户操作的日志最终还是以文件的形式存储在硬盘上。

    mysql表操作

    创建库  create database 库名;

    进入库  use 库名;

    创建表  create table 表名(字段名1 类型[(宽度) 约束条件],);

    查看所有表  show tables;

    查看表中信息  select 字段 from 表名;

            select * from 表名;

    向表中插入数据 insert into 表名(字段1,字段2) values (对应的字段信息);

    查看表结构方式

      describe [tablename];这种方法和desc [tablename];效果相同;可以查看当前的表结构

    虽然desc命令可以查看表的定义,但是其输出的信息还不够全面,为了得到更全面的表定义信息,有时候就需要查看创建表的SQL语句,使用show create table语法。除了可以看到表定义之外,还可以看到engine(存储引擎)和charset(字符集)等信息。(G选项的含义是是的记录能够竖向排列,以便更好的显示内容较长的记录。)

      describe 表名;

      desc 表名;

      show create table 表名G;

    修改表结构

    1修改表名  alter table 表名 rename 新表名;

    2增加字段 alter table 表名 add 字段名 数据类型 [新完整性约束条件..];

    3删除字段 alter table 表名 drop 字段名;

    4修改字段 

      alter table 表名 modify 字段名 数据类型 [完整性约束条件..];

      alter table 表名 change 旧字段名 新字段名 旧数据类型 [完整性约束条件..];

      alter table 表名 change 旧字段名 新字段名 新数据类型 [完整性约束条件..];

    5修改字段排列顺序在增加的时候指定字段位置

      alter table 表名 add 字段名 数据类型 [完整性约束条件..] first;

      alter table 表名 add字段名 数据类型 [完整性约束条件..] after 字段名;

      alter table 表名 change 旧字段名 新字段名 新数据类型[完整性约束条件..] first;

      alter table 表名 modify 字段名 数据类型 [完整性约束条件..] after 字段名;

    6创建自增id主键   alter table 表名  id int(4) primary key  auto_increment;

    7 删除一个自增主键  需要先去掉主键的自增约束,然后再去删除主键约束

      alter table staff modify id int(11);

      alter table staff drop primary key;

    8创建主键id    alter table staff add primary key (id);

    删除表

    drop table 表名;

    
    

      

      

  • 相关阅读:
    【C/C++】散列/算法笔记4.2
    【C/C++】PAT A1025 Ranking/算法笔记
    【科研工具】CAJViewer的一些操作
    【科研工具】知云-外文文献翻译神器
    【科研工具】流程图软件Visio Pro 2019 详细安装破解教程
    【Word】自动化参考文献-交叉引用
    【Matlab】线性调频信号LFM 仿真
    不是人人都懂的学习要点
    linux的那些事
    从一个男人身上看出他的修养和抱负
  • 原文地址:https://www.cnblogs.com/z1115230598/p/10157295.html
Copyright © 2011-2022 走看看