1 - 數(shù)據(jù)庫的常見概念
數(shù)據(jù):Data
數(shù)據(jù)庫:DataBase(DB) 在硬盤上以文件的形式存在
數(shù)據(jù)管理員:DataBase Administrator(DBA)
-
數(shù)據(jù)庫管理系統(tǒng):DataBase Management System(DBMS)
常見的有:MySQL Oracle DB2 Sybase SqlServer
DBMS負(fù)責(zé)執(zhí)行sql語句 通過執(zhí)行sql語句來操作DB中的數(shù)據(jù)
數(shù)據(jù)庫系統(tǒng):DataBase System(DBS)
MySQL:數(shù)據(jù)庫
2 - SQL語言
1.DQL(數(shù)據(jù)查詢語言):查詢語句 凡是select語句都是DQL
2.DML(數(shù)據(jù)操作語言):insert delete update 對表當(dāng)中的語句進(jìn)行增刪改
3.DDL(數(shù)據(jù)定義語言):creat drop alter 對表結(jié)構(gòu)進(jìn)行增刪改
4.TCL(事務(wù)控制語言):commit 提交事務(wù) rollback回滾事務(wù) (T代表Transation)
5.DCL(數(shù)據(jù)控制語言) :grant 授權(quán) revoke 撤銷權(quán)限等
數(shù)據(jù)庫存在的意義就是為了做持久化存儲
3 - 數(shù)據(jù)庫基本操作
3.1 - 連接數(shù)據(jù)庫
語法:mysql -h 主機名/IP地址 -u 用戶名 -p 密碼 [數(shù)據(jù)庫名]
-- 連接MySQL但是不指定使用的數(shù)據(jù)庫
mysql -u root -p
-- 連接MySQL的同時指定要使用的數(shù)據(jù)庫
mysql -u root -p 數(shù)據(jù)庫名
-- 連接MySQL的時候指定主機名
mysql -h localhost -u root -p
-- 連接MySQL的時候指定IP地址
mysql -h 127.0.0.1 -u root -p
-- 一步完成數(shù)據(jù)庫的連接
mysql -uroot -ptoor
3.2 - mysql基本操作
- 通常情況下命令都需要以分號結(jié)束
- 可以將一條命令在任意一個可以插入空格的位置拆分成多行,當(dāng)遇到分號的時候結(jié)束當(dāng)前的這條命令
- 可以通過
\c
來取消一條命令的執(zhí)行 - 幫助信息查看:
\h
或help
或?
- 查看當(dāng)前數(shù)據(jù)庫服務(wù)器的狀態(tài)
\s
- 將查詢的結(jié)果縱向顯示
\G
- 退出MySQL的方法:
exit
或quit
或\q
- ctrl+C強行終止
3.3 - 常用mysql命令
1.查看有哪些數(shù)據(jù)庫
show databases (這個不是SQL語句 屬于MySQL命令)換成Oracle就不能用了
注意每一個語句后面都要有分號!!L鸸隆I约啤<B尉咕!
2.創(chuàng)建屬于自己的數(shù)據(jù)庫
create database 數(shù)據(jù)庫名(這個不是SQL語句 屬于MySQL命令)
3.使用自己創(chuàng)建的數(shù)據(jù)庫
use ddgenius(這個不是SQL語句 屬于MySQL命令)
4.查看當(dāng)前數(shù)據(jù)庫中有哪些表
show tables;
5.初始化數(shù)據(jù)
mysql > source + 文件路徑(C:\Users\My\Desktop\資料匯總\F.java\java開發(fā)\MySQL數(shù)據(jù)庫\bjpowernode.sql)
可以直接把文件拖過來(太大的命令記事本可能打不開)
6.刪除數(shù)據(jù)庫:drop database bjpowernode
4 - 數(shù)據(jù)表基本操作
4.1 - 介紹
數(shù)據(jù)表就是數(shù)據(jù)庫中最基本的對象(Java 里就是用類對象來表示一個數(shù)據(jù)表的結(jié)構(gòu))單元
每一條數(shù)據(jù)記錄:行
每個字段記錄:列
-
設(shè)計表之前需要根據(jù)數(shù)據(jù)的對應(yīng)實體和屬性找到對應(yīng)的關(guān)系(聯(lián)系) - E-R圖
- 實體:你想針對什么具體的事物來創(chuàng)建一個數(shù)據(jù)表
- 屬性:該事物具備的屬性莹弊,在數(shù)據(jù)表里面用字段來表示
EX:學(xué)生是實體蟋恬,學(xué)號翁潘,姓名,性別歼争,年齡拜马,成績...等等都是學(xué)生這個實體具備的屬性(字段)
數(shù)據(jù)類型:數(shù)據(jù)表中的屬性具備適當(dāng)?shù)臄?shù)據(jù)類型,盡量避免數(shù)據(jù)的冗余(時優(yōu)空優(yōu))
4.2 - 四大數(shù)據(jù)類型
1 - 數(shù)字
類型名 | 空間(字節(jié)) | 描述 |
---|---|---|
tinyint | 1 | 非常小的整數(shù)類型 |
smallint | 2 | 比較小的整數(shù)類型 |
mediumint | 3 | 中等大小的整數(shù)類型 |
int | 4 | 標(biāo)準(zhǔn)的整數(shù)類型 |
bigint | 8 | 大整數(shù)類型 |
float | 4 ~ 8 | 單精度浮點型 |
double | 8 | 雙精度浮點型 |
decimal | 自定義 | 以字符串形式顯示浮點數(shù) |
整型后面的括號:表示的是顯示的位數(shù)沐绒,并不是存儲的位數(shù)俩莽,比如 int(3),表示的是以3個長度來顯示一個整數(shù)乔遮,如果這個數(shù)據(jù)的實際位數(shù)大于了這個括號中的值扮超,則會截取括號中指定的位數(shù)進(jìn)行顯示,超出部分不會顯示在結(jié)果中
浮點型后面的小括號:float(6,2)表示的是以六位的數(shù)字顯示一個數(shù)值,其中小數(shù)點后保留兩位出刷,顯示位數(shù)當(dāng)中小數(shù)點不算作一位璧疗,比如:1234.56 就符合以上的條件(浮點數(shù)中會四舍五入),存儲也按照小括號里面的約束
2 - 字符串類型
類型名 | 空間(字節(jié)) | 描述 |
---|---|---|
char[(M)] | M | 不可變長字符串 |
varchar[(M)] | length + 1 | 可變長字符串 |
tinyblob / tinytext | length + 1 | 小二進(jìn)制和文本串 |
blob / text | length + 2 | 小二進(jìn)制和文本串 |
mediumblob / mediumtext | length + 3 | 中二進(jìn)制和文本串 |
longblob / longtext | length + 4 | 大二進(jìn)制和文本串 |
enum | 1 / 2 | 枚舉 |
set | 1 / 2 / 3 / 4 / 8 | 集合 |
char和varchar怎么選擇馁龟?
在實際的開發(fā)中崩侠,當(dāng)某個字段中的數(shù)據(jù)長度不發(fā)生改變的時候,是定長的坷檩,例如:性別却音、生日等都是采用char。
當(dāng)一個字段的數(shù)據(jù)長度不確定矢炼,例如:簡介僧家、姓名等都是采用varchar。(自動化分配空間裸删,底層有if語句)
3 - 時間和日期
基本不用:時間戳代替
類型名 | 空間(字節(jié)) | 描述 |
---|---|---|
date | 3 | YYYY-MM-DD |
time | 3 | hh:mm:ss |
datetime | 8 | YYYY-MM-DD hh:mm:ss |
timestamp | 4 | YYYYMMDDhhmmss |
year | 1 | YYYY |
4 - NULL值
- NULL 不意味著沒有值也不意味著未知值
- 在 MySQL 中可以檢測到某一條數(shù)據(jù)的某一個字段值是否為 NULL
- 不能對 NULL 進(jìn)行算術(shù)運算,對 NULL 進(jìn)行算術(shù)運算得到的結(jié)果還是 NULL
- 在 MySQL 當(dāng)中 0 和 NULL 都可以作為 false 的另外一種表現(xiàn)形式阵赠,其他的值都是 true
4.3 - 創(chuàng)建數(shù)據(jù)表
create table 表名(
字段名1 數(shù)據(jù)類型,
字段名2 數(shù)據(jù)類型,
字段名3 數(shù)據(jù)類型,
....
);
create table t_student(
no bigint,
name varchar(255),
sex char(1),
classno varchar(255),
birth char(10)
);
varchar是可變長Q乃!必須給長度
可以使用default添加默認(rèn)值
sex char(1) default 1,//默認(rèn)值1
表的復(fù)制
create table 表名 as select語句;
將查詢結(jié)果當(dāng)做表創(chuàng)建出來清蚀。
4.4 - 刪除數(shù)據(jù)表
drop table 數(shù)據(jù)表名
drop table if exists t_student; // 當(dāng)這個表存在的話刪除匕荸。
4.5 - 運算符
- AND 或 && 邏輯與
- OR 或者 || 邏輯或
- NOT 或者 ! 邏輯非
- XOR 或者 ^ 邏輯異或
- = 判斷是否相等枷邪,相等為真
- <=> 是否相等榛搔,相等為真,可用于NULL(不推薦)
- != 或 <> 不等于為真东揣,(<>不推薦)
- < > <= >= 基本的關(guān)系運算符
- is null 空為真
- is not null 非空為真
- between and 從哪兒到哪兒之間
- not between and 不在從哪兒到哪兒之間
- like 匹配字符串践惑,匹配到結(jié)果為真(長得像什么一樣)
- not like 匹配字符串,沒有匹配到為真(張的不想什么一樣)
- in 在集合中匹配嘶卧,匹配到了為真