mysql(1)

概念:mysql

數據庫(DataBase,DB):指長期保存在計算機的存儲設備上,按照必定規則組織起來,能夠被各類用戶或應用共享的數據集合。(文件系統)sql

數據庫:存儲、維護和管理數據的集合。數據庫

登錄:安全

mysq -u root -p 123函數

sql分類:spa

DDL**(Data Definition Language):數據定義語言,用來定義數據庫對象:庫、表、列等;對象

CREATE、 ALTER、DROPblog

create tables mydb1;排序

show tables;ip

alter tables mydb1 character set utf8;

drop tables mydb1;

use mydb1;

create table 表名(

字段1 字段類型,

字段2 字段類型,

...

字段n 字段類型

);

經常使用數據類型:

int:整型

double:浮點型,例如double(5,2)表示最多5位,其中必須有2位小數,即最大值爲999.99;

char:固定長度字符串類型; char(10)  'abc       '

varchar:可變長度字符串類型;varchar(10) 'abc'

text:字符串類型;

blob:字節類型;

date:日期類型,格式爲:yyyy-MM-dd;

time:時間類型,格式爲:hh:mm:ss

timestamp:時間戳類型 yyyy-MM-dd hh:mm:ss  會自動賦值

datetime:日期時間類型 yyyy-MM-dd hh:mm:ss

DML***(Data Manipulation Language):數據操做語言,用來定義數據庫記錄(數據);

    INSERT、 UPDATE、 DELETE

查詢表中的全部數據

SELECT * FROM 表名; 

DML是對表中的數據進行增、刪、改的操做。不要與DDL混淆了。

INSERT 、UPDATE、 DELETE

小知識:

在mysql中,字符串類型和日期類型都要用單引號括起來。'tom'  '2015-09-04'

空值:null  

insert into emp(id,name,age) values(1,'zhangsan',18);

updata mydb1 set name='zhangsan' age=18 where name='zhangsan';

updata emp set salary=salary+500 where name='zahgnsan';

delete from emp where name='zhangsan';

DCL(Data Control Language):數據控制語言,用來定義訪問權限和安全級別;

DQL*****(Data Query Language):數據查詢語言,用來查詢記錄(數據)。

SELECT

* 注意:sql語句以;結尾

DQL數據查詢語言 (重要)

數據庫執行DQL語句不會對數據進行改變,而是讓數據庫發送結果集給客戶端。

查詢返回的結果集是一張虛擬表。

語法:

SELECT selection_list /*要查詢的列名稱*/

  FROM table_list /*要查詢的表名稱*/

  WHERE condition /*行條件*/

  GROUP BY grouping_columns /*對結果分組*/

  HAVING condition /*分組後的行條件*/

  ORDER BY sorting_columns /*對結果分組*/

  LIMIT offset_start, row_count /*結果限定*/

 

create tables stu(

sid int,

sname var(50),

sage int

);

insert into stu (sid,sname,sage) values(1,'tom',23);

基礎查詢

1.查詢全部信息:

select * from stu;

2.查詢指定列

select  sid sname from stu;

條件查詢

select * from stu where age>50 and gender='female';

select * from stu where sname='lisi' or sid='1001;

select * from stu where sid IN(1001,1002,1004);

select * from stu where sid NOTIN(1001,1002,1004);

select * from stu where sname is null;

模糊查詢

當想查詢姓名中包含a字母的學生時就須要使用模糊查詢了。模糊查詢須要使用關鍵字LIKE。

通配符:

_ 任意一個字符

%:任意0~n個字符

'%張%'  '張_'

select * from stu where sname like '%li%';

字段控制查詢

1.去除重複記錄

seletc  distinct salary from emp;

2.查看僱員的月薪與佣金之和

select *,sal+ifnull(comm,0) from emp;

3.給列名添加別名

select *,sal+ifnull(comm,0) total from emp;

排序  order by 列名 asc(默認) desc

1.查詢全部學生記錄,按年齡升序排序

select * from stu order by age;

2.查詢全部學生記錄,按年齡降序排序

select * from stu 

3.查詢全部學生記錄,按年齡降序排序

select * from stu order by age desc;

4.查詢全部僱員,按月薪降序排序,若是月薪相同時,按編號升序排序

select * from emp order by sal desc ,empo asc;

聚合函數sum avg max min count

聚合函數是用來作縱向運算的函數:

  • COUNT():統計指定列不爲NULL的記錄行數;
  • MAX():計算指定列的最大值,若是指定列是字符串類型,那麼使用字符串排序運算;
  • MIN():計算指定列的最小值,若是指定列是字符串類型,那麼使用字符串排序運算;
  • SUM():計算指定列的數值和,若是指定列類型不是數值類型,那麼計算結果爲0;
  • AVG():計算指定列的平均值,若是指定列類型不是數值類型,那麼計算結果爲0;

1.查詢emp表中月薪大於2500的人數:

select count(*) from emp where sal>2500;

2.統計月薪與佣金之和大於2500元的人數:

select count(*) as cnt from emp where sal+ifnull(comm,0)>2500;

3.查詢有佣金的人數,有領導的人數:

select  count(sal),count(manager) from emp;

4.查詢全部僱員月薪和:

select sum(sal) from emp;

5.查詢全部僱員月薪和,以及全部僱員佣金和:

select sum(sal),sum(comm) from emp;

6.查詢全部僱員月薪和,以及全部僱員佣金和:

select sum(sal+ifnull(comm,0)) from emp;

7.統計全部員工平均工資:

select avg(sal) from emp;

8.查詢最高工資和最低工資:

select max(sal),min(sal) from emp;

分組查詢

1.查詢每一個部門的部門編號和每一個部門的工資和:

select deptno,sum(sal) from emp group by deptno;

2.查詢每一個部門的部門編號以及每一個部門的人數:

select deptno,count(*) from emp group by deptno;

3.查詢每一個部門的部門編號以及每一個部門工資大於1500的人數:

select deptno,count(*) from emp where sal>2500 group by deptno;

  注:having與where的區別:

1.having是在分組後對數據進行過濾.

  where是在分組前對數據進行過濾

2.having後面能夠使用聚合函數(統計函數)

          where後面不能夠使用聚合函數。

WHERE是對分組前記錄的條件,若是某行記錄沒有知足WHERE子句的條件,那麼這行記錄不會參加分組;而HAVING是對分組後數據的約束。  

查詢工資總和大於9000的部門編號以及工資和:

select deptno,sum(sal) from emp group by deptno having sum(sal)>9000;

LIMIT  方言

LIMIT用來限定查詢結果的起始行,以及總行數。

注意,起始行從0開始,即第一行開始!

8.1 查詢5行記錄,起始行從0開始

SELECT * FROM emp LIMIT 0, 5;

 

注意,起始行從0開始,即第一行開始!

 

8.2 查詢10行記錄,起始行從3開始

SELECT * FROM emp LIMIT 3, 10;

 

8.3 分頁查詢

若是一頁記錄爲10條,但願查看第3頁記錄應該怎麼查呢?

  1. 第一頁記錄起始行爲0,一共查詢10行;
  2. 第二頁記錄起始行爲10,一共查詢10行;
  3. 第三頁記錄起始行爲20,一共查詢10行;

8.3 查詢代碼的書寫順序執行順序

查詢語句書寫順序:select – from- where- group by- having- order by-limit

查詢語句執行順序:from - where -group by - having - select - order by-limit

相關文章
相關標籤/搜索