1. 程式人生 > 遊戲 >《刺客信條:英靈殿》發現之旅:維京時代10月19日上線

《刺客信條:英靈殿》發現之旅:維京時代10月19日上線

1、Mysql概念

資料庫:database :db
       儲存資料的檔案系統
       按指定的資料結構把資料持久化儲存到硬碟:按制定方式對資料進行增刪改查:create delete update read:crud
資料庫管理員:database Administrator    :dba
       對資料庫進行維護管
資料庫管理系統:database manager system  :dbms
       對資料庫進行管理和維護的軟體
關係型資料庫: relational  database manager system  :rdbms 
       以二維表(行和列)的模式來儲存資料       

2、資料庫模式

  • 網狀模型 :資料與資料之間有比較複雜的關係
每一個數據用一個節點表示,每個節點與其他節點都有聯絡,這樣資料庫中的所有資料節點就構成了一個複雜的網路。
缺點:查詢和刪除比較麻煩:使用場景比較單一
  • 層次模型:資料之間有嚴格上下級關係
以樹形結構來組織資料
缺點:不能適用於所有場景
  • 關係型資料庫:以二維表的格式描述資料
行:一條記錄:對應的是java的物件
列:一個欄位:對應的是java的屬性

3、常見的dbms軟體

  • rdbms
Oracle:甲骨文公司:(java)
Mysql:甲骨文公司:
sql server:Microsoft微軟:
Access:Microsoft微軟:
IB2: IBM 
sybase:賽貝斯
  • nosql:非關係型資料庫
redis:鍵值對模型
mangodb:文件模型(bson)
hbase:列簇模型
Neo4J:圖形模型
  • dbms的作用
資料定義功能可定義資料庫中的資料物件。
資料操縱功能可對資料庫表進行基本操作,如插入、刪除、修改、查詢。
資料的完整性檢查功能保證使用者輸入的資料應滿足相應的約束條件。
資料庫的安全保護功能保證只有賦予許可權的使用者才能訪問資料庫中的資料。
資料庫的併發控制功能使多個應用程式可在同一時刻併發地訪問資料庫的資料。
資料庫系統的故障恢復功能使資料庫執行出現故障時進行資料庫恢復,以保證資料庫可靠執行。
資料定義:定義表結構(列名+列型別)
資料操作:crud
資料約束:對資料的完整性進行檢查
許可權控制:對資料庫使用者的資料訪問和使用許可權進行控制
併發控制:資料庫建立多個連線/資料事務控制
資料恢復:資料庫故障時資料庫資料的恢復

4、安裝mysql

4.1、檢視是否已經安裝了mysql

4.2、安裝mysql

  • 選擇標準安裝

  • 記錄安裝位置

  • 詳細安裝
  • 開發者
  • 多功能
  • 連線數
  • 編碼集:utf-8

  • 服務名稱

  • 密碼
  • 等待安裝
  • 配置環境變數
  • 檢視服務

  • 測試

啟動命令列:windows+r
輸入:mysql -uroot -p
任何輸入:密碼(root)

4.3、解除安裝mysql

  • 關閉服務
  • 解除安裝軟體
  • 刪除安裝資料夾

  • 刪除資料資料夾

  • 開啟登錄檔

  • 刪除註冊項

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\EventLog\Application\MySQL
  • 重啟電腦

4.4、啟動客戶端

  • 通過dos命令列啟動
  • mysql自帶客戶端
  • sqlyog

4.5、sqlyog的使用

  • 修改字型大小

5、rdbms的資料結構

資料庫:database:一個數據庫軟體可以有多個database
       一般:一個專案對應一個數據庫
表:table:一個二維表
        表:由表結構+表記錄
        表結構:列名+列型別
        表記錄:行資料
        資料庫中的表 在java中對應的是類
記錄:行資料:每行記錄的資料個數 取決於表結構
        表記錄:在java中對應的是物件
欄位:列        

6、sql

sql:Structured Query Language:結構化查詢語言
     RDBMS資料庫的通用語言:
     客戶/程式通過給資料庫軟體傳送sql語句 來對資料庫解析crud
sql按是否標準分類:
     sql標準:所有的rdbms都識別的語句
     sql方言:只適用於當前rdbms
sql按作用分類:
     ddl:data defined language: 資料定義:對錶和表結構的增刪改查
            關鍵字:create drop show
     dql:data query language: 資料查詢:對錶記錄的查詢
            關鍵字:select
     dml:data manipulation  language:資料操作:對錶記錄的增刪改
            關鍵字:delete  update insert
     dcl:data control language :許可權控制:對資料庫使用者的許可權控制
            關鍵字:grant  revoke
     tcl:transaction control language:事務控制:
            關鍵字:commit rollback

7、語法

1: 語句結束--分號
2: 關鍵字不區分大小寫--建議大寫
3:mysql中雙引號和單引號都表示字串
4:mysql中註釋:和java塊註釋一樣
建議:通過換行和縮排 對sql語句格式化

8、資料型別

  • 整數型別
1:int  :4B
2:integer:4B
3:tinyint:1B
4: bigint: 8B
位元組、字、位、位元,這四者之間的關係是:
1位=1位元
1字=2位元組
1位元組=8位
1字=16位
  • 字串
1:char: 固定長度 char(n) n表示字元個數
        資料不夠n個字元用空格字元填充
2:varchar:可變長度 varchar(n) n表示字元最大個數  
3: text: 64kb
4: longtext: 4GB
  • 位元組型
1:binary:255B
2:blob:64kB
  • 浮點型別
1:float:小數點後有效位數:6-8
         float(n,m) m是小數位數 n-m為整數位數
2:double:小數點後有效位數:12
         double(n,m) m是小數位數 n-m為整數位數 
3: decimal:用法和float和double相同  專用於表示錢相關的數字         
  • 布林型別
1 boolean:
2 bool
  • 日期型別
date:yyyy-MM-dd
time:HH:mm:ss
datetime:yyyy-MM-dd HH:mm:ss
timestamp:時間戳(毫秒值)

9、DDL:資料定義:對錶結構的增刪改查

--與database相關的資料定義:ddl
show databases;/*顯示所有的資料庫*/
create database db_java37 charset='utf8'; /*建立資料庫並指定編碼集*/
use db_java37;/*使用資料庫*/
show variables like "%char%";/*顯示資料庫相關的編碼集合*/
drop database db_java37;/*刪除資料庫*/
show tables;/*顯示資料庫下有哪些表*/

--與table相關的資料定義:ddl
create table tab_1(
    id int,
    age int
);/*建立表*/
drop table tab_1;
create table tab_1(
    tid int comment "編號", 
    tname varchar(4) comment "名字", 
    tsex char(1) comment "性別", 
    tage tinyint comment "年齡", 
    tshow text comment "自我介紹", 
    tdy  boolean comment "是否黨員", 
    tmoney decimal comment "錢:decimal", 
    theight float(4,1) comment "身高:單位釐米 可以取到毫米", 
    tbirthday date comment "生日:沒有時分秒", 
    tin  datetime comment "註冊時間:精確到秒",
    tphoto longblob comment "照片" 
);
/*
注意事項:
 1 列格式: 列名 列型別 約束
 2 列結束:,
 3 最後一列不加,
*/
SHOW TABLES;/*顯示當前資料庫的所有表*/
desc tab_1;/*查詢表結構*/
DESC tab_37;/*查詢表結構*/ 
show create table tab_1;/*顯示建立表的結構語句*/
/*對錶結構的增刪改統一字首:alter table 表名*/
alter table tab_1 rename to tab_37;/*修改表名*/
alter table tab_37 add taddress varchar(100) comment "地址";/*新增列*/
ALTER TABLE tab_37 drop taddress;/*刪除列*/
ALTER TABLE tab_37 change tin tcomein datetime;/*修改列名*/
ALTER TABLE tab_37 change tcomein tcomein time;/*修改列型別*/
ALTER TABLE tab_37 modify tcomein datetime;/*修改列型別*/

10、dml:資料操作:對錶記錄的增刪改

  • 準備工作
--dml:對錶記錄的增刪改
CREATE TABLE IF NOT EXISTS tab_1(
    tname VARCHAR(4) COMMENT "名字", 
    tsex CHAR(1) COMMENT "性別", 
    tage TINYINT COMMENT "年齡",  
    tdy  BOOLEAN COMMENT "是否黨員", 
    tmoney DECIMAL COMMENT "錢:decimal", 
    theight FLOAT(4,1) COMMENT "身高:單位釐米 可以取到毫米", 
    tbirthday DATE COMMENT "生日:沒有時分秒", 
    tin  DATETIME COMMENT "註冊時間:精確到秒",
    tphoto LONGBLOB COMMENT "照片" 
);
  • 插入資料
ALTER TABLE tab_1 MODIFY tmoney DECIMAL(6,2);
INSERT INTO tab_1 VALUES("韓梅梅","女",18,TRUE,19.1,165.1,
"1990-11-12","1990-11-12 13:14:15",NULL);/*插入記錄*/
INSERT INTO tab_1 VALUES("韓雪","女",38,TRUE,19.1,166.1,
"1970-11-12","1991-11-12 13:14:15",
LOAD_FILE("C:/Users/Administrator/Desktop/imgs/1.jpg"));/*插入記錄*/


--mysql支援一次插入多條記錄
INSERT INTO tab_1 VALUES("韓紅","女",32,TRUE,19.1,166.1,
"1970-11-12","1991-11-12 13:14:15",
LOAD_FILE("C:/Users/Administrator/Desktop/imgs/1.jpg")),
("韓庚","男",28,TRUE,19.1,166.1,
"1970-11-12","1991-11-12 13:14:15",
LOAD_FILE("C:/Users/Administrator/Desktop/imgs/1.jpg"));

--插入指定列:未指定的列值為NULL
INSERT INTO tab_1(tname,tsex,tbirthday,tphoto) 
        VALUES("韓紅","女","1970-11-12",
LOAD_FILE("C:/Users/Administrator/Desktop/imgs/1.jpg"));

  • 查詢記錄
SELECT * FROM tab_1;/*查詢所有記錄的所有列*/
  • 刪除記錄
DELETE FROM tab_1;/*刪除所有記錄*/
TRUNCATE  tab_1;/*刪除所有記錄*/
/*
delete和truncate的區別
相同:都可以用於刪除整個表記錄
不同之處:1 DELETE後面可以加where條件實現刪除指定記錄
            TRUNCATE只能刪除所有記錄
          2 DELETE是dml語句:可以加事務 實現回滾
            TRUNCATE是ddl語句:不能加事務 不能回滾
          3 DELETE是逐行刪除
            TRUNCATE直接刪除表的資料檔案        
*/
DELETE FROM tab_1 WHERE tsex="女";/*刪除滿足條件的記錄*/
DELETE FROM tab_1 WHERE tage>11;
DELETE FROM tab_1 WHERE tage<=11;
DELETE FROM tab_1 WHERE tage>11 AND tsex='女';/*兩個條件都必須滿足*/
DELETE FROM tab_1 WHERE tage>11 OR tsex='女';/*成立一個條件即可*/
  • 修改記錄
UPDATE  tab_1 SET tsex='妖'; /*修改所有行的tsex列的值*/
UPDATE  tab_1 SET tsex='女' WHERE tage>10;/*修改所有滿足條件行的tsex列的值*/
UPDATE  tab_1 SET tsex='妖',tname="無名氏",tage=tage+1;/*修改多列*/

SELECT * FROM tab_1;
CREATE DATABASE db_java37_2 CHARSET='utf8';

11、函式

11.1、數學函式

/*求絕對值:abs(n)*/
SELECT ABS(-1),ABS(11.1);
/*近似值:*/
SELECT FLOOR(11.4),FLOOR(11.5),FLOOR(11.6),FLOOR(12.5),FLOOR(12.6),FLOOR(12.4);
SELECT CEIL(11.4),CEIL(11.5),CEIL(11.6),CEIL(12.5),CEIL(12.6),CEIL(12.4);
SELECT ROUND(11.4),ROUND(11.5),ROUND(11.6),ROUND(12.5),ROUND(12.6),ROUND(12.4);
SELECT ROUND(11.4789,2),ROUND(11.4789,1),ROUND(11.4789,3);/*四捨五入保留指定位小數*/
SELECT TRUNCATE(11.4789,2),TRUNCATE(11.4789,1),TRUNCATE(11.4789,3);/*直接擷取保留指定位小數*/

/*常量*/
SELECT PI();

/*冪運算*/
SELECT SQRT(12),POW(3,2);

/*求餘數:mod(n,m)*/
SELECT 1+1,1-1,1*1,1/2,MOD(4,5);

/*隨機:rand() [0,1)*/
SELECT RAND();

11.2、字串函式

/*LENGTH獲取位元組個數,CHAR_LENGTH獲取字元個數*/
SELECT LENGTH("abcdefghijkh呵呵"),CHAR_LENGTH("abcdefghijk呵呵");
/*字串拼接*/
SELECT CONCAT("1","2"),"1"+"2";
SELECT CONCAT("1","2","a",1);
/*字串轉換:去除空格*/
SELECT CONCAT("--",TRIM("  123  "),"---");
SELECT CONCAT("--",LTRIM("  123  "),"---");
SELECT CONCAT("--",RTRIM("  123  "),"---");
/*字串轉換:大小寫轉換*/
SELECT LCASE("123abcANBC"),UCASE("123abcANBC");
/*字串轉換:反轉*/
SELECT REVERSE("123abcANBC");

/*擷取字串*/
SELECT SUBSTR("abcdefghijk",3);/*下標從1開始:一個引數為起始索引*/
SELECT SUBSTR("abcdefghijk",3,6);/*3為起始索引 6為字串長度*/
SELECT SUBSTRING("abcdefghijk",3,6);
SELECT SUBSTRING("abcdefghijk",3);

11.3、日期 函式

/*獲取當前時間*/
SELECT CURRENT_DATE(),CURDATE(); /*年月日*/
SELECT CURRENT_TIME(),CURTIME();/*時分秒*/
SELECT CURRENT_TIMESTAMP(),LOCALTIME(),NOW(),SYSDATE();/*年月日時分秒*/
/*時間運算*/
SELECT NOW()-1,NOW();/*秒數-1*/
SELECT ADDDATE(NOW(),1),NOW();/*天數+1*/
SELECT DATEDIFF(NOW(),"2021-09-11");/*日期比較 返回的是差的天數*/
/*獲取時間引數*/
SELECT YEAR(NOW()),MONTH(NOW()),DAYOFMONTH(NOW()),DAYOFWEEK(NOW()),
       HOUR(NOW()),MINUTE(NOW()),SECOND(NOW());
SELECT EXTRACT(YEAR FROM NOW()),EXTRACT(MONTH FROM NOW()),
       EXTRACT(DAY FROM NOW()),EXTRACT(HOUR FROM NOW()),
       EXTRACT(MINUTE FROM NOW()),EXTRACT(SECOND FROM NOW()));  

11.4、加密

/*加密函式*/
SELECT MD5("anabc");
SELECT PASSWORD("anabc"); 

/*字串隨機*/ 
SELECT UUID();/*隨機字串32的16進位制*/
SELECT SUBSTR(UUID(),1,4);/*隨機一個4個字元的字串*/

11.5、其他函式

SELECT IF(1>2,"額呵呵","不呵呵");
SELECT *,CASE tsex WHEN '男' THEN '帥哥' WHEN '女' THEN '美女' ELSE '妖精' END 
FROM tab_1;