天天看點

php mysql oracle資料庫表結構,資料庫和資料表

資料庫

一、什麼是資料庫

存儲資料的倉庫

将資料有組織,按照特定的格式存儲在媒體上叫做資料庫

二、比較多個資料庫系統

a)Oracle最好的資料庫沒有之一

b)SQL server  最好的資料庫(windows)

c)MySQL     甲骨文(Oracle) sun開源

三、SQL語言

a)SQL(結構化查詢語句)資料庫管理系統通過sql語句來管理資料庫中的資料

1.資料定義語言(DDL)

用來定義和管理資料對象,包括資料庫、資料表 例如: CREATE、DROP等

2.資料操作語言(DML)

用來操作資料庫對象中的所有資料  例如:INSERT UPDATE DELETE

3.資料查詢語言(DQL)

用來查詢資料對象中的所有資料  例如:SELECT

4.資料控制語言(DCL)

用來管理資料庫的語言,包含賦予權限和更改權限  資料庫更改 等 例如GRANT

四、為什麼我們要學習MySQL

i.MySQL 免費

ii.跨平台

iii.功能強大且友善

五、web開發原理

php mysql oracle資料庫表結構,資料庫和資料表

六、登入和退出mysql伺服器

1.登入: 呼叫windows鍵+r出現運作框

2.出現下面内容

php mysql oracle資料庫表結構,資料庫和資料表

3.在運作框中輸入下面内容

1.mysql -h localhost -uroot -p123456

2.mysql -h localhost -uroot -p(推薦使用這種方式)

password:******

3.使用wamp->mysql->mysql console->輸入密碼回車

4.mysql -h localhost -uroot -p

-h主機名-u使用者名-p密碼

主機名: 就是你要連結資料庫的所在ip localhost是本地主機名  隻能在本地使用

mysql -h 192.168.40.25

使用者名:root 是資料庫最高使用者 超級使用者

密碼: 預設密碼是空

5.如果在運作框輸入找不到檔案那麼請進行下面操作

打開計算機右鍵->找到屬性->找到進階系統設定->環境變量->在上下都找path這個内容->在path内容上填上下面内容->(C:\wamp\bin\mysql\mysql5.7.11\bin)你需要找到你的wamp路徑去複制粘貼上

6.退出

a)exit退出

b)\q 退出

注意:

1.每個sql指令都需要使用分号來完成或者使用\G

2.可以将一行指令拆分為多行

3.可以通過\c 來取消本行指令

4.可以通過exit 或者\q退出

我們可以通過一些快捷進行使用 help

1.将查詢結果立起來: \G

2.取消目前為完成的操作:\c

3.退出目前用戶端:\q

4.顯示目前伺服器狀态:\s

5.顯示幫助資訊:\h

七、檢視資料庫及建立資料庫

i.檢視資料庫

SHOW DATABASES;(推薦使用大寫)

ii.建立資料庫[](中括号代表可寫可不寫不是必須有的内容)

CREATE DATABASE [IF NOT EXISTS] 資料庫名(小寫)

CREATE DATABASE IF NOT EXISTS  ss21  如果建立的資料庫不存在我們則建立資料庫

八、選擇資料庫及檢視資料庫中資料表

i.選擇資料庫

USE 資料庫名

USE ss21;

如果你不使用上面指令 會出現下面錯誤代碼

ERROR 1046 (3D000): No database selected

ii.檢視資料庫中資料表

SHOW TABLES;

九、删除資料庫

DROP DATABASE [IF EXISTS] 資料庫名

例如: DROP DATABASE IF EXISTS ss21;   如果存在我們就删除

注意:

1.MySQL 資料庫中指令不區分大小寫

2.每建立一個資料庫 就會在data目錄下建立一個相應名字的檔案夾

3.在windows下面 資料庫名稱也是不區分大小寫的 但是在linux下資料庫名嚴格區分大小寫

十、建立一個簡單的資料表(了解)

CREATE TABLE IF NOT EXISTS user(

id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(255) NOT NULL UNIQUE,

sex  TINYINT NOT NULL DEFAULT 1,

age  TINYINT NOT NULL DEFAULT 0

)ENGINE = MyISAM DEFAULT CHARSET=utf8;

十一、表中資料簡單管理(增 删 改 查)(重點重點重點)

1.添加資料

INSERT INTO 表名VALUES(值)

INSERT INTO  user VALUES(NULL,’球球’,10,120);

2.查詢資料

SELECT * FROM 表名;

SELECT * FROM user;

3.修改資料

UPDATE 表名SET你要修改的字段名WHERE id=數字

UPDATE  user SET name=’李想’,sex=’0’,age=18 WHERE id=1

4.删除資料

DELETE FROM 表名WHERE id =數字;

DELETE FROM user WHERE id=1

注意:千萬where id 後面要有值 否則就是全部删除

十二、建立普通使用者

GRANT SELECT ON *.* TO‘wenzhuo’@’localhost’IDENTIFIED BY‘123456’

* 代表所有  前面的*代表所有庫  後面的*代表所有表

@ 前面寫的是使用者名 後面寫的是主機名

主機名  隻有本機的時候localhost 如果是别的主機 主機名就是别的主機的ip位址 例如192。168.204.138

重點: GRANT 語句 不僅可以建立使用者 也可以修改使用者密碼  而且還可以設定使用者權限 因為GRANT語句是mysql中非常非常非常重要的語句

十三、檢視所有使用者

SELECT user,host FROM mysql.user;

十四、删除普通使用者

DROP USER 使用者名@主機名;

例如: DROP USER‘jiuqin’@‘localhost’

十五、root使用者修改自己密碼

SET PASSWORD = PASSWORD(‘新密碼’);

注意:新密碼必須使用PASSWORD()加密函數進行加密

十六、root 使用者修改普通使用者密碼

SET PASSWORD FOR‘使用者名’@’主機名’= PASSWORD(‘新密碼’)

SET PASSWORD FOR‘wenzhuo’@‘localhost’=PASSWORD(‘wenzhuo520’)

十七、授權

GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO‘wenshuai’@’localhost’IDENTIFIED BY’wenshuaiaiwenzhuo’

GRANT SELECT,INSERT,UPDATE,DELETE ON ss21.* TO‘wanli’@’localhost’IDENTIFIED BY‘wanli404’

GRANT:被授權的使用者可以将這些權限指派給别的使用者

十八、收回權限及檢視權限

1. 檢視權限

SHOW GRANTS FOR‘使用者名’@’主機名’

2. 收回權限

REVOKE INSERT,UPDATE,DELETE ON ss21.* FROM‘使用者名’@‘主機名’

十九、資料備份

需要在cmd 指令行windows+r在運作框中 輸入cmd

開始->所有程式->附件->指令提示符

mysqldump -u使用者名-p庫名表名>儲存的路徑

例如: mysqldump -uroot -p ss21 > C:\ss21.sql

如果 在備份當中出現拒接通路  說明你的權限不夠

請使用超級管理者權限打開檔案

Can't connect to MySQL server on 'localhost' (10061) 服務沒有啟動

二十、還原資料

首先必須先準備一個空的資料庫  ss21

mysql -u 使用者名-p庫名

mysql -uroot -p ss21 < C:\ss21.sql

重要的事情需要說三遍  别寫分号  别寫分号 别寫分号

資料表類型

一、 建立資料表

CREATE TABLE IF NOT EXISTS user(

id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(255) NOT NULL UNIQUE,

Sex TINYINT  NOT NULL DEFUALT 1,

age TINYINT  NOT NULL DEFAULT 0

)ENGINE = MyISAM DEFAULT CHARSET=utf8;

CREATE  TABLE  IF NOT EXISTS 表名稱(

字段名1  類型(長度)屬性  索引,

字段名2  類型(長度)屬性  索引,

字段名3  類型(長度)屬性  索引,

字段名4  類型(長度)屬性  索引,

字段名5  類型(長度)屬性  索引,

...

字段名N  類型(長度)屬性  索引,

) ENGINE =MyISAM  DEFAULT  CHARSET =utf8;

html  設定字元集utf-8

mysql 設定字元集utf8

二、 mysql 資料類型

1. 整數類型(重點重點重點)整數類型位元組數無符号範圍有符号範圍

TINYINT(微整型)1+0 - +255-128- +127

SMALLINT(小整型)20-65535-32768-32767

MEDIUMINT(中整型)30-16777215-8388608-8388607

INT(整型)40-4294967295-2147483648-2147483647

BIGINT(大整型)80-188446744073709551615

mysql 支援的資料類型後面指定該類型的寬度, 基本形式如下:

資料類型(顯示寬度)

預設顯示寬度: 可以了解為 一個整數類型的預設寬度正好能顯示該資料類型的所有值的寬度  預設長度其實是目前位數減一 為什麼要減一 是因為第一位是我們的符号位

n1    | tinyint(4)

n2    | smallint(6)

n3    | mediumint(9)

n4    | int(11)

n5    | bigint(20)

在整數類型使用是 可以配置zerofill 參數zerofill表示數字不足的顯示空間由0來填充補全

出現下面報錯的原因是

Out of range value for column 'n1' at row 1

你的長度超出了範圍

注意:

使用zerofill是mysql會自動加上unsigned(無符号)屬性 那麼該整數類型隻能表示無符号數  器顯示長度比預設顯示寬度小一

在設定了顯示寬度時 如果插入的資料寬度大于設定的顯示寬度 資料依然可以插入  且能夠顯示  但是該設定的寬度失效

資料的寬度不能大于預設寬度 如果大于預設寬度 那麼該資料已經超出該類型的最大值 因為最大值的寬度必須小于等于預設寬度  如果一個值大于最大值 将不能插入

-- 整數類型還有一個屬性AUTO_INCREMENT屬性    自增

-- 自增屬性需要配合索引使用

-- 如果出現下面報錯 請在你自增屬性後面加上你的索引内容

-- ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

-- key(index) 索引

-- 普通索引(index)

-- 唯一索引(unique)唯一索引所有值不能有重複

-- 主鍵索引primary key一個資料表中隻能有一個  唯一作用 一般設定都是自增字段

zerofill 零填充

unsigned   無符号

auto_increment  自增

隻能修飾整數類型

2. 浮點數和定點數

mysql 中使用浮點數和定點數來表示小數

浮點數: 單精度浮點數(float)和雙精度浮點數(double)

定點數: DECIMAL

定點數在存儲空間 是根據精度來決定的

mysql中可以指定浮點數的精度:資料類型(M,D)

M 精度   是資料的總長度  小數點不占位

D  标度   小數點後的長度

在存儲小數的時候 建議使用decimal類型 定點數以字元串形式存儲 是以精度要比浮點數更高  而且浮點數容易出現誤差 這是浮點數一直存在的問題 如果對資料的精度要求很高 還是選擇定點數比較安全

如果标度超出位數那麼他會進行四舍五入如果你的精度和标度一樣那麼我們的整數位隻能是零

3. 時間

-- 時間戳

-- 2147483647

INT 2147483647

因為php可以有date函數  你想處理什麼樣子都可以  是以我們使用時間戳來存儲我們php的時間

4.字元串類型

字元串類型是mysql中用來存儲字元串的資料類型 字元串類型包含: VARCHAR  CHAR  TEXT  ENUM   SET

CHAR 和VARCHAR

字元串類型(M) M-- 該字元串的最大長度M

CHAR 定長的字元類型0-255

VARCHAR  變長的字元類型5.0以前0-255 5.0版本以後0-65535

char(5) 和varchar(5)差別

插入值      char 占用字數varchar占用字數

152

12354

1234          55

1234556

CHAR 定長字元類型   配置設定多少空間就占用多少空間 不計算需要的長度  處理資料速度快

VARCHAR 變長字元類型   根據字元串的長度來配置設定空間  需要計算長度   處理資料速度稍慢

什麼時候用char  什麼時候用varchar

當你插入的資料長度一直不變的情況下 請使用char  密碼需要使用char

當你插入的資料長度是随時改變的情況下  使用varchar  使用者名需要使用varchar

ENUM 類型  枚舉類型

ENUM(‘值1,值2,值3,,,,,值n’)

n--代表參數清單中的第n個值n 65535

ENUM 的值隻能去清單中的一個元素

1/65535

SET 類型

在建立表是 set類型的取值範圍是以清單的形式指定的

set(‘值1,值2,值3,。。。值n’);

set 類型的值最多隻是64個元素 取值可以是一個或者多個 其他特性和enum類似

1-64/64

三檢視表結構

DESC 表名:縮寫版

DESCRIBE 表名

檢視建表語句

SHOW CREATE TABLE 表名

四建立表

1.建表文法

CREATE  TABLE  IF NOT EXISTS 表名稱(

字段名1  類型(長度)屬性  索引,

字段名2  類型(長度)屬性  索引,

字段名3  類型(長度)屬性  索引,

字段名4  類型(長度)屬性  索引,

字段名5  類型(長度)屬性  索引,

...

字段名N  類型(長度)屬性  索引,

) ENGINE =MyISAM  DEFAULT  CHARSET =utf8;

a.設定主鍵

PRIMARY KEY

字段名  資料類型  PRIMARY KEY

b.設定表的非空限制

字段名  資料類型 NOT NULL

不為空 隻是不為null

c.設定表的唯一性

字段名 資料類型 UNIQUE

d.設定表字段值的自增

字段名 資料類型 AUTO_INCREMENT

如果你設定自增就必須加上 索引 PRIMARY KEY

e.設定表的字段預設值

字段名 資料類型 DEFAULT 預設值

f.設定字段的數字類型 不能為負數

字段名 資料類型 UNSIGNED

g.建表引擎

MyISAM

InnoDB

MyISAM 與InnoDB的差別

myisam  讀取速度快  不支援事務

InnoDB  讀取速度稍慢  支援事務   事務復原

===================================

根據我們昨天學的内容建立一個表

ERROR 1062 (23000): Duplicate entry 'user1' for key 'name'

說明你的user1在name字段裡面有值了 而且你的name字段是唯一字段

2.修改表(重點重點)

a)修改表名

ALTER TABLE 表名RENAME TO新表名

b)修改字段的資料類型

ALTER TABLE 表名MODIFY字段名  資料類型 屬性 索引;

c)修改字段名

ALTER TABLE 表名CHANGE老字段名 新字段名  資料類型 屬性 索引;

d)增加字段

ALTER TABLE 表名ADD字段名 資料類型 屬性 索引[FIRST|AFTER字段名]

如果後面first和after不寫的情況下 預設是添加到字段末尾

e)删除字段

ALTER TABLE 表名DROP字段名

ERROR 1091 (42000): Can't DROP 'phone'; check that column/key exists

删除不存在的字段 會報上面的錯誤

f)修改字段的排列位置

ALTER TABLE 表名MODIFY字段1資料類型 屬性 索引AFTER字段2

g)修改表引擎

ALTER TABLE 表名ENGINE =引擎名

資料量大的時候 不建議像上面一樣去修改表引擎 而是先建立一個和myuser表一樣的表 然後把空表的引擎修改為我們要修改的引擎之後将資料導入到新表中即可

h)将自增改為現在的最大值

ALTER TABLE 表名AUTO_INCREMENT=0;