1. 程式人生 > 遊戲 >類魂新遊《上古之魂》開發者感言 更受到《劍風傳奇》影響

類魂新遊《上古之魂》開發者感言 更受到《劍風傳奇》影響

資料庫簡介

理解

  • 用於持久化儲存資料的管理軟體

  • 儲存資料技術

    • 1、將資料儲存到記憶體中:變數、物件、陣列、集合
      特點:易失性
    • 2、持久化儲存技術:IO
      特點:可操作性比較差,效率低
    • 資料庫:是一個儲存資料的倉庫本質上是一個檔案系統、可以通過結構化查詢語言簡稱sql對裡面的資料進行CRUD(增刪改查)

特點

  • 可以持久化儲存資料
  • 儲存資料是有組織、有結構
  • 以表的形式儲存資料 方便操作
  • 提供豐富的sql語句 操作資料

資料庫分類

  • 關係型資料庫

    • Orcale、MySQL、SQLServer、DB2...

    • 儲存資料是以行和列的形式儲存、這一系統的行與列構成了表、若干張表構成庫。資料與資料之間有關聯關係

    • 特徵

      • java類名對應資料庫的表名
      • java類中的屬性對應資料庫表中欄位
      • java類中的屬性的型別對應資料庫中表中欄位型別
      • java類中建立一個物件對應資料庫中表中一條資料
  • 非關係型資料庫

    • redis、MongDB、HBase...

    • 應用場景

      • 資料要被查詢
      • 資料不易修改
    • 資料是列、圖片、文件、字串..等形式進行儲存、資料與資料之間沒有任何關係

  • 區別

    • 關係型資料庫將資料儲存在硬碟、非關係型資料庫儲存記憶體中
    • 非關係檢索效率要遠遠高於關係型資料庫

資料庫系統結構

  • DB:資料庫,儲存資料的容器
  • DBMS: 資料庫管理系統,又稱為資料庫軟體或資料庫產品,用於建立或管理DB
  • SQL:結構化查詢語言,用於和資料庫通訊的語言,不是某個資料庫軟體特有的,資料庫通用語言

SQL基本分類

結構化查詢語言是一門特殊的程式語言

主要用途:用於對資料庫中資料增刪改查

DDL

  • 資料定義語言:對資料庫的建立和刪除 以及對資料庫表的建立刪除和修改

  • 關鍵字

    • create、drop、alter

DML

  • 資料庫查詢語言:對資料庫表中資料 增、刪、改、查

  • 關鍵字

    • insert、delete、update

DQL

  • 資料查詢語言:對資料庫表中資料查詢

  • 關鍵字

    • select

DCL

  • 資料控制語言:指定使用者 分配許可權

  • 關鍵字

    • grant、reoke

資料型別

整型

  • tinyint/smallint/int/bigint

浮點型

  • float(n,m)/double(n,m)/decimal(n,m) 準確值 n和m可以省略
  • n:整數位+小數位的個數
  • m:小數位的個數

字元型

  • varchar(n) 變長字串 n必選 儲存字串最大個數 效能低
  • char(n) 定義字串 n可選 預設為1 儲存字元最大個數 效能高

日期

  • date 日期 年月日

  • time 時分秒

  • datetime 日期 年月日時分秒

  • timestamp 時間戳 1970年開始 2037年12月31日 23:59:59

  • datetime和timesstamp區別

    • datetime最大表示日期是9999年12月31日 23:59:59、timestamp最大表示日期是 2037年12月31日 23:59:59
    • datetime預設是null、而timestamp預設值是當前日期

注意

  • mysql中沒有boolean型別、通常我們會使用int型別來表示boolean型別 0:false 1:true

DDL

庫的管理

  • 關鍵字

    • create建立 drop刪除 alter修改 show展示 database資料庫
  • 檢視所有的資料庫

    • show databases
  • 建立資料庫

    • 語法一:create database 資料庫名稱;
    • 語法二:create database if not exists 資料庫名稱;
  • 刪除資料庫

    • 語法一:drop database 資料庫名稱
    • 語法二:drop database if exists 資料庫名稱;
  • 使用庫

    • use 資料庫名稱;
  • 檢視建立資料庫語句

    • show create database 資料庫名稱;

表的管理

  • 關鍵字

    • show 展示 alter 修改 create 建立 table 表 drop 刪除
  • 檢視所有表

    • show tables;
  • 建立表

    • 語法一

      • create table 表名稱(
        欄位名稱 資料型別.
        欄位名稱 資料型別,
        欄位名稱 資料型別
        ...
        );
    • 語法二

      • create table if not exists 表名稱(
        欄位名稱 資料型別.
        欄位名稱 資料型別,
        欄位名稱 資料型別
        ...
        );
  • 刪除表

    • drop table 表名稱;
  • 查看錶結構(查詢表的列數和每列表對應的資料型別)

    • desc 表名稱;
  • 檢視建立表語句

    • show create table 表名稱;

表的修改

  • 修改表名

    • alter table 表名稱 rename 新名稱;
  • 修改列名

    • alter table 表名稱 change 原列名 新列名 資料型別;
  • 修改列型別

    • 方式一

      • alter table 表名稱 modify 列名稱 新型別;
    • 方式二

      • alter table 表名稱 change 原列名 新列名 資料型別;
  • 新增列

    • alter table 表名 add 列名 資料型別;
  • 刪除列

    • alter table 表名 drop 列名;

DML

關鍵字

  • 增insert 刪delete 改update

插入

  • 不指定欄位插入

    • insert into 表名 values(值1,值2,值3...);

    • 注意

      • 數值直接給值
      • 除數值之外的任意型別都需要加引號
      • 預設給所有的欄位插入值
  • 指定欄位插入

    • insert into 表名 (欄位1,欄位2,欄位3,欄位n) values(值1,值2,值3,值n);
    • 注意:欄位和值必須一一對應
  • 方式三

    • insert into 表名 set 欄位1=值1,欄位2=值2,欄位3=值3,欄位N=值N
  • 批量插入

    • insert into 表名 (欄位1,欄位2,欄位3,欄位n) values(值1,值2,值3,值N),(值1,值2,值3,值n),(值1,值2,值3,值n)

刪除

  • 刪除單個

    • delete from 表名 [where 條件];
  • 刪除所有

    • delete from 表名;
    • truncate table 表名;
  • delete刪除和truncate刪除的區別

    • 方式上:delete會逐行刪除、truncate刪除整張表、重新建立一個一模一樣的表結構
    • 效率上:delete效率低、truncate效率高
    • 回滾上:delete刪除資料可以回滾(找回來)truncate一旦刪除資料將無法回滾
    • 主鍵自增序列上:delete刪除會保留原有自增序列、truncate刪除不會保留

修改

  • 修改單個

    • update 表名 set 欄位1=值1,欄位2=值2,欄位3=值3,欄位N=值N [where 條件]
  • 修改全部

    • update user set password ='456',sex='男';

MySQL常見約束

概述

  • 用於限定當前列中的值 保證資料的準確性和有效性

常見約束

  • not null被約束的列不能為空
  • unique 唯一約束 被約束的列的值不允許重複 null可以有多個
  • primary key 主鍵約束 值不能重複,不能為null
    提高查詢效率(主鍵約束預設回給當前列建立一個索引)一個表通常只有一個主鍵
  • default 預設約束 指定預設值
  • foreign key 外來鍵約束 描述兩個表之間的關係, 從一個表中(從表)某一列的值 來源於另一個表(主表)的主鍵值

除not null和default都支援表級約束

  • 表級約束可以同時約束多列、列級約束只能約束一列

新增約束

  • 方式一:建立表的時候新增約束
    create table person(
    欄位名 欄位型別 約束, #列級約束寫法
    欄位名 欄位型別 約束
    )

  • create table person(
    欄位名 欄位型別 ,
    欄位名 欄位型別 ,
    #表級約束寫法
    約束(約束的欄位)
    )

  • 方式二:給已存在的表上新增約束(注意當前表中資料沒有違反約束行為)
    alter table 表名 modify 欄位名 欄位型別 約束;

  • 新增主鍵自增約束:將主鍵的維護全交給資料進行管理

    • 要求當前列必須設定主鍵
    • 主鍵列必須是int型別
    • 自增量為1
    • create table person(
      欄位名 primary key auto_increment,
      欄位名 欄位型別 約束
      )
  • 萬能公式

    • alter table 表名 modify 欄位名 欄位型別 約束;

刪除約束

  • 刪除列級約束

    • alter table 表名 modify 列名 資料型別
  • 刪除表級約束

    • 主鍵約束2步

      • 1-1 alter table 表名 drop primary key
      • 1-2 alter table 表名 modify 列名 資料型別
    • 刪除唯一約束

      • alter table 表名 drop index 索引名稱