您好,登錄后才能下訂單哦!
本篇文章給大家主要講的是關于linux下mysql數據庫模型, 管理表和索引的內容,感興趣的話就一起來看看這篇文章吧,相信看完linux下mysql數據庫模型, 管理表和索引對大家多少有點參考價值吧。
1.linux下mysql數據庫及其模型
1.1.SHOW TABLE STATUS LIKE 'user'\G #查看表的存儲引擎
SHOW ENGINES; #查看數據庫支持的存儲引擎
客戶端工具:mysql、mysqladmin、mysqldump、mysqlimport、mysqlcheck
云服務器端工具: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,錯誤日志:此前服務未關閉,數據初始化失敗,數據目錄位置錯誤,數據目錄權限問題
1.4.數據類型:存入的值類型;占據的存儲空間;定長或變長;比較及排序;是否能夠索引;
1.5.查看字符集和排序規則命令:
mysql> SHOW CHARACTER SET;
mysql> SHOW COLLATION;
1.6.AUTO_INCREMENT: 整型 非空 無符號 主鍵或惟一鍵
CREATE TABLE test(ID INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, Name CHAR(20))
mysql> SELECT LAST_INSERT_ID();
1.7.MySQL云服務器變量按作用域:分為全局變量和會話變量
SHOW GLOBAL VARIABLES #查看全局變量
SHOW [SESSION] VARIABLES #查看會話變量
MySQL云服務器變量按生效時間分為兩類:動態和靜態
動態:可即時修改
靜態:寫在配置文件中,通過參數傳遞給mysqld
動態調整參數的生效方式:
全局變量:對當前會話無效,只對新建立會話有效;
會話變量:即時生效,但只對當前會話有效;
1.8.云服務器變量:@@變量名
顯示:SELECT @@global.sql_mode;
SELECT @@session.sql_mode;
設定:SET GLOBAL|SESSION 變量名='value'
2.管理表:
2.1.創建數據庫:
CREATE DATABASE IF NOT EXISTS students CHARACTER SET 'gbk' COLLATE 'gbk_chinese_ci';
2.2.刪除數據庫:
DROP DATABASE [IF EXISTS] db_name
2.3.創建表:
CREATE TABLE [IF NOT EXISTS] tb_name (col_name col_defination, constraint )
2.3.1.直接創建一張空表:
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.插入表數據:
INSERT INTO courses (Course) values ('CCNA'),('CCNP'),('RHCA');
2.3.3.顯示表的索引:
SHOW INDEXES FROM tb_name;
2.4.從其它表中查詢出數據,并以之創建新表:(注意此類方法表格式定義與源表不同)
CREATE TABLE courses_new SELECT * FROM courses WHERE ID <=2;
2.5.以其它表為模板創建一個空表;(此類方法表格式定義與源表一模一樣)
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.表之間建立關系:
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表可任意插入數據如下:
INSERT INTO cla***oom (Name,CID) VALUES ('Willow',6);
DELETE FROM cla***oom WHERE CID=6;
引用外鍵情況下:cla***oom表只能對照引用表存在的數據進行插入,不能任意插入數據
外鍵必須是支持事務的存儲引擎,如InnoDB,否則會報錯
外鍵引用字段類型參數也需一致
ALTER TABLE courses ENGINE=InnoDB;
ALTER TABLE cla***oom ADD FOREIGN KEY foreign_cid (CID) REFERENCES courses(ID);
SHOW INDEXES FROM cla***oom;
此時對cla***oom表再插入引用的courses表中沒有的數據,將會報錯
INSERT INTO cla***oom (Name,CID) VALUES ('Willow',6);
3.7.創建索引:
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;
以上關于linux下mysql數據庫模型, 管理表和索引詳細內容,對大家有幫助嗎?如果想要了解更多相關,可以繼續關注我們的行業資訊板塊。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。