Day2 MySql函數以及單表查詢
阿新 • • 發佈:2018-01-12
大小 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; --3select 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的區別
- 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函數以及單表查詢