mysql 快速入门_MySql快速入门
一、數據庫基本概念
數據庫:信息存儲的倉庫,包括一系列的關系措施!
表:一個數據庫中可以有若干張表(形式上你可以看出我們日常生活中建立的表)
字段:表里面的信息會分若干個欄目來存,這些欄目呢,我們在數據庫技術中叫"字段",欄目里面存的具體信息叫"字段值"
記錄:一條信息我們叫一條記錄
一個數據庫管理系統中可以建立若干個數據庫,每個數據庫中又可以建立若干張表,每張表中可以有若干條記錄。
二、MySQL支持的數據類型
數值類型、日期類型、字符串類型
三、(My)SQL使用入門
2.SQL分類
1)DDL(Data Definition Languages)語句
數據定義語句,通過這類語言可以對數據庫進行創建刪除更改
2)DML(Data Manipulation Language)語句
數據操縱語句,用于添加、刪除、更新和查詢數據庫記錄并檢查數據完整性
3)DCL(Data Control Language)語句
數據控制語句,通過此類語句可以對數據庫的相關權限進行設置
3.DDL語句
對數據庫內部的對象進行創建、刪除、修改等操作的語言,DDL語句更多的是由數據庫管理員(DBA)使用,開發人員一般很少使用
登錄mysql之后就可以使用sql語句對數據庫進行各種操作啦!
show databases;查看數據庫列表
1)創建數據庫
1>create database 數據庫名;
2>選擇要操作的數據庫:USE 數據庫; 對于要操作的數據庫我們需要使用use來選擇一下!
3>查看數據庫中所有的數據表show tables;
2)刪除數據庫
drop database 數據庫名稱;
3)創建表(在哪個數據庫里面創建表需要先使用use選擇到那個要操作的數據庫)
1>創建表
create table 表名(
字段1名 字段1類型 列的約束條件,
字段2名 字段2類型 列的約束條件,
...
)
2>創建完表之后可以查看表的定義
desc 表名;
3>查看創建表的SQL語句
show create table 表名 \G
\G選項使得記錄能夠按照字段豎向排列,以便更好地顯示內容較長的記錄,\G后面無需再加分號
4)刪除表
drop table 表名;
5)修改表
1>修改表的字段類型
alter table 表名 modify [column] 字段定義 [first|after 字段名];
2>增加表字段
alter table 表名 add [column] 字段定義 [first|after 字段名];
3>刪除表字段
alter table 表名 drop [column] 字段名;
4>字段改名
alter table 表名 change [column] 舊的字段名 字段定義 [first|after 字段名];
注:change與modify都可以修改表的定義,不同的是change后面需要接兩次列名,不方便,但是優點是change可以修改字段名稱
5>修改字段排列排序
前面介紹的字段增加和修改語法(add/change/modify)中,都有一個可選項first|after 字段名,這個選擇可以用來修改
字段在表中的位置新增的字段默認是加載在表中最后位置,而change/modify 默認都不會改變字段的位置
alter table t1 modify id2 tinyint first;
alter table t1 modify id2 tinyint after id1;
注意:change/first|after 字段名 這些關鍵字都是屬于MySQL在標準SQL上的擴展,在其他的數據庫上不一定適用
6)更改表名
alter table 表名 rename [to] 新的表名;
4.DML語句
查詢 select * from 表名;
1)插入記錄
1>插入記錄
insert into 表名(字段1,字段2,字段3,...,字段n) values(值1,值2,值3,...,值n);
也可以不用指定字段名,但是values后面的順序應該和字段的排序一致
2>一次插入多條記錄
insert into 表名(字段1,字段2,字段3,...,字段n)
values
(值1,值2,值3,...,值n),
(值1,值2,值3,...,值n),
(值1,值2,值3,...,值n)
;
2)更新記錄
1>更新一個表
update 表名 set 字段1=值1,字段2=值2,...字段n=值n [where 條件];
2>更新多個表中數據
update 表1,表2,...表n set 表1.字段1=表達式1,表n.字段n=表達式n [where 條件];
注:多表更新更多的用在根據一個表的字段來動態的更新另外一個表的字段
簡單實例:
update t1,t2 set t1.age=2000,t2.age=3000 where t1.id=1 and t2.id=1;
3)刪除記錄
1>刪除單表中的數據
delete from 表名 [where 條件];
2>刪除多個表中的數據
delete 表1,表2,...表n from 表1,表2,...表n [where 條件];
不管是單表還是多表,不加where條件將會把表中的所有記錄刪除,所以操作時一定要小心。
4)查詢記錄
select 字段名|* from 表名;
1>查詢不重復的記錄
SELECT distinct field1,field2 FROM 表名;
只要field1,field2任何一個字段有不同就會被選擇!
一般使用distinct,只篩選一個字段!
2>條件查詢
注:條件字段比較符號:
=,,>=,<=,!=等比較運算符
多個條件之間可以使用or and等
where 后面接條件
select * from 表名 where 條件
3>排序和限制
排序:
asc:由低到高,也是默認值
select * from employee order by salary asc;
desc:由高到底
select * from employee order by salary desc;
多個字段排序
select * from employee order by salary desc,id desc;
限制:
在語句的最后面 加上limit 數字1,數字2 來進行查詢數量的限制。
limit 數字1,數字2 數字1代表從第幾條記錄開啟取(是從0開始的),數字2代表取幾條!
4>聚合
①sum求和
select sum(字段名) from 表名;
②count記錄總數
select count(*|字段名) from 表名;
③max最大值
select max(字段名) from 表名;
④min最小值
select min(字段名) from 表名;
⑤GROUP BY分類聚合
select department,sum(salary) from employee group by department;
⑥WITH ROLLUP分類聚合后的結果進行再匯總
select sum(salary) from employee group by department with rollup;
⑦HAVING
注意:having和where的區別在于,having是對聚合后的結果進行條件過濾,而where是在聚合前就對記錄進行過濾
,應該盡可能的對記錄進行先過濾!
select sum(salary) from employee group by department having sum(salary)>1000;
在一起使用:select sum(id),max(id),min(id),count(*) from a1;
5>表連接
需求:顯示多個表中的字段的時候即可使用表連接
連接分類
內連接:選取兩張表中相互匹配的記錄
也可以這么寫 跟SQL的一樣? select * from 表名 a inner join 表名 b on a.字段=b.字段;
外連接:不僅僅選取兩張相互匹配的記錄,并且會選出其他不匹配的記錄
舉例:
內連接:select 表.字段,.... from 表1名,表2名,... where [匹配的條件比如 表1.字段=表2.字段];
select 語句可以給字段起別名!直接寫在需要查詢顯示的字段的后面就ok
給表起別名
外連接
1)左連接
概念:包含左邊表中的所有記錄(包括右表中沒有和它匹配的記錄)
select ename,deptname from emp left join dept on emp.deptno=dept.deptno;
2)右連接
概念:包含右邊表中的所有記錄(包括左表中沒有和它匹配的記錄)
左連接和右連接是可以相互轉換的!
6>子查詢
需求:一個查詢需要另外一個查詢的結果參與的時候
用于子查詢的關鍵字:
in
語法:select * from employee where id in(select eid from employee_late);
in 在..里面
注意點 in后面的子語句必須只返回一個字段
若查詢結果唯一(只有一條)可以使用=代替in
not in
與in相反
exists
語法:select語句 where exists(select 語句);
exists:后面那個子語句有沒有查詢出記錄來,如果查詢出記錄來返回true,否則就是false
并且查詢出來的記錄的具體的值是NULL也是沒有關系,也是返回true.
not exits
與exists相反
1)select * from emp where deptno in(select deptno from dept);
2)若查詢結果唯一可以使用=代替in
select * from emp where deptno=(select deptno from dept limit 1);
7>記錄聯合
我們常常會碰到需要將兩個表或者多個表的數據按照一定的查詢條件查詢出來后,將結果合并到一起顯示這是就需要用到記錄聯合
多個select 語句用
UNION或者UNION ALL隔開即可實現
區別: 前者 會將多個查詢結果合并后并且進行去除重復后返回
后者 則直接合并并不去除重復
聯合的條件:查詢的列個數要相等
總結
以上是生活随笔為你收集整理的mysql 快速入门_MySql快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html通过php获取mysql数据_怎
- 下一篇: php5.4 win10 mysql_w