數論大合集(柿子版)
什麼是資料庫?
概念: 長期存放在計算機內,有組織,可共享的大量資料的集合,是一個數據“倉庫”
作用: 儲存,並能安全管理資料,減少冗餘
資料庫分為:關係型資料(SQL)和非關係型資料(NOSQL)
關係型資料庫:MySQL,Oracle,SQL Server,SQLite,DB2...
關係型資料庫通過外來鍵關聯來建立表與表之間的關係
非關係型資料庫:Redis,MongoDB
非關係型資料通常指資料以物件的形式儲存在資料庫中,而物件之間的關係通過每個物件自身的屬性來決定
什麼是DBMS?
資料庫管理系統(DataBase Management System)
MySQL
概念: 是現在流行的開源的,免費的關係型資料庫
歷史: 有瑞典MySQL AB公司開發,目前屬於Oracle旗下產品
特點:
-
免費,開源資料庫
-
小巧,功能齊全
-
使用健康
-
可執行與windows或linux作業系統
-
可適用於中小型甚至大型網站應用
基本的資料庫操作命令
update user set password=password('123456')where user='root';//修改密碼
flush privileges;//重新整理資料庫
show databases;//顯示所有資料庫
use dbname;//開啟某個資料庫
show tables;//顯示資料庫mysql中所有的表
describe user;//顯示錶mysql資料庫中user表的列資訊
create datebase name;//建立資料庫
use databasename;//選擇資料庫
資料庫操作
建立資料庫:create database [in not exists] 資料庫名;
刪除資料庫:drop database [if not exists] 資料庫名;
檢視資料庫:show databases;
使用資料庫:use 資料庫名;
create table [if not exists] `表明`(
'欄位名1' 列型別 [屬性][索引][註釋],
'欄位名2' 列型別 [屬性][索引][註釋],
....
'欄位名n' 列型別 [屬性][索引][註釋]
)[表型別][表字符集][註釋];
資料值和列型別
型別 | 說明 | 儲存需求 |
---|---|---|
tinyint |
非常小的資料 | 1位元組 |
smallint | 較小的資料 | 2位元組 |
mediumint | 中等大小的資料 | 3位元組 |
int | 標準整數 | 4位元組 |
bigint | 較大的整數 | 8位元組 |
float | 單精度浮點數 | 4位元組 |
double | 雙精度浮點數 | 8位元組 |
decimal | 字串形式的浮點數 | 9位元組 |
字串型別
型別 | 說明 | 最大長度 |
---|---|---|
char[(M)] | 固定長字串,檢索快但費空間,0 <= M <= 255 | M字元 |
varchar[(M)] | 可變字串 0 <= M <= 65535 | 變長度 |
tinytext | 微型文字串 | 2^8-1位元組 |
text | 文字串 | 2^16-1位元組 |
日期和時間型數值型別
型別 | 說明 | 取值範圍 |
---|---|---|
DATE | YYYY-MM-DD,日期格式 | 1000-01-01~9999-12-31 |
TIME | Hh:mm:ss,時間格式 | -838:59:59~838:59:59 |
DATETIME | YY-MM-DD hh:mm:ss | 1000-01-01 00:00:00~9999-12-31 23:59:59 |
TIMESTAMP | YYYYMMDDhhmmss格式表示的時間戳 | 197010101000000~2037年的某個時刻 |
YEAR | YYYY格式的年份值 | 1901~2155 |
資料欄位屬性
-
UnSigned
無符號的,宣告該資料列允許負數
-
ZEROFILL
0填充的,不足位數的用0來填充,如int(3),5則為005
-
Auto_InCrement
自動增長的,每新增一條資料,自動在上一個記錄數上加1(預設),通常用於設定主鍵,且為整數型別,可定義起始值和步長
-
NULL 和 NOT NULL
預設的,用於設定預設值
資料表的型別
create table 表名(
--Mysql註釋
--1.#單行叔叔
--2./*...*/多行註釋
)engine = myisam(or innodb)
MySQL的資料表的型別:MyISAM,InnoDByISAM,BOB,CSV
MyISAM 與 InnoDB
名稱 | MyISAM | InnoDB |
---|---|---|
事務處理 | 不支援 | 支援 |
資料行鎖定 | 不支援 | 支援 |
外來鍵約束 | 不支援 | 支援 |
全文索引 | 支援 | 不支援 |
表空間大小 | 較小 | 較大,約2倍 |
MyISAM:適用於節約空間及相應速度
InnoDB:適用於安全性,事務處理及多使用者操作資料表
資料表的儲存位置
MySQL資料表以檔案方式存放在磁碟中,包括表文件,資料檔案,以及資料庫的選項檔案。
位置:MySQL安裝目錄\data\下存放資料表,目錄名對應資料庫名
注意:
-
*.frm -- 表結構定義檔案
-
*.MYD--資料檔案(data)
-
*.MYI--索引檔案(index)
設定資料表字符串:CREATE TABLE 表名()CHARSET = utf8;
修改資料
修改表(ALTER TABLE)
修改表名:ALTER TABLE 舊錶名 RENAME AS 新表名
新增欄位:ALTER TABLE 表名 ADD欄位名 列屬性[屬性]
修改欄位:
ALTER TABLE 表名 MODIFY 欄位名 列型別[屬性]
ALTER TABLE 表名 CHANGE 舊欄位名 新欄位名 列屬性[屬性]
刪除欄位:ALTER TABLE 表名 DROP 欄位名
刪除資料表:DROP TABLE [IF EXISTS] 表名
IF EXISTS為可選,判斷是否存在該資料庫
刪除不存在的資料表會丟擲錯誤
其他
反引號(`)為識別符號
註釋:
1.單行註釋 #註釋內容
2.多行註釋 /*註釋內容*/
模式萬用字元:
_ 任意單個字元
% 任意多個字元,甚至包括零字元
單引號需要進行轉義 \'
清除已有語句:\c