數據庫是什麼,和數據結構有什麼關係?
數據庫是一個軟件,數據結構是一個學科,數據庫軟件在實現過程中,是非常依賴數據結構的
數據已組織並存儲數據的軟件,一般是存儲在硬盤上,(也有些是存儲在內存中)
數據庫主要可以分爲兩大類:
- 關係型數據庫(MySQL):數據的組織形式使用“表”作爲結構,類似於excel,首先得有一個表頭,表頭中約定了有很多列,以及每一列的類型,插入的數據就是表中的一行,這一行裏的每一個列都需要和表頭結構對應,對於數據的“約束”(對於數據合法性的校驗)比較強、
- 非關係型數據庫:數據的組織形式使用“鍵值對”作爲結構,類似於Map。存儲的時候都是需要指定 key 和 value。
每組數據的 value 中都需要包含哪些字段?沒有明確要求,對於數據中的約束性更低 。
相比於關係型數據庫,犧牲了一部分的功能,但是換來了更高的效率以及更強的水平擴展能力,更適用於分佈式系統中。
SQL是一種編程語言,“結構化的查詢語言”,操作數據庫時主要就是使用 SQL 這種編程語言
進入數據庫:
在CMD中輸入:
mysql -uroot -p
庫操作
1、查看數據庫
MySQL 服務器是一個數據庫軟件,這個軟件運行過程中可以維護多個“邏輯”上的數據庫--->若干個標的集合可以理解爲一個“邏輯”上的數據庫
show databases;
2、創建數據庫
create database XXX;
當我們再次創建名稱爲java_0523 的數據庫時就會報錯
此時我們可以運用如下命令:
create database if not exists java_0523;
此時就命令成功:
3、使用數據庫
use XXX;
當前有多個數據庫,通過“使用”操作,就能選中某個數據庫
cmd 中的複製粘貼:選中內容,enter 複製鼠標右鍵粘貼
4、刪除數據庫
drop database XXX;
先顯示一下全部數據庫:
刪除該數據庫後:
有了數據庫之後,要想真的去存儲組織數據,還需要數據表,創建表的時候就需要指定表結構,
int |
double |
decimal |
varchar |
test |
表操作
1、創建表
create table student( -> id int, -> name varchar(20) -> );
2、查看錶結構
desc XXX;
創建表的時候,如果名稱和關鍵字衝突了可以使用反引號 ``引起來,就可以解決這個問題
3、刪除表操作
drop table [表名];
MySQL 是一種一種客戶端-服務器版本
1、數據庫的地位
對用戶來說:
庫——IDEA的一個工程
表——類
表裏一行——對象
表裏一列——屬性
對文件系統來說(硬盤管理文件):
庫——文件夾
表——一組文件
2、DDL/DML(Insert增/Delete刪/Select查/Update改)
3、SQL語句:
庫:
1、CREATE DATABASE 庫名
2、SHOW DATABASES 查看哪些庫
3、DROP DATABASE 刪除
4、SHOW CREATE DATABASE 庫名 查看建庫語句
5、USE 庫名 設置默認庫
表:
1、CREATE TABLE 表名 (列定義); //建表
2、SHOW TABLES ; //查看哪些表
3、DROP TABLE 表名; //刪表
4、SHOW CREATR TABLE 表名;
DESC 表名 ; //查看錶結構
增刪改查(CRUD)
1、插入數據
insert into [表名] values (內容);
指定列插入
insert into student (id,name) values (2,'蔡');
2、查看數據
select * from [表名];
* 是一個通配符,意思是吧所有列都查找出來
UNIQUE VS PRIMARY KEY
相同點:不允許重複
不同點:UNQUE 可以爲 NULL ,同時 NULL 不視爲重複
PRIMARY 不允許爲空,MySQL實際存儲是,依賴主鍵存儲
表的設計
表的三大範式:
1、表中的每個字段含義是獨立的,不可再分的(業務相關的)
2、字段和完整主鍵有關係
3、字段和主鍵是直接關係