数据库

关系型数据库:Oracle , SQL Server ,DB2,MySQL.

非关系型数据库:Nosql ,MongoDB,Redis.

一、关系型数据库

关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织。

优点:

  1. 易于维护:都是使用表结构,格式一致;
  2. 使用方便:SQL语言通用,可用于复杂查询;
  3. 复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。

缺点:

  1. 读写性能比较差,尤其是海量数据的高效率读写;
  2. 固定的表结构,灵活度稍欠;
  3. 高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈

二、非关系型数据库

非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。

优点:

  1. 格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
  2. 速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
  3. 高扩展性;
  4. 成本低:nosql数据库部署简单,基本都是开源软件。

缺点:

  1. 不提供sql支持,学习和使用成本较高;
  2. 无事务处理;
  3. 数据结构相对复杂,复杂查询方面稍欠。

安装数据库中,命令窗口中的 mysql -u root -p   -u表示的是用户名。默认为root。 -p是输入密码。

mysql的数据存储结构:

        先数据库,在表,再有数据。

SQL语句:

      作用:管理数据库,管理表,管理结构。

      SQL(Structured Query Language,结构化查询语言)语言:和数据库交互的语言,进行数据管理的语言。

      查询所有数据库:show databases;

      

      +--------------------+

      | Database           |

      +--------------------+

      | information_schema |     -- mysql元数据,基础数据(不可删除)

      | mysql              |    --mysql配置数据库,其中包含用户信息。(用户名和密码,权限管理)(不可删除)

| performance_schema |    --mysql数据库软件的运行数据,日志信息,性能数据(不可删除)  日志信息指的是:操作所引起的问题。

| test               |     --测试数据库。空的(可随意修改)。

+--------------------+

4 rows in set (0.00 sec)

创建数据库:

    create database db_name  (db -name指的是创建的数据库的名字)

       [DEFAULT] CHARACTER SET charset_name  -- CHARACTER SET:指定数据库采用的字符集

       [DEFAULT] COLLATE collation_name  --COLLATE:指定数据库字符集的比较方式(校对规则) 

    凡是用[ ]括起来的可以写也可以不写。

     create database 数据库名  character set utf8:指的是创建含有中文的数据库。create database 数据库名:指的是创建拉丁文的数据库。

     查询当前的数据库:show  create database 数据库名。

     删除数据库语句:drop database 数据库名。

     修改数据库字符集:alter database 数据库名 character set gbk;

gbk与utf-8:

          1. GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准(好像还不是国家标准)。GBK编码专门用来解决中文编码的,是双字节的。不论中英文都是双字节的。 2. UTF-8 编码是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8 节省空间。另外,如果是外国人访问你的GBK网页,需要下载中文语言包支持。访问UTF-8编码的网页则不出现这问题。可以直接访问。 3. GBK包含全部中文字符; UTF-8则包含全世界所有国家需要用到的字符。

表管理:

    查询所有表语句: show tables;

    创建表:首先要 use 数据库名;

        create table 表的名字(

                  指定列名  指定列类型,

                  指定列名   指定列类型,

                  指定列名   指定列类型,

                  );

        数值类型常用的有:int 整数型   float 浮点型 char()固定长度字符串   varchar()  可变长度字符串   date 日期(年月日)  datetime(年月日时分秒)。

        查看表结构:desc 表的名字。

        删除表:drop table 表的名字。

        添加字段:alter table 表的名字 add column 指定列名 指定列类型;

        删除字段:alter table 表的名字 drop column 指定列名;

        修改字段类型:alter table 表的名字  modify  column 指定列名 修改的指定列类型;

        修改字段名称:alter table 表的名字 change column  原先的指定列名  修改的指定列名  指定列类型(也可以是要修改的指定列类型);

        修改表的名称:alter table 原先的表的名字   rename  to  要修改的表的名字。

  增加数据:insert into 表的名字 values();

      插入所有数据,一定要按顺序插入,既不能少也不能多字段值。

      插入部分数据,语法:insert into 表的名字(指定列名1,指定列名2,指定列名3)values(数据1,数据2,数据3)

  修改数据:

      update 表的名字 set 要修改的列名="要修改的内容"  where 指定的作为条件列的名字="内容"。如果要修改多个内容可以,update 表的名字 set 要修改的列名1="要修改的内容1"  ,要修改的列名2="要修改的内容2",要修改的列名3="要修改的内容3"  where 指定的作为条件列的名字="内容"

  删除数据:

      delete  from 表的名字  where 列的名字="列的内容" 这是带条件的删除

      delete from 表的名字 表示的清空表,他所表示的是清空表的内容。而不是删除表,要注意与drop table(删除表)区分开。

      truncate table 表的名字 同样表示清空表。

      delete from 与truncate table 的区别:前者可以带条件删除,只能删除表的内容,不能删除表的约束。同时删除的数据可以回滚事务。(就是说可以进回收站)。后者与之相反。

      

原文地址:https://www.cnblogs.com/maxuefeng/p/13631319.html