一、sql
是結構化查詢語言,這種語言在rdbms(關係型資料庫管理系統)中使用,oracle,sqlserver,mysql都在使用sql。
分為5類:
dql:資料查詢語言,select
dml:資料操作語言,insert,update,delete
tpl:事務處理語言,commit,rollback
dcl:資料控制語言,grant,revoke
ddl:資料定義語言,create,drop,alter
sql語句的書寫規則
不區分大小寫,也就是說select,select,select,執行時效果是一樣的。
可以單行來書寫,也可以書寫多行,建議分多行書寫,增強**可讀性,通常以子句為單位進行分行。
關鍵字不可以縮寫、分開以及跨行書寫,如select不可以寫成sel或sele ct等形式。
關鍵字最好使用大寫,其它語法元素(如列名、表名等)小寫。
tab和縮排的使用可以提高程式的可讀性。
二、select語句
基本select語句語法
select [distinct]
from table;
解釋:select是固定的關鍵字,代表的意思是「查詢」。distinct用【】括起來了,
所以代表的意思是可以選擇用或不用的,是去重複的意思。
*代表查詢所有的列。column代表列名。expression是表示式。【alias】別名。
例0:建一張表emp0,包括empid int primary key auto_increment,empname varchar(50),
salary int。
create table emp0(
empid int primary key auto_increment,
empname varchar(50),
salary int
);insert into emp0 values(1,'li1',5000);
insert into emp0 values(2,'li2',5000);
insert into emp0 values(3,'li3',6000);
insert into emp0 values(4,'li4',7000);
insert into emp0 values(5,'li5',null);
1查一下員工表中有幾種工資,分別是多少?
select distinct salary from emp0;
2查一下員工表中全部的資訊
select * from emp0;
3查一下員工表中empid,empname,salary*1.1的資訊
select empid,empname,salary*1.1 from emp0;
4查一下員工表中empid,empname,salary*1.1的資訊,並且第三列的名稱改名為 'new salary'。
select empid as id,empname,salary*1.1 as 'new salary' from emp0;
5 select empid,empname,ifnull(salary,0)+500 from emp0;
例1:select的基本用法
use demo1;
select distinct job from emp;
select * from emp;
select ename,empno from emp;
select ename,empno,sal*8 from emp;
select ename,empno,sal*8 as newsal from emp;
例2:空值
select * from emp where comm is null;
練習3: select empno,ename,ifnull(sal,0)+ifnull(comm,0) from emp;
ifnull(sal,0)函式的作用是,判斷sal是否為null,如果為空則認為是0,如果不為空,
則就是它的實際值。
列別名用來重新命名列的顯示標題
如果select語句中包含計算列,通常使用列別名來重新定義列標題。
使用列別名的方法
方式1:列名 列別名
方式2:列名 as 列別名
以下三種情況列別名兩側需要新增雙引號
列別名中包含有空格
列別名中要求區分大小寫
列別名中包含有特殊字元
消除重複行
在select字句中使用關鍵字distinct可消除重複行。
使用where條件來限定行。
select * from x where id between 1 and 3;
select * from x where id in (1,3);
like:模糊匹配
%:匹配0到多個任意字元
_:匹配乙個任意字元
查詢emp表中ename的值以s開頭的所有記錄
select * from emp where ename like 'g%';
查詢emp表中ename的值帶s的所有記錄
select * from emp where ename like '%g%';
查詢emp表中ename的值以s開頭的並且後面是乙個字元的所有記錄
select * from emp where ename like 'g_';
例:select ename from emp where ename like 'g%';
查詢ename以g開頭的資訊。
例:select ename from emp where ename like '_l%';
查詢開頭有乙個任意字元,第二個字元是l,後面任意的資訊。
例:select ename from emp where ename like 'man@_%' escape '@';
查詢以man_開頭的資訊。
is null
例:select * from emp where comm is null;
邏輯運算子:and or not
練習9:
1 select ename,job,sal from emp where sal >2000 and job in ('manager','salesman');
2 select ename,job,sal from emp where sal >2000 and job='manager' or job='salesman';
3 select ename,job,sal from emp where (deptno in(10,20)) and (sal between 3000 and 5000);
4 select ename,hiredate,job from emp where (hiredate between '1981-01-01' and '1981-12-31' )and (job not like 'sales%');
4 select ename,hiredate,job from emp where year(hiredate)=1981 and (job not like 'sales%');
5 select ename,job,deptno from emp where
job in ('salesman','manager') and
deptno in (10,20) and ename like '%a%';
order by 子句
格式:select [distinct]
from 表名
[where 條件]
[order by [asc|desc],…];
解釋:asc代表公升序,desc代表降序,預設是公升序
例:select * from emp order by hiredate;
例:select * from emp order by hiredate desc;
例:select * from emp order by hiredate asc;
限制記錄的行數:(一般在實現分頁的時候用)
limit [start,]length
例:select * from x order by id limit 2,2;
解釋:上個例題limit 2,2 第乙個2表示起始記錄為2,也就是從
第3條記錄開始。第二個2,表示共2條記錄。
三、顯示表的結構
desc emp;
SQL語句(七)簡單查詢
簡單資訊查詢 例1 查詢所有學生的資訊 學生 student 所有學生 不限定班級 性別 年齡等條件 所有資訊 所有字段,select from student 例2 查詢指定字段 查詢 班級 學號和姓名資訊 select sclass,snumb,sname from student 查詢有哪些班...
SQL語句 簡單查詢命令
以下如果是數字型別的鍵值,就不應該加單引號。等於 select from persons where city beijing select from 要查詢的表名 where 鍵名 鍵值 不等於 select from persons where city beijing select from ...
SQL語句(七)簡單查詢
簡單資訊查詢 例1 查詢所有學生的資訊 學生 student 所有學生 不限定班級 性別 年齡等條件 所有資訊 所有字段,select from student 例2 查詢指定字段 查詢 班級 學號和姓名資訊 select sclass,snumb,sname from student 查詢有哪些班...