標籤:rpm p12 sel 電腦 浮點數 values 大小寫 安裝 格式
MySQL的資料類型和表結構
DB,DataBase
-資料庫:依照某種資料模型進行組織並存放到儲存空間的資料集合。
DNMS,DataBase Management System
-資料庫管理系統:用來操縱和管理資料庫的大型服務軟體。
DBS,DataBase System
-資料庫系統:即DB+DBMS,指帶有資料庫並整合了資料庫管理軟體的電腦系統。
Oracle(甲骨文):Oracle Database 、 MySQL
Microsoft(微軟):SQL Server 、Access
IBM: DB2
Sybase: Sybase
MySQL主要特點:
-關係型資料庫
-支援Linux/Unix、Windows等多種作業系統
-使用C和C++編寫,可移植性強
-通過API支援Python/Java/Perl/PHP等語言
應用環境:
-LAMP平台,與Apache HTTP Server組合
-LNMP平台,與Nginx組合
關係型資料庫服務軟體(RDBMS):按照規定的結果儲存資料,並且資料(values)之間可以做關聯操作。
例:Oracle MySQL DB2 SQL Server
非關係型資料庫軟體(NOSQL):以索引值對的形式,一一對應,資料(values)之間沒有關聯。
例:Redis mongdb
一、安裝MySQL
yum -y install perl-Data-Dumper Perl-JSON perl-Time-HiRes #依賴包
tar -xf mysql-5.7.17-1.el7.x86_64.rpm-bundle.tar
rpm -Uvh mysql-conmmunity-*.rpm #U升級安裝,可替換衝突文檔案。
二、啟動服務
/usr/lib/systemd/system/mysqld.service
或
systemctl start mysql
systemctl enable mysql
三、登入
預設的資料庫管理員帳號root,允許從localhost訪問。
首次登入密碼在安裝時隨機產生,儲存在錯誤記錄檔檔案裡。
grep ‘temporary password‘ /var/log/mysql.log
[email protected]: matoa>AV<PSDK #隨機密碼
mysql -uroot -p"matoa>AV<PSDK"
mysql>
四、修改密碼
0 or LOW 長度
1 or MEDIUM(預設) 長度,數字,小寫/大寫,和特殊字元
2 or STRONG 長度,數字,小寫/大寫和特殊字元,字典檔案
通過用戶端工具mysql串連本機伺服器,使用alter user重設定口令。
mysql>set global validate_password_policy=0; #只驗證密碼長度
mysql>set global validate_password_length=6; #修改密碼長度為6個字元,預設是8個字元。
mysql>alter user user() identified by "123456"; #修改登入密碼
mysql>quit #退出
mysql -uroot -p123456 #使用新密碼登入
要想實現永久生效需修改設定檔:
vim /etc/my.cnf
.....
validate_password_policy=0
validate_password_length=6
服務相關檔案
/etc/my.cnf 設定檔
/var/lib/mysql 資料庫目錄
預設連接埠 3306
進程名 mysqld
傳輸協議 TCP
進程所有者 mysql
進程所屬組 mysql
使用mysql命令:
mysql -h伺服器ip -u使用者名稱 -p密碼 [資料庫庫名]
指令類型:
MySQL指令:環境切換,看狀態,退出等控制
SQL指令:資料庫定義/查詢/操縱/授權語句
DDL 資料定義語言 (Data Definition Language)(create alter drop)
DML 資料操作語言(insert updata delect)
DCL 資料控制語言(grant revoke)
DTL 資料事物語言(commit rollback savepoint)
基本注意事項:
1.指令不區分大小寫(密碼、變數值除外)
2.每條SQL指令以";"結束或分隔。
3.c\可廢棄當前編寫錯的指令。
命令:
show databases; 查看所有的庫
use 庫名; 進入到指定庫
show tables; 列出當前庫內的所有表
describe 表名; 查看錶的欄位結構
create datebases 庫名; 建立指定庫
select database(); 查看當前所在的庫
drop databas 庫名; 刪除指定的庫
create table 庫名.表名( #建立指定的表
欄位名1 欄位類型(寬度) 約束條件;
欄位名2 欄位類型(寬度) 約束條件;
...........
);
例建表:mysql>create table gamedb.stu(mysql>name char(10),mysql>age intmysql>);
drop table 庫名.表名; 刪除指定庫下的表
insert into 庫名.表名 values(值列表); #插入表記錄
例:insert into gamedb.stu values("jim",21),("tom",29);
select * from 庫名.表名; 查看錶的所有記錄
delete from 庫名.表名; 刪除表的所有記錄
常見類型的資訊
數值型:體重、身高、成績、工資、價格等
字元型:姓名、工作單位、地址等
枚舉型:興趣愛好、性別等
日期時間型:出生日期、註冊時間等
1.數值型
類型 大小 範圍(有符號) 範圍(無符號) 用途
TINYINT 1位元組 -128~127 0~255 微小整數
SMALLINT 2位元組 -32768~32767 0~65535 小整數
MEDUIMINT 3位元組 -(2^23)~(2^23)-1 0~(2^24)-1 中整數
INT 4位元組 -(2^31)~(2^31)-1 0~(2^32)-1 大整數
BIGINT 8位元組 -(2^63)~(2^63)-1 0~(2^64)-1 極大整數
FLOAT 4位元組 單精確度浮點數
DOUBLE 8位元組 雙精確度浮點數
DECIMAL 對DECIMAL(M,D),其中M為有效位元、D為小數位元,M應大於D,佔用M+2字元
1.1整數型
使用UNSIGED修飾時,對應的欄位只儲存正數(無符號)。
數值不夠指定寬度時,預設是在左邊填空格補位。
寬度僅是顯示寬度,存資料值的大小有類型決定。
使用關鍵字ZEROFILL時,填0代替空格補位。
數值超出範圍時,報錯。
1.2浮點型
定義格式:float(總寬度,小數位元)
當欄位值與類型不符時,欄位值作為0處理。
數值超出範圍時,僅儲存最大/最小值。
浮點型:根據儲存數值的範圍分為 單精確度 雙精確度
單精確度float(n,m)
雙精確度double(n,m)
n表示總位元
m表示小數位的位元
2.字元類型
2.1定長:char(字元數)
最大長度255字元。
不夠指定字元數時預設在右邊用空格補齊。
字元數超出時,無法寫入資料。
2.2變長:varchar(字元數)
按資料實際大小分配儲存空間。
字元數超出時,無法寫入資料。
缺點:每次都要計算,消耗資源。
2.3大文本類型:text/blob
字元數大於655535儲存時使用。
例:mysql>create database ku;mysql>create table ku.biao(>name char(7) ,>age tinyint(3) unsigend,>high float(3,2) >);mysql>desc ku.biao;Fied Type Null key Default Extra欄位名 欄位類型 是否為空白 索引類型 預設值 描述資訊
3.日期時間類型
3.1日期時間,DATETIME
佔用8個位元組。
範圍:1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999
例:2017-12-31 23:59:59
3.2日期時間,TIMESTAMP
佔用4個位元組。
範圍:1970-01-01 00:00:00.000000 ~ 2038-01-19 03:14:07.999999
例:2017-12-31 23:59:59
3.3日期,DATE
佔用4個位元組。
範圍:0001-01-01 ~ 9999-12-31
3.4年份,YEAR
佔用1個位元組。
範圍:1901~2155
3.5時間,TIME
佔用3個位元組。
格式:HH:MM:SS
關於日期時間欄位,當未給TIMESTAMP欄位賦值時,自動以當前系統時間賦值,而DATETIME欄位預設值為NULL。
YEAR年份的處理,預設用4位元字表示,當只用2位元字賦值時,01~69視為2000~2069,而70~99視為1970~1999。
例:mysql>create table ku.biao2(>name varchar(8),>starty year,>birthy date, >abc time>);
時間函數:
now() 擷取調用此函數時的系統日期
sysdate() 執行時間動態獲得系統時間
sleep(N) 休眠N秒
curdate() 擷取當前的系統時間
curtime() 擷取當前的系統時刻
month() 擷取指定時間中的月份
date() 擷取指定時間中的日期
time() 擷取指定時間中的時刻
例:mysql>select now();mysql>select date(now());mysql>select time(now());
4.枚舉類型
4.1從給定值集合中選擇單個值,ENUM。
格式:enum(值1,值2,值N)
4.2從給定值集合中選擇一個或多個值,SET。
格式:set(值1,值2,值N)
例:mysql>create table ku.biao3(>name char(5),>gen enum("boy","girl"),>likes set("book","music","pingpang","sleep")>);
約束條件
Null 允許為空白,預設設定
NOT NULL 不允許為空白
key 索引類型
Default 設定預設值,預設為NULL
例:mysql>create table ku.tbiao5(>name varchar(4) not null,>gen enum("boy","girl") default "boy",>age int(3) not null default 22,>);mysql>desc ku.biao5;
修改表的欄位
基本用法:
ALTER TABLE 表名 執行動作;
執行動作:
1.添加新欄位
ADD 欄位名 類型(寬度) 約束條件;
ADD 欄位名 類型(寬度) 約束條件 FIRST; //添加欄位到最前面
ADD 欄位名 類型(寬度) 約束條件 AFTER 欄位名2; //添加欄位到欄位2後面
2.修改欄位類型
MODIFY 欄位名 類型(寬度) 約束條件;
3.修改欄位名
CHANGE 源欄位名 新欄位名 類型(寬度) 約束條件;
4.刪除指定欄位
DROP 欄位名;
例:mysql>alter table ku.biao5 add >kuki varchar(5) not null ;
MySQL的資料類型和表結構