1. 程式人生 > >Day2 MySql函數以及單表查詢

Day2 MySql函數以及單表查詢

大小 reat set time ont 隨機 pad 單表查詢 編號

SQL中的運算符

算術運算符

--算術運算符(子句)
select 1+1;
select 2-1;
select 2*2;
select 3/4;   --0.75
select 3/0;   --NULL
select 3 div 4; --0

比較運算符> < >= <= != =

--0表示false,1表示true
select 1=1; --1
select 1!=1; --0

邏輯運算符 and or !

select 1=1 and 1!=1;

位運算符 | ^ &

select 2|3;  --3
select 2&3; --2 select 2^3; --1

DML(insert、update、delete)

insert(插入)

語法

insert into tname[(字段…)] values(值…)

例如

--插入數據
insert into student values(1,zs,18);
--只給部分字段添加值
insert into student(sname,age) values(ls,19);
--批量插入多條記錄
insert into student(sname,age) values
(ww,19),(zs,18),(tq,20); --student表有數據,stu表復制student表數據 --復制表結構 create table stu select * from student where 1 = 0; --復制表數據 insert into stu select * from student;

update(修改)

語法

update tname set 字段=新值 [where 條件]

例如

--ww的年齡+1
update student set age=age+1 where sname=ww;

delete(刪除)

語法

delete from tname [where 條件]

例如

delete from student where sid =5;

delete和truncate的區別

  1. delete不會重置自增,truncate會重置

   2.delete刪除是行級刪除,一行一行刪除,效率低;truncate效率高。

DQL

emp(員工)表

技術分享圖片

dept(部門)表

技術分享圖片

例如

--查詢所有數據(結果集)
select * from emp;
--查詢部分字段  名稱和工資
select ename,sal from emp;
--查詢工資>2000的員工信息(單一條件查詢)
select * from emp where sal > 2000;
--查詢在20號部門且工資大於2000的員工信息(多個條件)
select * from emp where deptno = 20 and sal > 2000
--查詢在20號部門或者工資大於2000的員工信息
select * from emp where deptno = 20 or sal > 2000;
--查詢工資大於等於1000小於等於3000的員工信息(範圍查詢)
select * from emp where sal >= 1000 and sal <= 3000;
select * from emp where sal between 1000 and 3000;
--查詢員工編號為7788,7369,7521的員工信息(集合查詢)
select * from emp where empno = 7788 or empno = 7369 or empno=7521
select * from emp where empno in (7788,7369,7521);
--查詢所有的職位信息(去重)
select DISTINCT job from emp;
--別名(字段,表)   [as] 別名
select empno 員工編號,ename 員工姓名 from emp;
select ename,sal*1.05 as sal from emp;
select * from emp e;
--查詢所有沒有獎金comm為null的員工信息(null的判斷)
select * from emp where comm is not null;
--查詢所有S打頭的員工信息(模糊查詢)  % 代表0到多個字符 _代表占一個字符
select * from emp where ename like S%;
--查詢所有N結尾的員工信息(模糊查詢)
select * from emp where ename like %N;
--查詢所有包含S的員工信息(模糊查詢)
select * from emp where ename like %A%;
--查詢所有第二個字符為L的員工信息
select * from emp where ename like __L%;
--排序(order by 字段 [asc] | desc)
--升序排序
select * from emp order by sal desc;
--按照工資的降序排序,工資一樣的按照empno的升序排序
select * from emp order by sal desc,empno ASC
--限制結果查詢(limit m,n)  分頁查詢    m代表起始索引,n代表記錄的數目
--僅適用於mysql
select * from emp limit 5,5;

函數

1.單行函數

a)數學函數

--數學函數
select ABS(10);    --絕對值
select CEIL(-12.3);  --向上取整
select FLOOR(12.5);  --向下取整
select ROUND(12.5);  --四舍五入
select ROUND(12.49,-1);
select POW(3,3);     --冪運算
select RAND();     --隨機數[0,1)

b)字符函數

--字符串函數
select LENGTH(ename) from emp;  --獲取字符串長度
select length(this is an apple);
select LOWER(ename) from emp;   --轉換為小寫
select UPPER(this is an apple); --轉換大小寫
select SUBSTR(aabbcc,1,2);  --從1開始
select LPAD(smith,10,*);  --左填充 開始字符串   總長度   padstr填充的字符
select RPAD(smith,10,*);  --右填充
select TRIM(      smi th);   --去空格

c)日期函數

--日期
select NOW();
select SYSDATE();
select CURRENT_DATE();  --當前日期
select CURRENT_TIME();  --當前時間
select YEAR(1998-09-09);
select MONTH(1998-09-09); 
select DAY(1998-09-08);
select DATE_ADD(1998-09-08,INTERVAL 2 YEAR);

2.聚合函數

count、sum、avg、max、min

--員工數(統計記錄數)
select * from emp;
select count(*) from emp;
select count(1) from emp;
--統計非空字段數目
select count(comm) from emp;
--SUM
select sum(sal) from emp;
--AVG
select avg(sal) from emp;
--MAX
select max(sal) from emp;
--MIN
select min(sal) from emp;

3.分組函數

group by 分組字段

--分組函數  GROUP BY  deptno
--每個部門的平均工資
--group by根據條件字段的值返回相應的記錄數;但是在select子句中,只能出現聚合函數或者分組的條件字段。
select deptno,avg(sal) from emp group by deptno;
--各個職位員工數? job
select job,count(*) from emp group by job;

having 將分組之後的結果集再次進行檢索

--平均工資大於2000的部門的部門編號和平均工資?
  --1.求出每個部門的平均工資
  --2.平均工資>2000
  select deptno,avg(sal) from emp group by deptno having avg(sal) > 2000;

where和having的區別

--查詢工資大於1500的每個部門的部門編號和平均工資(先過濾再分組)
select deptno,avg(sal) from emp where sal > 1500 group by deptno;
--查詢平均工資大於1500的部門編號和平均工資
select deptno,avg(sal) from emp group by deptno having avg(sal) > 2000;

4.加密函數

MD5、SHA、PASSWORD

--加密函數 
select MD5(root);
select SHA(root);
select PASSWORD(root);

外鍵約束

--添加外鍵約束
alter table student add CONSTRAINT FK_CID FOREIGN KEY(cid) REFERENCES classroom(cid)

Day2 MySql函數以及單表查詢