1. 程式人生 > 其它 >Java資料進階知識(一)資料庫簡介及SQL基礎語法

Java資料進階知識(一)資料庫簡介及SQL基礎語法

Java資料進階知識(一)資料庫簡介及SQL基礎語法

一、資料庫簡介

1.資料庫介紹

資料庫是什麼? 資料庫是一個儲存、管理資料的倉庫

2.資料庫的分類

  • 關係型資料庫
    什麼是關係型資料庫?關係型資料庫不僅僅可以儲存資料,還可以儲存資料與資料之間的關係 比如訂單資料和商品資料。
    常用的關係型資料庫:
    1.Mysql
    2.Oracle
    3.Sqlserver
  • 非關係型資料庫
    什麼是非關係型資料庫? 僅僅用來存放資料,不能儲存資料與資料之間的關係
    常見的非關係型資料庫:
    1.Redis
    2.Memcache
    3.Hbase
    4.MongoDB
    注:非關係型資料的出現是對關係型資料的一個良好的補充,非關係型資料的出現不是為了去取代關係型資料庫,而是作為關係型資料的一個補充。
    意思是有些活 關係型資料並不擅長 就讓非關係型資料去幹
    因為關係型資料庫基本都是吧資料儲存到磁碟上的,那麼就會有訪問資料比較慢的問題,當關系型資料庫遇到資料訪問量比較高的場景是 就會出現一定的侷限性。這時,就可以採用非關係型資料庫,非關係型資料都是把資料儲存到記憶體中,記憶體中的資料訪問是比較快的

二、SQL簡介

SQL:結構化查詢語言。SQL是SQL標準委員會制定的一套操作關係型資料庫的一個標準,和Java一樣,是一門語言。

1.SQL語法

在SQL語法中,SQL是由一個個關鍵字組成的語句,在這語句中嗎,有關鍵字,也有使用者自己定義的庫名、表名、列名(欄位名)、資料。 其中關鍵字是不區分大小寫的。
建議:在sql語句中,都使用小寫(小寫比大寫的可讀性更高)

2.庫的操作

1. 建立:create database dbname(character set utf8 collate utf8_bin 此處為指定資料庫字符集與校對規則)

2. 刪除:drop database dbname

3. 修改:
- SQL標準語法支援修改資料庫的名字
- 修改資料庫字符集與校對規則 alter database dbname character set utf8 collate utf8_bin

4.查詢:
- 查詢所有資料庫 show databases
- 查詢對應庫的建表語句 show create database dbname

3.表的操作

  1. 建立:
create table tableName(
    id int,
    name varchar(20),
    gender char(6),
    birthday date,
    entry_date date,
    job varchar(20),
    salary double(10,2),
    resume text
)character set utf8 collate utf8_bin;

2.刪除:
drop table tableName

3.修改:

  • 修改表名 rename table oldtablename to newtablename
  • 修改表的字符集 alter table tablename character set xxx collate xxxx
  • 修改列
    • 增加列 alter table tablename add columnname int
    • 刪除列 alter table tablename drop columnname
    • 修改列的型別 alter table tablename modify columnname float(4,2)
    • 重新命名列 alter table tablename change oldcolumn newcolumn int

4.查詢:

  • 查詢所有表 show tables
  • 查詢表結構 desc tablename
  • 查詢建表語句 show creata table
  • 注意: 當我們需要使用一些關鍵字來做 表名、列名、資料庫名的時候,需要使用''符號把對應的名字包起來,表示是一個存文字

4.資料的操作

1.增加

  • 插入單行資料 insert into tableName values (xxx,xxxx,xxx)
  • 插入多行資料 insert into tableName values (xxxx,xxxx,xxx),(xxx,xxx,xxx)
  • 插入指定列的資料 insert into tableName (columnName1,columnName2) values (xxx,xxxx)

2.刪除 delete from tableName where xxx=xxx

3.修改 update tableName set columnName = 'xxx' where xx=xx

4.查詢 select * from tableName

5.關鍵字

1.where
where其實就是篩選的意思,可以幫助我們找到符合條件的指定的資料,where後面可以跟各種判別式。
那麼,where是如何查詢的呢?
在不考慮表中索引的情況下,where判別條件會根據表中的一行一行的資料進行查詢,如果當某行符合我們的where判別條件就保留下來,然後查詢下一行,如果不符合就捨棄,直至到最後一行。
2.distinct 過濾掉結果集中相同的兩個資料 (去重)
3.limit 限制結果集 select * from t_students limit 4,2 表示從第四行開啟取 取兩行資料
limit 的作用:可以幫助我們來進行資料的分頁 select * from tableName limit (pageNo-1)*pageSize,pageSize (頁碼:pageNo 頁的大小:pageSize)
4.其他關鍵字

AS :別名
order by :排序
group by:分組
group_concat(xxx) 

5.聚合函式
having:與group by放在一起使用 篩選資料
count:計數
max:最大值
min:最小值
avg:平均值
sum:求和

6.資料庫設計

1.資料庫設計三大正規化

第一正規化

原子性:表中資料都是不可分割的最小單元

第二正規化

一致性:記錄的唯一性,每一條記錄都應該有唯一的標識,比如主鍵。

第三正規化

資料不要冗餘
注:冗餘的資料會使資料的維護成本增加,同時在某些場景中,冗餘的資料可能會方便資料的查詢,假如資料的查詢遠大於增刪改的需求,那麼可以考慮資料的冗餘 否則不應該冗餘。這種冗餘資料的做法叫做“反正規化化設計”

7.多表查詢

連線查詢

  • 交叉連線:cross join 交叉連線其實就是求多個表的笛卡爾積 並沒有實際的作用意義。
  • 內連線 innor join 內連線分為顯示內連線和隱式內連線兩種
  • 外連線 outer join
    • 左外連線 left outer join 在內連線的結果的基礎上,會去和左表做並集,會全部保留左表的資料
    • 右外連線 right outrt join 在內連線的結果的基礎上,會去和右表做並集,會完全保留右表的資料
    • outer 可以省略
      連線查詢最重要的是找到連線條件!

子查詢

子查詢又稱巢狀查詢,是指,一個sql語句的結果可以作為另一個sql語句的條件。

聯合查詢

union / union all 拼接多個sql語句 要求:每個sql語句查詢出的臨時表的 列名與資料型別要一致

菜鳥程式設計師的總結與複習 僅供參考