一、學習環境MySQL 5.7社區版Navicat for MySQL百度網盤下載鏈接:https://pan.baidu.com/s/1yGnznwoZ8CaMgrCsDBhKAQ二、MySQL 與 Oracle 的區別實例區別:MySQL 是輕量型資料庫,開源免費。Oracle 是收費的而且價格... ...
一、學習環境
- MySQL 5.7社區版
- Navicat for MySQL
- 百度網盤下載鏈接:https://pan.baidu.com/s/1yGnznwoZ8CaMgrCsDBhKAQ
二、MySQL 與 Oracle 的區別
實例區別:
- MySQL 是輕量型資料庫,開源免費。
- Oracle 是收費的而且價格非常高。
- MySQL 一個實例可以操作多個庫,而 Oracle 一個實例只能對應一個庫。
- MySQL 安裝完後 300M 而 Oracle 有 3G 左右。
操作區別:
- 主鍵: MySQL 一般使用自動增長類型,而 Oracle 則需要使用序列對象。
- 單引號的處理: MySQL 里可以用雙引號包起字元串,ORACLE 里只可以用單引號包 起字元串。
- 分頁的 SQL 語句: MYSQL 用 LIMIT,而 Oracle 需要使用內建視圖和 rownum 偽列。
- 事務處理:MySQL 預設是自動提交,而 Oracle 預設不自動提交,需要用戶 CTL 語言 進行事務提交。
【註意】:在 MySQL 中,預設情況下,事務是自動提交的,也就是說,只要執行一條 DML 語句 就開啟了事物,並且提交了事務
三、常用命令
- 創建資料庫:create database 資料庫名 default character set 字元編碼
- 查看資料庫:show databases;
- 查看資料庫源碼:select schema_name,default_character_set_name from information_schema.sch emata where schema_name = ‘test’;
- 刪除資料庫:drop database 資料庫
- 選擇資料庫:use 需要選擇的庫的名稱
- 修改表名:alter table 舊表名 rename 新表名
- 修改列名:alter table 表名 change column 舊列名 新列名 類型
- 修改列的類型:alter table 表名 modify 列名 新類型
- 添加列:alter table 表名 add column 新列名 類型
- 刪除列:alter table 表名 drop column 列名
- 修改表實現約束添加或刪除:alter table 表名 [add|drop] 約束(列名)
- 添加有名字的約束:alter table 表名 add constraint 約束名 約束(列名)
- 刪除有名字的約束:alter table 表名 drop key 約束名
- 修改列為添加自動增長:alter table 表名 modify 列名 類型 auto_increment
- 添加外鍵約束:alter table 表名 add constraint 約束名 foreign key(列名) references 參照的表名(參照的列名)
- 刪除外鍵索引(索引名與約束名相同):alter table 表名 drop index 索引名
- 更新數據:update 表名 set 列名 = 值,列名 = 值 where 條件
- 刪除數據:delete from 表名 where 條件
- 清空表的數據(自動增長的數字被置為1):truncate table 表名
- 關閉MySQL 的事務自動提交:start transaction DML… commit|rollback
四、易忘知識總結
- DML、DDL、DCL的區別:
- DML:(data manipulation language)數據操縱語言,就是最常用到的select、update、insert、delete
- DDL:(data definition language)資料庫定義語言,創建表或視圖等等,create,alter,drop等等。DDL主要是用在定義或改變表的結構,數據類型,表之間的鏈接和約束等初始化工作上
- DCL:Data Control Language)數據控制語言,是用來設置或更改資料庫用戶或角色許可權的語句,包括(grant,deny,revoke等)語句。這個比較少用到。
2.檢查約束:目前MySQL不支持、Oracle支持
3.insert 插入數據的時候,主鍵的那個位置一般是自增長的,所以選擇全插入時,可以採用【default,0,null】進行占位。
4.自動增長的列:一個表只能有一個列有,類型必須時整數類型,只能添加到具備主鍵約束與唯一性約束的列上。刪除主鍵約束或唯一性約束,如果該列擁有自動增長能力,則需要先去掉自動增長然 後在刪除約束。
5.delete 與 truncate 的區別
- truncate 是整體刪除(速度較快), delete 是逐條刪除(速度較慢);
- truncate 不寫伺服器 log,delete 寫伺服器 log,也就是 truncate 效率比 delete 高的原因;
- truncate 是會重置自增值,相當於自增列會被置為初始值,又重新從 1 開始記錄,而 不是接著原來的值。而 delete 刪除以後,自增值仍然會繼續累加。
6.MySQL中並不支持||作為連字元,需要使用concat函數。在參數數量上與oracle的concat 函數有區別。()
還在更新中。。。