­

非後端開發Mysql日常使用小結

  • 2019 年 10 月 16 日
  • 筆記

資料庫的五個概念

  1. 資料庫伺服器
  2. 資料庫
  3. 數據表
  4. 數據欄位
  5. 數據行

那麼這裡下面既是對上面幾個概念進行基本的日常操作。

資料庫引擎使用

這裡僅僅只介紹常用的兩種引擎,而InnoDB是從MySQL 5.6.版本以後InnoDB就是作為默認啟動使用的存儲引擎。

(1) InnoDB          a,支援ACID,簡單地說就是支援事務完整性、一致性;          b,支援行鎖,以及類似ORACLE的一致性讀,多用戶並發;          c,獨有的聚集索引主鍵設計方式,可大幅提升並發讀寫性能;          d,支援外鍵;          e,支援崩潰數據自修復;          InnoDB設計目標是處理大容量資料庫系統,它的CPU利用率是其它基於磁碟的關係資料庫引擎所不能比的。           它是一個可靠地事務處理引擎,不支援全文本搜索    (2) MyISAM          a,不支援 每次查詢具有原子性          b,只支援表所          c,強調的是性能,其執行數 度比InnoDB類型更快,但是不提供事務支援          d,如果執行大量的SELECT,MyISAM是更好的選擇          e,缺點:就是不能在表損壞後恢複數據。(是不能主動恢復)

既然知道了這倆種引擎的優缺點,那麼寫一下幾個常用的API操作。

show engines;   --顯示所有可用的引擎    show table status from myDB;   --查看myDB資料庫下的所有表使用的引擎    show create table 表名;         --指定查看錶名的所有段名以及引擎    create table 表名(id int primary key, name varchar(50)) engine=MyISAM; --建表的時候指定引擎    alter table 表名 Engine= MyISAM; --建完表後修改引擎為MyISAM

當然,也可以通過修改配置文件my.ini在[mysqld]最後添加為上default-storage-engine=InnoDB,重啟服務,資料庫默認的引擎修改為InnoDB。

資料庫操作

>net start mysql  //啟動資料庫和停止net stop mysql    >mysql -u root -p   //默認登陸本機(-h是主機地址)    >SELECT USER();   //顯示當前用戶    >create database 資料庫名;    //創建資料庫    >SELECT DATABASE();   //顯示當前使用資料庫    >SHOW DATABASES        //顯示所有資料庫列表    >USE DATABASE 庫名;     //使用該資料庫    >DROP DATABASE 庫名   //刪除資料庫    >CMD終端:mysqladmin -u用戶名 -p舊密碼 password 新密碼   //修改密碼    >mysql語句:set password for 用戶名@localhost = password('新密碼'); 

數據表操作

>SHOW TABLES;   //列出庫中所有的表    >DESCRIBE table1;  //查看錶結構    >show columns from 數據表;   //顯示錶的所有段名以及類型    >CREATE TABLE 表名 (欄位名 VARCHAR(20), 欄位名 CHAR(1)); //增加數據表和欄位名    >DROP TABLE 表名;  //刪除表    >alter table stu rename as students;  //將舊錶明stu改為新表明students。

表欄位操作

添加欄位

語法:ALTER TABLE 表名 ADD COLUMN 欄位名 欄位類型 DEFAULT NULL;    示例:ALTER TABLE dictionary ADD COLUMN calss VARCHAR(10) DEFAULT NULL;  -- dictionary是表名

修改欄位名稱

語法:ALTER TABLE 表名 CHANGE 舊欄位名 新欄位名 新欄位類型 DEFAULT NULL;    示例:ALTER TABLE dictionary CHANGE calss class VARCHAR(10) DEFAULT NULL;

刪除欄位

語法:ALTER TABLE 表名 DROP COLUMN 欄位名    示例:ALTER TABLE dictionary DROP COLUMN calss;

批量增加欄位

bagin;                                           //事務開始  alter table em_day_data add f_day_house7 int(11);  alter table em_day_data add f_day_house8 int(11);  alter table em_day_data add f_day_house9 int(11);  alter table em_day_data add f_day_house10 int(11);  commit;                                             //提交事務,事務結束

數據增刪改查

MySQL語句忽略大小寫的。每張數據表只能存在一個主鍵。

Tip: 由於數據表的首個欄位名(就是主鍵,假如是id)是不能重複命名的(建議使用id,因為每張表只能存在一個主鍵),所以建議刪除的時候使用(where id=1)鍵名來定位匹配更好。

var  sql = 'SELECT * FROM websites';   --查詢整個websites表所有數據  var  sql = 'SELECT name FROM websites';  --查詢整個websites表name欄位數據

-- websites表必須存在(Id,name,url,alexa,country)這些欄位名  var  addSql = 'INSERT INTO websites(Id,name,url,alexa,country) VALUES(2,"taobao","http://wwww.taobao.com","3","CN")';    insert into table1(id,name,url,country) values(6,"lucas","https://wwww.lucas.com","CN");

-- where是定位到上面的增加數據(可以使用任何"欄位名=值"來匹配),並更改倆個數據  var modSql = 'UPDATE websites SET name = "facebook",url = "http://www.facebook.com" WHERE Id = 2';    var modSql = 'update websites SET alexa="12" where name="taobao"';  --定位name欄位為taobao並更新了alexa欄位的值

var delSql = 'DELETE FROM websites where id=2';  -- 刪除id=2的數據(當然)    -- 刪除name=lucas的數據(建議使用id,因為每張表只能存在一個主鍵),因為他會將表中所有name=lucas的值全部刪除  delete from websites where name="lucas";