mysql入門

 

一、MySQQL由瑞典MySQL AB 公司開發,目前屬於Oracle公司;
二、MySQL是開源的免費的;
三、啓動MySQL服務: net start mysql(管理員:命令提示符);
四、關閉MySQL服務:net stop mysql;
五、MySQL登錄:mysql -uroot -p
參數                        描述
-D, --database=name         代開指定數據庫
--delimiter=name            指定分隔符
-h, --host=name             服務器名稱
-p, --password[=name]       密碼


六、MySQL退出:exit;  quit; \q;
七、按鍵盤的上下鍵進行鍵盤翻越;
八、修改Mysql提示符:
鏈接客戶端時經過參數指定;
shell>mysql -uroot -proot --prompt 提示符

連接上客戶端後,同過prompt命令修改
mysql>prompt 提示符
九、MySQL經常使用命令:
顯示當前服務器版本; SELECT VERSION();
顯示當前日期時間: SELECT NOW();
顯示當前用戶: SELECT USER();
SQL語句必須以分號結尾;
十、建立數據庫:{}必選的;| 作選擇;[]可選;
CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name
十一、查看當前服務器下的數據列表:
SHOW {DATABASES|SCHEMAS} [LIKE 'pattern'| WHERE expr]
十二、修改數據庫:
ALTER {DATABASE|SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name;
1三、刪除數據庫:
DROP {DATABASE|SCHEMA} [IF EXISTS] db_name
1四、MySQL默認的端口號:3306 ,超級用戶是:root
1五、數據類型:
數據類型是指列、存儲過程參數、表達式和局部變量的數據特徵,它決定了數據的存儲格式,表明了不一樣的信息類型。
1六、整形:TINYINT(-128--127),SMALLINT(-32768--32767,無符號:0--16777215),
MEDIUMINT(-83388608--8388607,無符號:0--16777215),INT(更大),BIGINT(巨大)
1七、浮點型:FLOAT[(M,D)] < DOUBLE[(M,D)] ;M是數字總位數,D是小數點後面的位數。若是M和D被省略,根據硬件容許的限制來保存值。單精度浮點精確到大約7位小數位。
1八、日期實際型:YEAR/TIME/DATE/DATETIME/TIMESTAMP
1九、字符型:CHAR(M):M個字節; VARCHAR(M):L+1個字節,其中L<=M且0<=M<=6355;TINYTEXT;TEXT;MEDIUMTEXT;LONGTEXT;ENUM('value1','value2',...);SET('value1','value2'...)
20、USE : 打開數據庫:USE database_name;  select database():顯示當前的數據庫;
2一、建立數據表:
CREATE TABLE [IF NOT EXISTS] table_name(column_name data_type, ... )
例子:mysql>CREATE TABLE tb1(username VARCHAR(20),age TINYINT UNSIGNED,salary FLOAT(8,2) UNSIGNED);
2二、查看數據表:SHOW TABLES
查看數據表列表:SHOW TABLES [FROM db_name] [LIKE 'pattern'|WHERE expr];
查看數據表結構:SHOW COLUMNS FROM tbl_name;
2三、MySQL記錄的插入與查找:INSERT
插入記錄:INSERT [INTO] tb_name [(col_name,...)] VALUES(val,...)
如:mysql>INSERT tbl(username,salary) VALUES ('John',4500.69);或者:INSERT tb1 VALUES('Tom',6660.55);
2四、SELECT:記錄查找:SELECT expr,... FROM tb1_name;
如:mysql>SELECT * FROM tb1_name;
2五、空值與非空;
NULL,字段值能夠爲空; NOT NULL ,字段值禁止爲空:
例如:mysql>CREATE TABLE tb2(username VARCHAR(20) NOT NULL, age TINYINT UNSIGNET NULL);
mysql>INSERT tb2 VALUES('Tom',NULL);
mysql>INSERT tb2 VALUES(NULL,26);
2六、AUTO_INCREMENT:
自動編號,且必須與住建組合使用;默認狀況下,起始值爲1,每次的增量爲1;
例:mysql>CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT,username VARCHAR(30) NOT NULL);不能建立成功 X;
2七、PRIMARY KEY
主鍵約束;每張數據表只能存在一個主鍵;主鍵保證記錄的惟一性;主鍵自動爲NOT NULL;
例:mysql>CREATE TABLE tb3(id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,username VARCHAR(20) NOT NULL);
mysql>INSERT INTO tb3 VALUES('Tom'),VALUES('John'),VALUES('Rose'),VALUES('Dimitar');
mysql>SELECT * FROM tb3;
例2:mysql>CREATE TABLE tb4(id SMALLINT UNSIGNED PRIMARY KEY,username VARCHAR(20) NOT NULL);
mysql>INSERT tb4 VALUES(4,'Tom'); mysql>INSERT tb4 VALUES(22,'John');成功;
mysql>INSERT tb4 VALUES(4,'Rose');錯誤;
2八、MySQL惟一約束:UNIQUE KEY;
惟一約束;惟一約束能夠保證記錄的惟一性;惟一約束的字段能夠爲空值(NULL);每張數據表能夠存在多個惟一約束
例:mysql>CREATE TABLE tb5(id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
->username VARCHAR(20) NOT NULL UNIQUE KEY,
->age TINYINT UNSIGNED);
查詢:mysql>INSERT tb5(username,age) VALUES('Tom',22);
mysql>INSERT tb5(username,age) VALUES('Tom',22);錯誤,重名
2九、MySQL默認約束:DEFAULT
默認值;當插入記錄時,若是沒有明確爲字段賦值,則自動賦予默認值;
例:mysql>CREATE TABLE tb6(id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
->username VARCHAR(20) NOT NULL UNIQUE KEY, sex ENUM('1','2','3')default '3');
寫入:mysql>INSERT tb6(username) VALUES('Tom'); mysql>SELECT *FROM tb6;
30、MySQL外鍵約束的要求解析:
約束保證數據的完整性和一致性; 約束分爲表級約束和列級約束;
約束類型包括:NOT NULL(非空約束);PRIMARY KEY(主鍵約束);UNIQUE KEY(惟一約束);DEFAULT(默認約束);FOREIGN KEY(外鍵約束)
3一、MySQL外鍵約束的要求解析:FOREIGN KEY:
父表和字表必須使用相同的存儲引擎,並且禁止使用臨時表; 數據表的存儲引擎只能爲InnoDB;
外鍵列和參照列必須具備類似的數據類型。其中數字的長度或是否有符號位必須相同;而字符的長度則能夠不一樣。
外鍵列和參照列必須建立索引。若是外鍵列不存在索引的話,MySQL將自動建立索引。
步驟:編輯數據表的默認存儲引擎:MySQL配置文件:default-stroage-engine=InnoDB
mysql>USE test;  mysql>CREATE TABLE provinces(id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
->pname VARCHAR(20) NOT NULL);
mysql>CREATE TABLE users(id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,username VARCHAR(10) NOT NULL,
->pid BIGINT FOREIGN KEY (pid) REFERENCES provinces(id); 不能建立成功;
mysql>CREATE TABLE users(id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,username VARCHAR(10) NOT NULL,
->pid SMALLINT  UNSIGNED  FOREIGN KEY (pid) REFERENCES provinces(id);建立成功;
查看:mysql>SHOW INDEXES FROM provinces\G; mysql>SHOW CREATE TABLE users;
3二、外鍵約束的參照操做:
CASCADE:從父表刪除或更新且自動刪除或更新字表中匹配的行;
SET NULL:從父表刪除或更新行,並設置字表中的外鍵列爲NULL。若是使用該選項,必須保證字表列沒有指定NOT NULL;
RESTRICT:拒絕對父表的刪除或更新操做。 ; NO ACTION:標準SQL的關鍵字,在MySQL中與RESTRICT相同
例:mysql>CREATE TABLE users1(
id SMALLINT(5) UNSIGNED AUTO_INCREMENT,
username VARCHAR(10) NOT NULL PRIMARY KEY,
pid SMALLINT(5)  UNSIGNED DEFAULT NULL,
FOREIGN KEY (pid) REFERENCES provinces(id) ON DELETE CASCADE
->);必須如今父表中插入信息
mysql>INSERT provinces(pname) VALUES('A'),VALUES('B'),VALUES('C');
mysql>INSERT users1(username,pid)VALUES('Tom',3);成功但mysql>INSERT users1(username,pid)VALUES('John',7);錯
mysql>INSERT users1(username,pid)VALUES('Roose',3);
mysql>DELETE FROM provices where id=3;字表中也不存在了。
3三、表級約束與列級約束:
對一個數據列創建的約束,稱爲列級約束。;對多個數據列創建的約束,稱爲表級約束。;
列級約束既能夠在列定義時聲明,也能夠在列定義後聲明,;表級約束只能在列定義後聲明。
3四、修改數據表:
添加單列:ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name]若是省略FIRST or AFTER則會放到末尾
mysql>show columns from users1;
mysql>ALTER TABLE users1 ADD age TINYINT UNSIGNED NOT NULL DEFAULT 10;
mysql>SHOW COLUMNS FROM users;
mysql>ALTER TABLE users1 ADD password VARCHAR(32) NOT NULL AFTER username;
mysql>ALTER TABLE users1 ADD truename VARCHAR(20) NOT NULL FIRST; mysql>SHOW COLUMNS FROM users1;
添加多列:
ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition,...)
刪除列:
ALTER TABLE tbl_name DROP [COLUMN] col_name; mysql>ALTER TABLE users1 DROP password, DROP age;
3五、添加主鍵約束:
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)
例:mysql>CREATE TABLE users2( username VARCHAR(10) NOT NULL, pid SMALLINT  UNSIGNED );
mysql>ALTER TABLE users2 ADD id smallint unsigned;
mysql>ALTER TABLE users2 ADD CONSTRAINT PK_users2_id PRIMARY KEY (id);添加主鍵約束  mysql>SHOW COLUMNS  FROM users2;
mysql>ALTER TABLE users2 ADD UNIQUE (username);添加惟一約束
mysql>ALTER TABLE users2 ADD FOREIGN KEY (pid) REFERENCES provinces(id);外鍵約束
添加/刪除默認約束
ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal|DROP DEFAULT}
mysql>ALTER TABLE users2 ADD age TINYINT UNSIGNED NOT NULL; mysql>ALTER TABLE users2  ALTER age SET DEFAULT 15;
mysql>ALTER TABLE users2  ALTER age DROP DEFAULT;
刪除主鍵約束
ALTER TABLE tbl_name DROP PRIMARY KEY
刪除惟一約束
ALTER TABLE tbl_name DROP {INDEX|KEY} index_name
mysql>SHOW INDEXES FROM  users2 查看約束的名字  
mysql>ALTER TABLE users2 DROP INDEX username;
刪除外鍵約束:
ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol
mysql>SHOW CREATE TABLE user2 查看外鍵約束名字;
mysql>ALTER TABLE users2 DROP FOREIGN KEY  user2_ibfk_1; mysql>ALTER TABLE users2 DROP INDEX pid刪除索引
修改列定義:
ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition  [FIRST|AFTER col_name]
mysql>ALTER TABLE user2 MODIFY id SMALLINT UNSIGNED NOT NULL FIRST;修改位置
mysql>ALTER TABLE user2 MODIFY id TINYINT UNSIGNED NOT NULL;修改列定義
修改列名稱:
ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]
mysql>ALTER TABLE use2 CHARNGE pid p_id TINYINT UNSIGNED NOT NULL;
數據表格改名:
方法1:ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name
方法2:RENAME TABLE tbL_name TO new_tbl_name [,tbl_name2 TO new_tbl_name2]...
例:mysql>ALTER TABLE users2 RENAME users3; mysql>show tables;
例:mysql>RENAME TABLE users3 TO users2;mysql

相關文章
相關標籤/搜索