一、database server:資料庫伺服器,專用於儲存網頁中的資料。
(1)關係型資料庫管理系統分為兩部分:
伺服器端:負責永久儲存資料、維護資料,人不能直接**;
伺服器上資料的邏輯結構: server > database > table > row > column
客戶端:用於向伺服器發起「增刪改查」命令,呈現出操作的結果
(2)mysql常用管理命令(在命令列工具中)
show databases;顯示伺服器中當前所有的資料庫名
use 庫名;進入指定的資料庫中
show tables;顯示當前庫中有哪些資料表
desc 表名;描述指定表的結構(有哪些列)
(1)mysql命令大小寫都可以!推薦在編寫關鍵字的時候用大寫字母;非關鍵字可以小寫。
(2)所有命令必須以英文分號結束。
(3)sql語言
結構化查詢語言,專用於操作(增刪改查)資料庫伺服器中的資料。是一門國際標準化語言,被各大資料庫廠家所支援。
常用的sql語句:
#丟棄乙個已有的資料庫(如果存在的話)
drop database if exists 庫名;
#建立新的資料庫,其中儲存的字元使用指定的字符集
create database 庫名 charset=utf8;
#進入指定的資料庫
use 庫名;
#建立儲存特定資料的表
create table 表名 (列名1 型別, 列名2 型別, ...);
(2)常用sql命令
新增資料:
insert into 表名 values (....);
刪除資料:
delete from 表名;#刪除所有記錄行,慎用!
delete from 表名 where 列=值; #刪除滿足條件的行
修改資料:
update 表名 set 列=值, 列=值; #修改所有記錄行,慎用!
update 表名 set 列=值, 列=值 where 列=值;#修改滿足條件的行
查詢資料:
select * from 表名;
(3)mysql中的列型別:
數字型別
tinyint: 佔1個位元組, -128~127
smallint: 佔2個位元組,-32768~32767
int: 佔4個位元組,-2147483648~2147483647
bigint:佔8個位元組,....
----------------------
float(m,d):單精度浮點型,佔4個位元組,m表示總有效位數,d表示小數點後面的有效位數
double(m,d):雙精度浮點型,佔8個位元組
decimal(m,d):嚴格定點數,用於精確運算,如貨幣金額
字串型別
char(m): m不能超過255
varchar(m):m不能超過65535
text(m): m不能超過2^32,即40億個字元
日期時間型別
date: 日期型別,必須用引號括起來,採用'yyyy-mm-dd'格式
time: 時間型別,必須用引號括起來,採用'hh:mi:ss'格式
datetime: 日期時間型別,必須用引號括起來,採用'yyyy-mm-dd hh:mi:ss'格式
布林型別
bool/boolean:只能表示true(等價於1)或false(等價於0)
如何儲存專案中的「日期/時間」資料
方式1:date/datetime,不足:不同國家的人日期格式不同的!'2017-12-31'、'12-31-2017'、'31/12/2017'
方式2:varchar,不足:不方便比較大小 '578'>'2017'
方式3:bigint,表示距離計算機元年經過了多少毫秒 1000 => 1970-1-1 0:0:1
1000*60=> 1970-1-1 0:1:0
1000*60*60=> 1970-1-1 1:0:0
1000*3600*24=> 1970-1-2 0:0:0
1000*3600*24*365=> 1971-1-1 0:0:0
....
計算機元年:1970-1-1 0:0:0
注:char(8)和varchar(8)的區別
user_name char(8):
定長字串,可能產生空間浪費,但讀取速度快
'a' 實際儲存為: 'a\0\0\0\0\0\0\0'
'ab'實際儲存為: 'ab\0\0\0\0\0\0'
'abc'實際儲存為: 'abc\0\0\0\0\0'
'abcd'實際儲存為: 'abcd\0\0\0\0'
'abcde'實際儲存為: 'abcde\0\0\0'
'abcdef'實際儲存為: 'abcdef\0\0'
'abcdefg'實際儲存為: 'abcdefg\0'
'abcdefgh'實際儲存為: 'abcdefgh'
'abcdefghi'實際儲存為: 'abcdefgh'
user_name varchar(8): 變長字串
不定長字串,不會產生空間浪費,但讀取速度稍慢
'a' 實際儲存為: 'a\0'
'ab'實際儲存為: 'ab\0'
'abc'實際儲存為: 'abc\0'
'abcd'實際儲存為: 'abcd\0'
'abcde'實際儲存為: 'abcde\0'
'abcdef'實際儲存為: 'abcdef\0'
'abcdefg'實際儲存為: 'abcdefg\0'
'abcdefgh'實際儲存為: 'abcdefgh'
'abcdefghi'實際儲存為: 'abcdefgh'
(4)列上的約束
主鍵約束( primary key )
語法:列名 型別 primary key
宣告為「主鍵」的列上不能出現null值,且不能重複,如商品編號;
表中所有的記錄行會自動按照主鍵列上的值進行排序 —— 乙個表至多只能宣告乙個主鍵列。
唯一約束( unique )
語法:列名 型別 unique
宣告為「唯一」約束的列上不能出現重複值,但可以出現多個null
非空約束( not null )
語法:列名 型別 not null
宣告為「非空」約束的列上不能出現null,但可以重複
檢查約束 —— mysql不支援
預設值約束( default )
語法:列名 型別 default 值
宣告了預設值的列若未指定值,則使用預設值;若指定的特定的值,則使用指定的值。
外來鍵約束和自增列
主鍵約束和外來鍵約束
主鍵:primary key,唯一且非空約束,是排序依據;
外來鍵:foreign key,可重複可為空,外來鍵列上出現的值必須在另外乙個表的主鍵列上出現過
外來鍵約束的語法: references
列名 型別,
foreign key(列名) references 表名(列名)
mysql資料庫中專有的「自增列」
auto_increment,只有mysql支援,用於實現自增列!
自增列無需手工指定特定的值,只需要賦值為null,mysql伺服器會自動查詢當前已有的最大整數,在此基礎上+1.
語法: create table xx (
主鍵列名 int primary key auto_increment,
...);
資料庫基礎知識 mysql
按照資料結構來組織 儲存和管理資料的倉庫,其本身可看作電子化的檔案櫃,使用者可以對檔案中的資料進行增加 刪除 修改 查詢等操作資料庫 資料庫管理系統 關係型資料庫 mysql oracle oracale mssql access excel,mysofeware db2 ibm sqllite 輕...
Mysql資料庫基礎知識
用於記錄所學資料庫 mysql 的基礎知識。mysql是乙個單程序多執行緒 支援多使用者 基於客戶機 伺服器 client server簡稱c s 的關聯式資料庫管理系統 結構化查詢語言 structured query language db dbs dbms dba db資料庫 dbs資料庫系統...
MySQL資料庫基礎知識
資料庫 database db 長期儲存在計算機的儲存裝置上的檔案 按照一定規則組織起來 被使用者應用的集合 資料庫管理系統 使用和維護資料庫的軟體 保證資料庫的安全性和完整性 使用者通過該系統訪問資料庫中的資料 資料庫中一行記錄與物件之間的關係。列 column 字段 行 row 一條記錄 實體 ...