Java EE之旅07-數(shù)據(jù)庫(kù)基礎(chǔ)(1)

數(shù)據(jù)庫(kù)概述

  1. 數(shù)據(jù)庫(kù)(DataBase,簡(jiǎn)稱DB):指長(zhǎng)期保存在計(jì)算機(jī)的存儲(chǔ)設(shè)備上,按照一定規(guī)則組織起來,可以被各種用戶或應(yīng)用共享的數(shù)據(jù)集合。(屬于文件系統(tǒng))

  2. 數(shù)據(jù)庫(kù)管理系統(tǒng)(DataBase Management System,簡(jiǎn)稱DBMS):指一種操作和管理數(shù)據(jù)庫(kù)的大型軟件,用于建立、使用和維護(hù)數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一管理和控制,以保證數(shù)據(jù)庫(kù)的安全性和完整性。用戶通過數(shù)據(jù)庫(kù)管理系統(tǒng)訪問數(shù)據(jù)庫(kù)中的數(shù)據(jù)。

數(shù)據(jù)庫(kù):存儲(chǔ)、維護(hù)和管理數(shù)據(jù)的集合。數(shù)據(jù)庫(kù)軟件應(yīng)該為數(shù)據(jù)庫(kù)管理系統(tǒng),數(shù)據(jù)庫(kù)是通過數(shù)據(jù)庫(kù)管理系統(tǒng)創(chuàng)建和操作的。

其中,DB與DBMS的關(guān)系如下圖所示:

關(guān)系

MySQL的安裝與登錄、圖形化工具

MySQL的安裝與登錄、啟動(dòng)與停止

安裝mysql-5.5.27-winx64.msi,配置重點(diǎn)配置默認(rèn)字符編碼、并發(fā)數(shù)、相關(guān)路徑、勾選添加環(huán)境變量、管理員密碼等,這里不再贅述,安裝過程百度即可。

然后命令行終端最好以管理員身份打開,相關(guān)的登錄、啟動(dòng)與停止MySQL的命令如下:

1. 登錄操作
    mysql -u root -p
    然后輸入管理員密碼就可以登錄了
2.  啟動(dòng)與停止(Windows),注意:也可以通過
    net stop mysql
    net start mysql

有關(guān)MySQL的卸載、修改密碼請(qǐng)自行百度,Windows和Linux上面有所不同,這里不再贅述。

MySQL圖形化工具

Windows平臺(tái)的話推薦使用:SQLyogEnt

SQLyogEnt提供了最基本的數(shù)據(jù)庫(kù)連接、SQL語句智能提示、執(zhí)行,以及各種圖形化功能:

image.png

SQL概述

  1. SQL:Structure Query Language。(結(jié)構(gòu)化查詢語言)
  2. SQL被美國(guó)國(guó)家標(biāo)準(zhǔn)局(ANSI)確定為關(guān)系型數(shù)據(jù)庫(kù)語言的美國(guó)標(biāo)準(zhǔn),后來被國(guó)際化標(biāo)準(zhǔn)組織(ISO)采納為關(guān)系數(shù)據(jù)庫(kù)語言的國(guó)際標(biāo)準(zhǔn)。
    各數(shù)據(jù)庫(kù)廠商都支持ISO的SQL標(biāo)準(zhǔn)。(普通話)
    各數(shù)據(jù)庫(kù)廠商在標(biāo)準(zhǔn)的基礎(chǔ)上做了自己的擴(kuò)展。(方言)

數(shù)據(jù)庫(kù)的存儲(chǔ)

數(shù)據(jù)庫(kù)的存儲(chǔ)方式是邏輯上的二維表:

image.png

一行數(shù)據(jù)剛好可以對(duì)應(yīng)Java的實(shí)體類(Bean):

public class User{
    private int id;
    private String name;
    private int age;
    //...
}

SQL中的數(shù)據(jù)常用類型

常用數(shù)據(jù)類型:

int:整型
double:浮點(diǎn)型,例如double(5,2)表示最多5位,其中必須有2位小數(shù),即最大值為999.99;
char:固定長(zhǎng)度字符串類型; char(10)  'abc       '
varchar:可變長(zhǎng)度字符串類型;varchar(10) 'abc'
text:字符串類型;(比如文章,4M左右大?。?blob:字節(jié)類型;(圖片,視頻、音頻)
date:日期類型,格式為:yyyy-MM-dd;
time:時(shí)間類型,格式為:hh:mm:ss
timestamp:時(shí)間戳類型 yyyy-MM-dd hh:mm:ss  會(huì)自動(dòng)賦值(2023年以后不能用)
datetime:日期時(shí)間類型 yyyy-MM-dd hh:mm:ss
image.png

SQL的分類

  1. DDL(Data Definition Language):數(shù)據(jù)定義語言,用來定義數(shù)據(jù)庫(kù)對(duì)象:庫(kù)、表、列等; CREATE、 ALTER、DROP
  2. DML(Data Manipulation Language):數(shù)據(jù)操作語言,用來定義數(shù)據(jù)庫(kù)記錄(數(shù)據(jù)); INSERT、 UPDATE、 DELETE
  3. DCL(Data Control Language):數(shù)據(jù)控制語言,用來定義訪問權(quán)限和安全級(jí)別;
  4. DQL(Data Query Language):數(shù)據(jù)查詢語言(主要是SELECT),用來查詢記錄(數(shù)據(jù))。
  • 注意:sql語句以;結(jié)尾,sql文件以.sql為后綴。
  • 注意:sql文件中的注釋以“#”開頭
  • 注意:關(guān)鍵字大小寫都可以,筆者個(gè)人喜歡小寫

其中,1、2、4比較重要,分別進(jìn)行介紹,注意,SQL博大精深,幾篇文章不可能完全講完,這里主要是入門,介紹的例子都是一些常用的功能。

DDL-數(shù)據(jù)定義語言

主要關(guān)鍵字:CREATE、 ALTER、 DROP。DDL-數(shù)據(jù)定義語言可以:

  1. 操作數(shù)據(jù)庫(kù)
  2. 操作數(shù)據(jù)表

1.操作數(shù)據(jù)庫(kù)

創(chuàng)建數(shù)據(jù)庫(kù)
    create database mydb1;
    character set:指定字符集編碼
    create database mydb2 character set gbk;
    collate:是指定校對(duì)規(guī)則,在字符串內(nèi)用于比較字符的一套規(guī)則
    create database mydb3 character set gbk collate gbk_chinese_ci;

數(shù)據(jù)庫(kù)查詢操作
    查看當(dāng)前數(shù)據(jù)庫(kù)服務(wù)器中的所有數(shù)據(jù)庫(kù)
    show databases;
    查看前面創(chuàng)建的mydb2數(shù)據(jù)庫(kù)的定義信息
    show  create  database mydb2;

數(shù)據(jù)庫(kù)刪除操作
    刪除前面創(chuàng)建的mydb3數(shù)據(jù)庫(kù)
    Drop database mydb3;

數(shù)據(jù)庫(kù)修改操作
    查看服務(wù)器中的數(shù)據(jù)庫(kù),并把mydb2的字符集修改為utf8;
    alter database mydb1 character set utf8;
    
數(shù)據(jù)庫(kù)的切換操作
    查看當(dāng)前使用的數(shù)據(jù)庫(kù)
    select database();
    切換數(shù)據(jù)庫(kù)
    use mydb1;
    
查看數(shù)據(jù)庫(kù)狀態(tài)(主要是編碼方式),關(guān)于如何修改數(shù)據(jù)庫(kù)的默認(rèn)編碼請(qǐng)自行百度
    status;
    show variables like 'char%';

2.操作數(shù)據(jù)表

表的創(chuàng)建
    語法:
        create table 表名(
                        字段1 字段類型,
                        字段2 字段類型,
                        ...
                        字段n 字段類型
                    );
    # 例子:
        create table mytable1(name varchar,age int);

當(dāng)前數(shù)據(jù)庫(kù)中的所有表
    show tables;
    
查看表的結(jié)構(gòu)(字段信息)
    desc mytable1;
    
修改表結(jié)構(gòu)
    在上表的基礎(chǔ)上增加一個(gè)image列。
    alter table mytable1 add image blob;

修改name列,使其長(zhǎng)度為60。
    alter table mytable1 modify name varchar(60);
    
刪除image列,一次只能刪一列。
    alter table mytable1 drop image;

表名改為user。
    rename table mytable1 to user;

查看表格的創(chuàng)建細(xì)節(jié)
    show create table user;
    
修改表的字符集為gbk
    alter table user character set gbk;
    
列名name修改為username
    alter table user change name username varchar(60);

刪除表
    drop table user;

DML-數(shù)據(jù)操作語言

DML是對(duì)表中的數(shù)據(jù)進(jìn)行增、刪、改的操作。不要與DDL混淆了。

主要關(guān)鍵字有:INSERT 、UPDATE、 DELETE

注意:

  1. 在mysql中,字符串類型和日期類型都要用單引號(hào)括起來。例如:'tom' '2015-09-04'
  2. 空值:null

插入操作:INSERT
    語法: 
        insert into 表名(列名1,列名2 ...)values(列值1,列值2...);
    注意:
        列名與列值的類型、個(gè)數(shù)、順序要一一對(duì)應(yīng)。
        可以把列名當(dāng)做java中的形參,把列值當(dāng)做實(shí)參來理解。
        值不要超出列定義的長(zhǎng)度。
        如果插入空值,請(qǐng)使用null。
        插入的日期和字符一樣,都使用引號(hào)括起來。
    例子:
        單個(gè)插入:
            insert into user(name,age) values ('li',20);
            可以省略形式參數(shù):
            insert into user values ('zhang',20);
            查詢是否插入成功
            select * from user;
        批量插入:
            insert into user values
                ('li',20),
                ('zhang',20),
                ('huang',20);

修改操作:UPDATE
    語法:update 表名 set 列名1=列值1,列名2=列值2 。。。 where 列名=值
    例子:
        將所有人的age設(shè)置為30(可以同時(shí)修改多個(gè)值,用“,”隔開)
        update user set age=30; 
        
        將name為zhang的age修改為25
        update user set age=25 where name='zhang';
        update user set age=age+5 where name='zhang';
        
刪除操作:DELETE
    語法:
        DELETE FROM 表名 [WHERE 列名=值]
    注意:
        DELETE刪除:表中的數(shù)據(jù),表結(jié)構(gòu)還在;刪除后的數(shù)據(jù)可以找回(與日志配合使用,能夠找回)
        TRUNCATE(縮短、截?cái)啵﹦h除:是把表直接DROP掉,然后再創(chuàng)建一個(gè)同樣的新表。
        比較:刪除的數(shù)據(jù)不能找回。執(zhí)行速度比DELETE快,通常用DELETE。
    例子:
        刪除表中name為'zhang'的記錄
        delete from user where name='zhang';
        刪除表中所有記錄
        delete from user;
        使用truncate刪除表中記錄
        truncate table user;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容