資料庫的五個概念 1. 資料庫伺服器 2. 資料庫 3. 數據表 4. 數據欄位 5. 數據行 那麼這裡下麵既是對上面幾個概念進行基本的日常操作。 資料庫引擎使用 這裡僅僅只介紹常用的兩種引擎,而InnoDB是從MySQL 5.6.版本以後InnoDB就是作為預設啟動使用的存儲引擎。 既然知道了這倆 ...
資料庫的五個概念
- 資料庫伺服器
- 資料庫
- 數據表
- 數據欄位
- 數據行
那麼這裡下麵既是對上面幾個概念進行基本的日常操作。
資料庫引擎使用
這裡僅僅只介紹常用的兩種引擎,而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";