MySQL資料庫基礎知識

2021-08-10 14:07:00 字數 4162 閱讀 1686

一、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 一條記錄 實體 ...