您好,登錄后才能下訂單哦!
本篇文章給大家主要講的是關(guān)于linux下mysql數(shù)據(jù)庫模型, 管理表和索引的內(nèi)容,感興趣的話就一起來看看這篇文章吧,相信看完linux下mysql數(shù)據(jù)庫模型, 管理表和索引對(duì)大家多少有點(diǎn)參考價(jià)值吧。
1.linux下mysql數(shù)據(jù)庫及其模型
1.1.SHOW TABLE STATUS LIKE 'user'\G #查看表的存儲(chǔ)引擎
SHOW ENGINES; #查看數(shù)據(jù)庫支持的存儲(chǔ)引擎
客戶端工具:mysql、mysqladmin、mysqldump、mysqlimport、mysqlcheck
云服務(wù)器端工具:mysqld, mysqld_safe, mysqld_multi
1.2.my.cnf檢查順序:
/etc/my.cnf --> /etc/mysql/my.cnf --> $MYSQL_HOME/my.cnf -->
--default-extra-file=/路徑文件 --> ~/.my.cnf
# mysqld --help --verbose
1.3.hostname.err,錯(cuò)誤日志:此前服務(wù)未關(guān)閉,數(shù)據(jù)初始化失敗,數(shù)據(jù)目錄位置錯(cuò)誤,數(shù)據(jù)目錄權(quán)限問題
1.4.數(shù)據(jù)類型:存入的值類型;占據(jù)的存儲(chǔ)空間;定長(zhǎng)或變長(zhǎng);比較及排序;是否能夠索引;
1.5.查看字符集和排序規(guī)則命令:
mysql> SHOW CHARACTER SET;
mysql> SHOW COLLATION;
1.6.AUTO_INCREMENT: 整型 非空 無符號(hào) 主鍵或惟一鍵
CREATE TABLE test(ID INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, Name CHAR(20))
mysql> SELECT LAST_INSERT_ID();
1.7.MySQL云服務(wù)器變量按作用域:分為全局變量和會(huì)話變量
SHOW GLOBAL VARIABLES #查看全局變量
SHOW [SESSION] VARIABLES #查看會(huì)話變量
MySQL云服務(wù)器變量按生效時(shí)間分為兩類:動(dòng)態(tài)和靜態(tài)
動(dòng)態(tài):可即時(shí)修改
靜態(tài):寫在配置文件中,通過參數(shù)傳遞給mysqld
動(dòng)態(tài)調(diào)整參數(shù)的生效方式:
全局變量:對(duì)當(dāng)前會(huì)話無效,只對(duì)新建立會(huì)話有效;
會(huì)話變量:即時(shí)生效,但只對(duì)當(dāng)前會(huì)話有效;
1.8.云服務(wù)器變量:@@變量名
顯示:SELECT @@global.sql_mode;
SELECT @@session.sql_mode;
設(shè)定:SET GLOBAL|SESSION 變量名='value'
2.管理表:
2.1.創(chuàng)建數(shù)據(jù)庫:
CREATE DATABASE IF NOT EXISTS students CHARACTER SET 'gbk' COLLATE 'gbk_chinese_ci';
2.2.刪除數(shù)據(jù)庫:
DROP DATABASE [IF EXISTS] db_name
2.3.創(chuàng)建表:
CREATE TABLE [IF NOT EXISTS] tb_name (col_name col_defination, constraint )
2.3.1.直接創(chuàng)建一張空表:
CREATE TABLE tb1 (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Name CHAR(20) NOT NULL, Age TINYINT NOT NULL) ENGINE [=] engine_name
CREATE TABLE tb2 (id INT UNSIGNED NOT NULL AUTO_INCREMENT, Name CHAR(20) NOT NULL, Age TINYINT NOT NULL, PRIMARY KEY(id),UNIQUE KEY(name),INDEX(age))
CREATE TABLE courses(ID TINYINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,Course VARCHAR(50) NOT NULL);
2.3.2.插入表數(shù)據(jù):
INSERT INTO courses (Course) values ('CCNA'),('CCNP'),('RHCA');
2.3.3.顯示表的索引:
SHOW INDEXES FROM tb_name;
2.4.從其它表中查詢出數(shù)據(jù),并以之創(chuàng)建新表:(注意此類方法表格式定義與源表不同)
CREATE TABLE courses_new SELECT * FROM courses WHERE ID <=2;
2.5.以其它表為模板創(chuàng)建一個(gè)空表;(此類方法表格式定義與源表一模一樣)
CREATE TABLE Courses_good LIKE courses;
3.索引
3.1.添加索引:
ALTER TABLE Courses_good ADD UNIQUE KEY (Course);
3.2.修改字段名稱:
ALTER TABLE courses_good MODIFY CID TINYINT UNSIGNED NOT NULL AUTO_INCREMENT;
ALTER TABLE courses_good CHANGE Couse Course VARCHAR(50) NOT NULL;
3.3.增加字段名稱:
ALTER TABLE courses_good ADD Startdate date default '2016-06-29';
3.4.修改表名稱:
ALTER TABLE courses_good RENAME TO courses_new;
RENAME TABLE courses_new TO courses_good;
3.5.刪除表:
DROP TABLE courses_new;
3.6.表之間建立關(guān)系:
CREATE TABLE cla***oom (SID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,Name VARCHAR(30), CID INT NOT NULL);
INSERT INTO cla***omm (Name,CID) VALUES ('Jerry',3),('tom',1);
SELECT * FROM cla***omm;
SELECT * FROM courses;
SELECT Name,Course FROM cla***oom,courses WHERE cla***oom.CID=courses.ID;
在沒有引用外鍵情況下:cla***oom表可任意插入數(shù)據(jù)如下:
INSERT INTO cla***oom (Name,CID) VALUES ('Willow',6);
DELETE FROM cla***oom WHERE CID=6;
引用外鍵情況下:cla***oom表只能對(duì)照引用表存在的數(shù)據(jù)進(jìn)行插入,不能任意插入數(shù)據(jù)
外鍵必須是支持事務(wù)的存儲(chǔ)引擎,如InnoDB,否則會(huì)報(bào)錯(cuò)
外鍵引用字段類型參數(shù)也需一致
ALTER TABLE courses ENGINE=InnoDB;
ALTER TABLE cla***oom ADD FOREIGN KEY foreign_cid (CID) REFERENCES courses(ID);
SHOW INDEXES FROM cla***oom;
此時(shí)對(duì)cla***oom表再插入引用的courses表中沒有的數(shù)據(jù),將會(huì)報(bào)錯(cuò)
INSERT INTO cla***oom (Name,CID) VALUES ('Willow',6);
3.7.創(chuàng)建索引:
CREATE INDEX index_on_name ON cla***oom (Name) USING BTREE;
CREATE INDEX index_on_name ON cla***oom (Name(5) DESC) USING BTREE;
3.8.刪除索引:
DROP INDEX index_on_name ON cla***oom;
以上關(guān)于linux下mysql數(shù)據(jù)庫模型, 管理表和索引詳細(xì)內(nèi)容,對(duì)大家有幫助嗎?如果想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。