Mysql 數據庫基礎知識及常用指令(1)

Mysql安裝配置

my.ini ——>配置文件 端口號:3306

default-character-set = utf8 -->默認編碼方式

basedir = 基礎安裝目錄

datadir = 數據文件存放的目錄

character-set-server= utf8 在服務器上的存儲方式

啟動和關閉mysql 圖形化界面(服務列表)/命令行界面

net start mysql 啟動服務
net stop mysql 停止服務

mysql的操作梗概:

  1. 登錄退出
  2. 修改mysql提示符
  3. mysql常用命令
  4. mysql語句規(guī)范
  5. 數據庫操作

登陸與退出

登陸:

mysql -u  --user=name  用戶名
mysql -u root  
mysql -p  --password[=name]  密碼
mysql -uroot -p    
mysql -P --port=#    端口
mysql -P3306    
mysql -h  --host=name 服務器名稱    
mysql -h 127.0.0.1
mysql -uroot -p123456 -P3306 -h127.0.0.1

退出

exit;  
quit;  
/q;

通用查詢

select version();   查看版本
show engines;       查看引擎
select user();      查看當前用戶

mysql語法規(guī)范

  1. 關鍵字與函數名稱全部大寫
  2. 數據庫名稱,表名稱沛鸵,字段名稱全部小寫
  3. sql語句必須以分號結尾

創(chuàng)建數據庫
說明:{必選項} [可選項]

  CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name  

  CREATE DATABASES study;    

  SHOW {DATABASE|SCHEMAS} [LIKE 'pattern'| WHERE expr]

  SHOW WORNINGS;      查看錯誤信息  

  SHOW CREATE DATABASE study;

  CREATE DATABASE IF NOT EXISTS t2 CHARACTER SET utf8;   

修改數據庫

ALTER {DATABASE|SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name;  

ALTER DATABASE t2 CHARACTER SET gbk;  

刪除數據庫

DROP {DATABASE|SCHEMA} [IF EXISTS] db_name;  

數據類型

數據類型是指列鸽心,儲存過程參數,表達式和局部變量的數據特征陨囊,它決定了數據的存儲格式爷怀,代表了不同的信息類型镊绪。    

整型

  1. TINYINT: 1kb
  2. SMALLINT: 2kb
  3. MEDIUMINT: 3kb
  4. INT: 4kb
  5. BIGING: 8kb

浮點型

  1. FLOAT[(m,d)] m是數字總位數匀伏,d是小數點后面的位數,默認精確到7位小數值
  2. DOUBLE[(m,d)]

日期時間型 存儲需求

  1. YEAR 1 1000-9999
  2. TIME 3 1000-9999
  3. DATE 3
  4. DATETIME 8
  5. TIMESTAMP 4 1970-2037

字符型

  1. CHAR
  2. VCHAR
  3. TINYTEXT
  4. TEXT
  5. MEDIUMTEXT
  6. LONGTEXT
  7. ENUM('VALUE1':'VALUE2'...)
  8. SET('VALUE':'VALUE2'...)

數據表操作:數據表是數據庫最重要的組成部分之一蝴韭,是其他對象的基礎
行成為記錄 列稱之為字段

  • USE 打開數據庫够颠,USE數據庫名稱
    SELECT DATABASE();  //查看用戶打開的數據
    CREATE TABLE [IF NOT EXISTS] table_name(
        column_name data_type,
        ...
    )
    
    > CREATE TABLE tb1(
        username VARCHAR(20),
        age TINYINT UNSIGNED,
        salary FLOAT(8,2) UNSIGNED
    );
    
    

查看數據表是否存在

  • SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr]

查看數據表的結構

  • SHOW COLULMNS FROM tb1;
  • DESCRIBE tb1;

向表中插入數據

  • INSERT tb1 VALUES('TOM', 20, 1234.12);
  • INSERT tb1(username, salary) VALUES('jack', 1123.12);

查找語句

  • SELECT expr,... FROM tbl_name;

空值與非空

  • NULL NOT NULL
  • INSERT tb2 VALUES('java', NULL);

AUTO_INCREAMENT

  • 當插入沒有成功的時候編號也自增一
  • 自動編號且必須與主鍵組合使用
  • 默認情況下榄鉴,起始值為1履磨,每次的增量為1

PRIMARY KEY

  • 主鍵約束
  • 每張數據表只能存在一個主鍵
  • 主鍵保證記錄的唯一性(行為記錄,列為字段)
  • 逐漸自動為NOT NULL
  • AUTO_INCREMENT必須和主鍵一起使用庆尘,主鍵不一定和AUTO_INCREMENT一起使用

UNIQUE KEY

  • 唯一約束
  • 唯一約束可以保證記錄的唯一性
  • 唯一約束的字段可以為空值(null)只能有一個空值
  • 每張數據表可以存在多個唯一約束

DEFAULE

  • 默認值
  • 當插入記錄時剃诅,如果沒有明確為字段賦值,則自動賦予默認值驶忌,
    CREATE TABLE tb(  
        id SMALLINT UNSIGNED KEY AUTO_INCREMENT,  
        username VARCHAR(20) UNIQUE KEY,  
        sex ENUM('1', '2', '3') DEFAULT'3'  
    );
    

約束

  • 約束保證數據的完整性和一致性
  • 約束分為表級約束和列級約束
    • 約束所針對字段的數目的多少來決定的
    • 某一個字段列級約束
    • 兩個或兩個以上的字段稱為表級約束
  • 約束類型包括 功能
    • NOT NULL
    • PRIMARY KEY
    • UNIQUE KEY
    • DEFAULT
    • FOREIGN KEY 外鍵約束
      • 保證數據一致性矛辕,完整性
      • 實現一對一或一對多的關系

外鍵約束

  • 父表和字表必須使用相同的存儲引擎,而且禁止使用臨時表
  • 數據表的存儲引擎只能為InnoDB
  • 外鍵列和參照列必須具有相似的數據類型付魔。其中數字的長度或是否有符號位必須相同聊品;而字符的長度則可以不同。
  • 外鍵列和參照列必須創(chuàng)建索引几苍。如果外鍵列不存在索引的話杨刨,MYSQL將自動創(chuàng)建索引
CREATE TABLE provinces(
    id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    pname VARCHAR(20) NOT NULL
);

CREATE TABLE users(
    username VARCHAR(20) NOT NULL,
    id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    pid SMALLINT UNSIGNED,
    FOREIGN KEY(pid) REFERENCES provinces(id) ON DELETE CASCADE ON UPDATE CASCADE
);

編輯數據表的默認搜索引擎
mysql配置文件(mysql.ini):default-storage-engine = INNODB

indexes
SHOW INDEXES FROM provinces\G;

  • 主鍵在創(chuàng)建時自動創(chuàng)建索引

外鍵約束的參照操作
物理外鍵

  • CASCADE: 從父表刪除或更新且自動刪除或更新字表中匹配的行。
    • insert table users(pid,username) values ('A', tom);
    • delete from provices where id = 3;
    • 必須先在父表中插入記錄然后才能在子表中插入記錄
    • FOREIGN KEY (pid) REFERENCES provinces (id) ON DELETE CASCADE
  • SET NULL:從父表刪除或更新行擦剑,并設置子表中的外鍵列為NULL妖胀。 如果使用該選項,必須保證字表列沒有指定NOT NULL
  • RESTRICT:拒絕對父表的刪除更新操作
  • NO ACTION: 標準SQL的關鍵字惠勒,在Mysql中與RESTRICT相同

表級約束和列級約束

  • 對一個數據列建立的約束赚抡,成為列級約束
  • 對多個數據列建立的約束,成為表級約束
  • 列級約束既可以在列定義時聲明纠屋,也可以在列定義后聲明涂臣,表級約束只能在列頂以后聲明。

修改數據表

  • 添加主鍵約束:ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] PRIMARY KEY[index_type] (index_col_name..... )
    • ALTER TABLE users ADD CONSTAINT users_id PRIMARY KEY (id);
  • 添加唯一約束:ALTER TABLE tbl_name ADD[CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] (index_col_name,...)
    • ALTER TABLE users ADD UNIQUE (username)
  • 添加外鍵約束: ALTER TABLE users ADD FOREIGN KEY(pid) REFERENCES provinces (id);
  • 添加或刪除默認約束:ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal| DROP DEFAULT}
  • 添加單列:ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name]
  • 添加多列:ALTER TABLE tbl_name ADD [COLUMN] (col_name column_defination, ...) 不能指定位置關系
  • 刪除主鍵約束:ALTER TABLE tbl_name DROP PRIMARY KEY;
  • 刪除唯一約束:ALTER TABLE tbl_name DROP INDEXEX username;
  • 刪除外鍵約束:
    • SHOW CREATE TABLE users2; (CONSTRAINT 'users2_ibfk_1')

刪除列
ALTER TABLE tbl_name DROP [COLUMN] col_name

修改數據表

  • 修改列定義:ALTER TABLE users MODIFY id SMALLINT UNSIGNED NOT NULL FIRST;
  • 修改列名稱:ALTER TABLE tbl_name CHANGE[COLUMN] old_col_name new_col-name column_definition [FIRST|AFTER col_name]
    • ALTER TABLE users CHANGE pid p_id TINYINT UNSIGNED NOT NULL;

約束

  • 功能劃分:
    • NOT NOLL (只能為列級約束)
    • PRIMARY KEY
    • UNIQUE KEY
    • DEFAULT (只能為列級約束)
    • FOERIGN KEY
  • 按數據列的數目劃分:
    • 表級約束
    • 列級約束

修改數據表

  • 針對字段的操作:
    • 添加/刪除字段
    • 修改列定義
    • 修改列名稱
  • 針對約束的操作:添加/刪除各種約束
  • 針對數據表的操作:數據表更名(兩種方式modify/change)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末售担,一起剝皮案震驚了整個濱河市赁遗,隨后出現的幾起案子,更是在濱河造成了極大的恐慌族铆,老刑警劉巖岩四,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異哥攘,居然都是意外死亡剖煌,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門逝淹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來耕姊,“玉大人,你說我怎么就攤上這事栅葡≤岳迹” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵欣簇,是天一觀的道長规脸。 經常有香客問我,道長醉蚁,這世上最難降的妖魔是什么燃辖? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮网棍,結果婚禮上黔龟,老公的妹妹穿的比我還像新娘。我一直安慰自己滥玷,他們只是感情好氏身,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著惑畴,像睡著了一般蛋欣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上如贷,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天陷虎,我揣著相機與錄音到踏,去河邊找鬼。 笑死尚猿,一個胖子當著我的面吹牛窝稿,可吹牛的內容都是我干的。 我是一名探鬼主播凿掂,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼伴榔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了庄萎?” 一聲冷哼從身側響起踪少,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎糠涛,沒想到半個月后援奢,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡脱羡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年萝究,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锉罐。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡帆竹,死狀恐怖,靈堂內的尸體忽然破棺而出脓规,到底是詐尸還是另有隱情栽连,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布侨舆,位于F島的核電站秒紧,受9級特大地震影響,放射性物質發(fā)生泄漏挨下。R本人自食惡果不足惜熔恢,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望臭笆。 院中可真熱鬧叙淌,春花似錦、人聲如沸愁铺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽茵乱。三九已至茂洒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瓶竭,已是汗流浹背督勺。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工渠羞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人玷氏。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓堵未,卻偏偏與公主長得像,于是被迫代替她去往敵國和親盏触。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內容

  • MYSQL 基礎知識 1 MySQL數據庫概要 2 簡單MySQL環(huán)境 3 數據的存儲和獲取 4 MySQL基本操...
    Kingtester閱讀 7,818評論 5 116
  • 觀其大綱 page 01 基礎知識 1 MySQL數據庫概要 2 簡單MySQL環(huán)境 3 數據的存儲和獲取 4 M...
    周少言閱讀 3,158評論 0 33
  • 1块饺、約束概述 約束的目的是為了保證數據的完整性與一致性赞辩。 按照約束的范圍劃分:列級約束:只對一個數據列建立約束。既...
    黒貓閱讀 984評論 3 5
  • 什么是數據庫授艰? 數據庫是存儲數據的集合的單獨的應用程序辨嗽。每個數據庫具有一個或多個不同的API,用于創(chuàng)建淮腾,訪問糟需,管理...
    chen_000閱讀 4,036評論 0 19
  • 1、MySQL啟動和關閉(安裝及配置請參照百度經驗谷朝,這里不再記錄洲押。MySQL默認端口號:3306;默認數據類型格式...
    強壯de西蘭花閱讀 651評論 0 1