zoukankan      html  css  js  c++  java
  • 【1】基本操作

    一、引言

    生活中处处是数据,各种各样的数据,怎样存储且利用这些巨额数据?

    你看,你工作中那么多的文件,那么长的表格,那么多的数据,你处理起来都快要疯了!

    如何持久化存储数据?如何让读/写更便捷?如何让数据更有效?

    所以才要来学习嘛!

    数据库:存储数据的仓库,并且具有一定的规则,这样也好存好拿好取,方便。

    他们都说关系型数据库与非关系型数据库,这首先是对其的一个分类,得先从关系型数据库(基于E-R模型)学起!(E表示实体,R表示关系)

    (1)文档型数据库服务型数据库又是对其另一个分类。所以文档型与服务型有什么区别?


      首先,介绍了一下sqlite:(转自:https://www.cnblogs.com/bwbfight/p/9306293.html

           SQLite是目前最流行的开源嵌入式数据库。

      SQLite的主要特征:

       1. 管理简单,甚至可以认为无需管理。

       2. 操作方便,SQLite生成的数据库文件可以在各个平台无缝移植。

       3. 可以非常方便的以多种形式嵌入到其他应用程序中,如静态库、动态库等。

       4. 易于维护。

      SQLite的主要优势在于灵巧、快速和可靠性高。

           由于SQLite在运行时占用的资源较少,而且无需任何管理开销,因此对于PDA、智能手机等移动设备来说,SQLite的优势毋庸置疑。

      SQLite的一些劣势:

      1. C/S应用: 如果你有多个客户端需要同时访问数据库中的数据,特别是他们之间的数据操作是需要通过网络传输来完成的。在这种情况下,不应该选择SQLite。

      由于SQLite的数据管理机制更多的依赖于OS的文件系统,因此在这种操作下其效率较低。

      2. 数据量较大: 受限于操作系统的文件系统,在处理大数据量时,其效率较低。对于超大数据量的存储,甚至不能提供支持。

           所以,在一些嵌入式应用、单机使用且数据量不大、方便移植且频繁读写文件的情况sqlite比较合适。多用户应用、大面积读写数据情况下就不合适喽。


       其次,是服务型数据库:例如Mysql。数据存储在一个物理文件中,但是需要使用终端以tcp/ip协议连接,进行数据库的读写操作。它为你提供了这种服务而已!

    (2)三范式

      经过研究和对问题的总结,对于设计数据库提出了一些规范,这些规范被称之为范式。

           第一范式:列不可拆分。

      公安局管理系统:姓名=姓(1列)+名(1列)

      学生管理系统:姓名=姓名(共1列)

      你可以把“年月日”统一放在一列中存储,当然也可以“年”“月”“日”分开存储。根据具体应用的不同,有不同的处理方式。但一旦作为一个列,它就不能继续拆分了!

      第二范式:唯一标识。

      每一行都是一个object。至少能做出区分,它是不同于其他实体的。谁都不想和谁一样,是吧?

      第三范式:引用主键。

    (3)关系及存储

      就像映射一样,有以下几种关系:

      1对1:一个对象A对应一个对象B,1个对像B对应一个对象A。一一对应。A和B的关系存到A中也行,存到B中也行。

      1对多:一个班级对应着多个学生,一个学生对应一个班级。这种关系要存在多的那一方(单个学生)中。

      多对多:一个对象N对应多个对象M,一个对象M对应多个对象N。即:一个兴趣班有多个学生,一个学生报了多个兴趣班。关系要存在另一张新建的关系表中。

    二、准备工作

    Mysql是什么?下载Mysql。

    Navicat是什么?下载Navicat。

    sql是什么?

    三、简单操作

    1.使用终端操作数据库

    登录数据库服务器:

    mysql -uroot -p密码

    查询数据库服务器中所有的数据库:

    show databases;

    语句以分号结尾。

    如何选中某一个数据库进行操作:

    use 库名;

    退出数据库服务器:

    exit;

    如何在数据库服务器中创建自己的数据库?

    create database test(库名);
    mysql> use test;
    Database changed

    如何查看某个数据库中所有的数据表?

    mysql> show tables;
    Empty set (0.00 sec)

    如何创建一个数据表?

    mysql> create table pet(
        -> name VARCHAR(20),
        -> owner VARCHAR(20),
        -> species VARCHAR(20),
        -> sex CHAR(1),
        -> birth DATE,
        -> death DATE);

    查看数据表是否创建成功:

    mysql> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | pet            |
    +----------------+
    1 row in set (0.00 sec)

    查看表结构:

    mysql> desc pet;
    +---------+-------------+------+-----+---------+-------+
    | Field   | Type        | Null | Key | Default | Extra |
    +---------+-------------+------+-----+---------+-------+
    | name    | varchar(20) | YES  |     | NULL    |       |
    | owner   | varchar(20) | YES  |     | NULL    |       |
    | species | varchar(20) | YES  |     | NULL    |       |
    | sex     | char(1)     | YES  |     | NULL    |       |
    | birth   | date        | YES  |     | NULL    |       |
    | death   | date        | YES  |     | NULL    |       |
    +---------+-------------+------+-----+---------+-------+
    6 rows in set (0.03 sec)

    查看数据表中的记录:

    mysql> select * from pet;
    Empty set (0.00 sec)

    如何向数据表中添加数据记录?

    mysql> INSERT INTO pet
        -> VALUES('Puffball','Diane','hamster','f','2000-09-22',NULL);

    查询:

    mysql> SELECT * FROM pet;
    +----------+-------+---------+------+------------+-------+
    | name     | owner | species | sex  | birth      | death |
    +----------+-------+---------+------+------------+-------+
    | Puffball | Diane | hamster | f    | 2000-09-22 | NULL  |
    +----------+-------+---------+------+------------+-------+
    1 row in set (0.00 sec)
    mysql> INSERT INTO pet
        -> VALUES('WangCai','ZhouXingChi','DOG','M','1999-09-21',NULL);
    Query OK, 1 row affected (0.08 sec)
    
    mysql> SELECT * FROM pet;
    +----------+-------------+---------+------+------------+-------+
    | name     | owner       | species | sex  | birth      | death |
    +----------+-------------+---------+------+------------+-------+
    | Puffball | Diane       | hamster | f    | 2000-09-22 | NULL  |
    | WangCai  | ZhouXingChi | DOG     | M    | 1999-09-21 | NULL  |
    +----------+-------------+---------+------+------------+-------+
    2 rows in set (0.00 sec)

    上面会看到数据类型有字符型的,还有DATE类型的,那么在mysql中常用的数据类型还有哪些?

    百度告诉你:MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。(哇塞,像字典、列表、元组这些它都没有耶!

    详情可见:https://www.runoob.com/mysql/mysql-data-types.html

    mysql> create table testType(
        -> number TINYINT);
    mysql> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | pet            |
    | testtype       |
    +----------------+
    mysql> desc testType;
    +--------+------------+------+-----+---------+-------+
    | Field  | Type       | Null | Key | Default | Extra |
    +--------+------------+------+-----+---------+-------+
    | number | tinyint(4) | YES  |     | NULL    |       |
    +--------+------------+------+-----+---------+-------+
    mysql> INSERT INTO testType VALUES(127);
    mysql> select * from testType;
    +--------+
    | number |
    +--------+
    |    127 |
    +--------+
    mysql> INSERT INTO testType VALUES(128);
    ERROR 1264 (22003): Out of range value for column 'number' at row 1

    总之,日期按照格式选择,数值、字符串按大小选择。

    继续向表pet中添加一些数据之后:

    mysql> select * from pet;
    +----------+-------------+---------+------+------------+------------+
    | name     | owner       | species | sex  | birth      | death      |
    +----------+-------------+---------+------+------------+------------+
    | Puffball | Diane       | hamster | f    | 2000-09-22 | NULL       |
    | WangCai  | ZhouXingChi | DOG     | M    | 1999-09-21 | NULL       |
    | DNN      | Huimin      | Cat     | f    | 2018-07-07 | NULL       |
    | Fluffy   | Harold      | cat     | f    | 1993-02-04 | NULL       |
    | Claws    | Gwen        | cat     | m    | 1994-03-17 | NULL       |
    | Buffy    | Harold      | dog     | f    | 1989-05-13 | NULL       |
    | Fang     | Benny       | dog     | m    | 1909-08-27 | NULL       |
    | Bowser   | Diane       | dog     | m    | 1979-08-31 | 1995-07-29 |
    | Chirpy   | Gwen        | bird    | f    | 1989-09-01 | NULL       |
    | Whistler | Gwen        | bird    | NULL | 1996-04-21 | NULL       |
    | Slim     | Benny       | snake   | m    | 2006-04-21 | NULL       |
    | Puffball | Diane       | hamster | f    | 2009-10-12 | NULL       |
    +----------+-------------+---------+------+------------+------------+

    如何删除表中数据:

    mysql> delete from pet where name='Fluffy';

    如何修改表中数据:

    mysql> update pet set name='Cuihua' where owner='ZhouXingChi';

    总结:数据记录常见操作?

    增加:INSERT

    删除:DELETE

    修改:UPDATE

    查询:SELECT

    2.使用可视化工具操作数据库

    3.在编程语言中操作数据库

  • 相关阅读:
    sql server报【将截断字符串或二进制数据】错误
    消息队列的一些知识
    excel中添加下拉候选
    君生我未生,我生君已老
    分库分表的几个面试题
    sql server判断表存在
    vue定义data的三种方式与区别
    sql server多表关联update
    使用CodeMirror在浏览器中实现编辑器的代码高亮效果
    Jquery easyui Tree的简单使用
  • 原文地址:https://www.cnblogs.com/direwolf22/p/11816980.html
Copyright © 2011-2022 走看看