1. 程式人生 > >數據庫詳細入門教程

數據庫詳細入門教程

刪除數據 表結構 arch 刪除數據庫 1.2 tro host 顯示 唯一性約束

創建用戶:CREATE USER [email protected] IDENTIFIED BY ‘密碼‘ 主機名可以為空,為空默認為%權限,表示所有主機可連接
 CREATE USER jredu@localhost IDENTIFIED BY jredu;
GRANT TO給用戶分配權限;GRANT 權限名 ON 數據庫名 表名 TO [email protected] ALL表示所有權限 *.* 表示所有數據中的所有表 GRANT ALL ON *.* TO [email protected];
 GRANT SELECT,INSERT,DELETE,UPDATE ON mysql.`user` TO 
jredu@localhost;
REVOKE FROM 刪除用戶權限
REVOKE ALL ON *.* FROM jredu@localhost;
創建數據庫 CREATE DATABASE [IF NOT EXISTS]數據庫名 [CHARACTER SET [=]‘UTF8‘]; 如果省略 IF NOT EXISTS 在創建數據庫時,會報錯 CREATE DATABASE IF NOT EXISTS myDB3 CHARACTER SET ‘UTF8‘; 刪除數據庫 DROP DATABASE [IF EXISTS] 數據庫名;
DROP DATABASE IF EXISTS mydb2;
查詢本機中所有的數據庫 SHOW DATABASE;
SHOW DATABASE;
使用mydb這個數據庫,表示下面的查詢,都將默認針對mydb數據庫
USE mydb;
查詢數據庫中所有數據表 SHOW TABLES [FROM 數據庫]
SHOW TABLES FROM mysql;
mySQL中常用的數據類型 一、字符型: CHAR(N):固定N個字符長度的字符串,如果長度不夠,會自動空格補齊 N的返回 0~255; VARCHAR(): 存儲可變長度的字符串,最常用的。0~65535 * 10; TEXT: 可以存儲可變長度的字符串,常用於發布文章等 0~65535*10^2;
TINYTEXT: 0~(2^8-1)*10; MEDIUMTEXT: 0~2^24-1 * 10^3; LONGTEXT: 0~2^32-1 * 10^4; 二、整形: TINYINT:無符號 0~(2^8-1);有符號 -2^7 - 2^7-1; SMALLINT:無符號 0~2^16-1 有符號 -2^15 - 2^15-1; MEDIUMINT: 無符號 0~2^24-1 有符號 -2^23 - 2^23-1; INT:無符號 0~2^32-1 有符號 -2^31 - 2^31-1; 最常用的。 BIGINT:無符號 0~2^64-1 有符號 -2^63 - 2^63-1; 三、浮點型 FLOAT:可以精確到小數點後7位有效數字 DOUBLE:可以精確到小數點後15到16位有效數字 四、日期時間數據類型 由於時間存儲使用字符串或者時間戳存儲,所以數據庫中幾乎不用數據類型 DATE 存儲日期和時間數據 TIMESTAMP: 比 DATE 更精確 數據庫設計的三大範式; 1、第一範式 1NF:數據表中的每一列必須是不可拆分的最小單元,也就是確保每一列的原子性 例如 userInfo:‘山東省煙臺市 13181602111‘; userAds:‘山東省煙臺市‘ userTel:‘13181602111‘ 2、第二範式 2NF:滿足1NF後,要求表中的所有列都必須依賴於主鍵,而不能有任何一列與主鍵沒有關系。也就 是說一個表只描述一件事情 例如: 訂單表:只能描述訂單相關的信息,所以所有的字段必須與訂單id相關 產品表:只能描述產品相關的信息,所以所有的字段必須與產品id相關 因此, 不能同時存在產品和訂單的信息 3、第三範式 3NF:滿足2NF後,要求:表中的每一列都要與主鍵直接相關,而不是間接相關,表中的每一列,只能依賴於主鍵。 例如: 訂單表中,需要有客戶相關信息,在分離出客戶表之後,在訂單表中,只需要有一個客戶id即可,而不能有其他的客戶信息。因為,其他的用戶信息是直接關聯與用戶id而不是關聯於訂單ID [第二範式與第三範式的本質區別] 在於有沒有分出兩張表,第二範式是說一張表中如果包含了多種不同實體的屬性,那麽必須分成多張表 第三範式要求已經分好了多張表的話,那麽,一張表中只能有另一張表的ID(主鍵)而不能有其他的任何信息,(其他的任何信息,一律用主鍵在另一張表中查詢) 創建表 IF NOT EXISTS 可以省略,省略後重復創建報錯,如果不省略,則創建是會檢測表是否已存在,如果表已存在,則不再執行創建語句 定義列 列名 數據類型 列定義關鍵字 常用的列定義關鍵字 UNSIGNED 設置列為無符號列,只能設置類型為數字類型的列 AUTO_INCREMENT:設置列為自動增長列,自動增長列必須是主鍵 [主鍵] 1、主鍵的註意事項 主鍵默認非空,主鍵默認唯一性約束,只有主鍵才能設置自動增長(主鍵不一定自增,自增一定是主鍵) 2、設置主鍵的方式 在列定義時設置, id INT UNSIGNED PRIMARY KEY, 在列定義完成後設置 PRIMARY KEY(id) PRIMARY KEY(id) : 設置主鍵約束 NOT NULL:設置列為非空 該字段不能為空 UNIQUE:設置唯一性約束,該字段不能出現重復值 DEFAULT 1.2 設置默認值約束, height DOUBLE(3,2) DEFAULT 1.2 height如果不輸入,默認為1.2 FOREIGN KEY 設置外鍵約束 [外鍵] 1、設置外鍵有哪些註意事項? 只有INNODB 的數據庫引擎支持外鍵 修改my.ini文件設置 default-storage-engine=INNODB 外鍵與參照列的數據類型必須相同,數值型要求長度與無符號都相同,字符串要求類型相同,長度可以不同 設置外鍵的字段必須要有索引,若果沒有索引,設置外鍵時會自動生成一個索引 2、設置外鍵的語法 [CONSTRAINT 外鍵名 FOREIGN KEY (外鍵字段) REFERENCES 參照表(參照字段)] [ON DELETE SET NULL ON UPDATE CASCADE] --> 設置參照完整性 3、外鍵約束的參照完整性操作 參照操作 當對參照表的參照字段進行刪除或更新是,外鍵表中的外鍵應如何應對 參照操作可選值 RESTRICT 拒絕參照表刪除或更新參照字段(默認) NO ACTION 與RESTRICT相同,但這個指令只在MySQL中生效 CASCADE 刪除或更新參照表的參照字段時,外鍵表的記錄同步刪除更新 SET NULL 刪除或更新參照表的參照字段時,外鍵表的外鍵設為NULL 顯示表結構
SHOW COLUMNS FROM table1;
顯示表的建表語句
SHOW CREATE TABLE table1;
刪除表
DROP TABLE IF EXISTS table1;
修改表名 ALTER TABLE 舊表名 RENAME [TO] 新表名;
ALTER TABLE table1 RENAME TO table2;
同時修改多表 RENAME TABLE table2 TO table1【,`user` TO user1…………】;
RENAME TABLE table2 TO table1,`user` TO user1;
修改字段 列 ALTER TABLE 表名 CHANGE 舊列名 新列名 列定義 [FIRST | AFTER 某一列]; FIRST 將這個字段調整為表格度一列, AFTER 某一列 將這個字段放在某一列後面
ALTER TABLE table1 CHANGE `name` `username` VARCHAR(200) NOT NULL AFTER age;
MODIFY 只修改列定義,不能改名
ALTER TABLE table1 MODIFY `name` `username` VARCHAR(200) NOT NULL AFTER age;
刪除表中某一列
ALTER TABLE table1 DROP height;
新增一列 必選部分 ALTER TABLE table1 ADD height DOUBLE(8,2)
ALTER TABLE table1 ADD height DOUBLE(8,2) DEFAULT 1.2 AFTER age;
新增多列 不能調整列的位置,只能插在最後
ALTER TABLE table1 ADD(
weight DOUBLE(3,2) UNSIGNED,
school VARCHAR(255)
);
增加主鍵約束
ALTER TABLE table1 ADD PRIMARY KEY(id);
刪除主鍵約束
ALTER TABLE table1 DROP PRIMARY KEY;
新增唯一性約束
ALTER TABLE table1 UNIQUE KEY(username);
刪除唯一性約束 由於創建唯一性約束時會默認創建索引,所以刪除時,需刪除索引
ALTER TABLE table1 DROP INDEX username;
設置默認值約束
ALTER TABLE table1 ALTER age SET DEFAULT 20;
刪除默認值約束
ALTER TABLE table1 ALTER age DROP DEFAULT;
設置外鍵約束 必選部分 ALTER TABLE table1 ADD CONSTRAINT waijianming FOREIGN KEY (clsid) REFERENCES classes(id)
ALTER TABLE table1 ADD CONSTRAINT waijianming FOREIGN KEY (clsid) REFERENCES classes(id) ON DELETE SET NULL ON UPDATE CASCADE;
刪除外鍵約束,由於創建外鍵時會默認創建索引,所以在刪除外鍵後,需要在刪除索引
ALTER TABLE table1 DROP FOREIGN KEY table1_fk_classes;
ALTER TABLE table1 DROP INDEX table1_fk_classes;
ALTER TABLE table1 DROP INDEX table1_fk_classes;

數據庫詳細入門教程