MYSQL簡單總結
SQL的分類
數據查詢語言(DQL - data querylanguage):select(針對表中數據)
數據操縱語言(DML - datamanipulation language):insert、delete、update(針對表中數據)
數據定義語言(DDL - data definitionlanguage):create、drop、alter(針對表的結構)
事務控制語言(TCL - transactionalcontrol language):commit、rollback
數據控制語言(DCL - data controllanguage):grant、revoke
數據類型
- varchar
* 可變長度字符串:根據實際長度動態分配儲存空間
* varchar(3)表示存儲的數據不能超過3個字符長度
- char
* 定長字符串:不用判斷,效率高
* varchar和char相比:
- 都是字符串類型
- varchar比較只能,可以根據實際數據長度分配空間,比較節省空間,但是在分配的時候需要執行相關的判斷程序,效率較低
- char不需要動態分配空間,所以執行效率很高,但是可能會導致空間浪費。
- 若字段中數據不具備伸縮性,如性別,建議採用char類型存儲
- 若字段數據具備很強伸縮性,建議採用varchar類型存儲
* char(3) 表示存儲的數據不能超過3個字符長度
- int
* 整數型
* int(3)表示最大可以存儲999
- bigint
* 長整型
* 對應java程序中的long類型
- float
* 浮點型單精度
- double
* 浮點型雙精度
* double(7,2),表示7個有效數字,兩個小數位
- date
* 日期類型
* 在實際開發中爲了通用,所以日期類型一般不使用,一般採用字符代替
- blob
* Binary LargeObject 二進制大對象
* 專門存儲圖片、聲音、視頻等數據
* 數據庫表中存儲一個圖片是很常見的,但是存儲一個比較大的時間是很少的,一般都是提供一個視頻的鏈接地址
- clob
* CharacterLarge Object 字符大對象
* 可以存儲比較大的文本,4G+的字符串可以被儲存
- 其他...
DQL
格式:SELECT <變量名> FROM <表名> WHERE <條件> GROUP BY <變量名> HAVING <條件> ORDER BY <變量名> limit a,b; a,b爲數字
select ename from emo where ename = trim(‘ SMITH ‘);
select empno,ename,sal from emp where sal between 3000 and 5000;
select ename,sal fromemp where sal not in (1500,5000);
select job,avg(sal)from emp group by job having avg(sal)> 1500;
select ename,salfrom emp order by sal desc limit 2,7;
分組函數:count、sum、avg、max、min
分組函數不能直接使用在where語句中
select sal from emp where sal > avg(sal)
select sum(sal) from emp;
select avg(sal) from emp;
select max(sal) from emp;
select min(sal) from emp;
select count(ename) from emp; (count(字段),當前該字段不爲null的計數)
select count(*) from emp;【14個】
select count(*) from emp where comm is null;【10個】(count(*)是滿足某個條件的計數)
簡單語句
show tables; 查看錶格
desc dept;查看錶結構
show databases;查看所有database
show tables from world; 查看其它庫的表
show create table city;查看建表語句
select database();查看當前所使用數據庫名稱
select version();查看版本
創建數據庫
create database bjpowernode;
use database bjpowernode;
drop database bjpowernode;
連接
select e1.ename empname,e2.enameleadername,from emp e1 inner join emp e2 on e1.mgr = e2.empno;
select e.ename,d.dnamefrom emp e right join dept d on e.deptno= d.deptno;
select e.ename,d.dnamefrom dept d left join emp e on e.deptno= d.deptno
創建表格
drop table if exists t_user;
create table t_user(
idint(10),
namevarchar(32) not null,
emailvarchar(128),
constraint t_user_email_unique unique(email),
constraint t_user_id_pk primary key(id) auto_increment
);
增刪改表的數據
insert into t_student(no) values(1);
update t_student set name = 'zhangsan'where no = 3;
delete from t_student where no = 3;
增刪改表的結構
ALTER TABLE t_student ADD tel VARCHAR(10);
ALTER TABLE t_student DROP tel;
ALTER TABLE t_student MODIFY tel VARCHAR(20);
事務的四個特徵(ACID)
-原子性(A)
*事務是最小的工作單元,不可再分
-一致性(C)
*事務要求所有的DML語句操作的時候,必須同時成功或者同時失敗
-隔離性(I)
*事務A和事務B之間具有隔離
-持久性(D)
*是事務的保證,事務終結的標誌。【內存中的數據持久到硬盤文件中】
關於事務的術語【不是SQL語句】
-開啓事務: start transaction
-結束事務: end transaction
-提交事務: commit transaction
-回滾事務: rollback transaction