JAVA入門到精通-第59講-sqlServer基本查詢
阿新 • • 發佈:2018-11-29
創建 ica 1-1 操作 family 還要 base 順序 account sqlServer基本查詢
dept/emp表:
MGR:直接上級的編號 HIREDATE:入職日期 COMM:獎金 DEPTNO:部門編號 創建dept表 創建emp表 deptno 是外鍵,foreign key refercnce dept (deptno) reference 引用; 針對外鍵: dept: emp: select查詢: *能不用則不用;對資源是種浪費; 整個數據帶過來是很大的; distinct 區別; distinct只會拋棄完全一樣的; select distinct deptno,ename from emp 消除結果完全相同的那一行;
查詢計算:
列的別名;
如何處理空?
有一個函數,解決null問題---isnull;
comm為空,返回0;否則,返回本身的值;
isnull提供了一個函數進行判斷是否為null;
時間查詢計算:
執行查詢的時候,數據庫會試圖轉換datetime格式;
--between and
between 效率會高一點點;包含取兩邊都取;
--like模糊查詢
%任意的;_ 表示單個字符;
==================================
MGR:直接上級的編號 HIREDATE:入職日期 COMM:獎金 DEPTNO:部門編號 創建dept表 創建emp表 deptno 是外鍵,foreign key refercnce dept (deptno) reference 引用; 針對外鍵: dept: emp: select查詢: *能不用則不用;對資源是種浪費; 整個數據帶過來是很大的; distinct 區別; distinct只會拋棄完全一樣的; select distinct deptno,ename from emp 消除結果完全相同的那一行;
==================================
1 數據庫例解主鍵、外鍵、多功能查詢,見下例: 2 --建庫 3create database test 4 5 6 --創建dept表 7 create table dept--部門表 8 (deptno int primary key,--部門編號 9 dname nvarchar(30),--部門名稱 10 loc nvarchar(30)--所在地 11 ) 12 13 14 --建表emp 15 create table emp--表名 16 (empno int primary key,--編號 17 ename nvarchar(30),--名字 18 job nvarchar(30),--職位 19mgr int,--上級編號 20 hiredate datetime,--入職日期 21 sal numeric(10,2),--薪水 22 comm numeric(10,2),--獎金 23 deptno int foreign key references dept(deptno)--部門編號(做成外鍵) 24 ) 25 26 27 --針對外鍵,請註意: 28 --1、外鍵只能指向主鍵 29 --2、外鍵和主鍵的數據類型要一致 30 31 32 --向dept表中添加數據 33 insert into dept values (10,‘accounting‘,‘new york‘) 34 insert into dept values (20,‘research‘,‘dallas‘) 35 insert into dept values (30,‘sales‘,‘chicago‘) 36 insert into dept values (40,‘operations‘,‘boston‘) 37 38 39 --向emp表中添加數據 40 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7369,‘smith‘,‘clerk‘,7902,‘1980-12-17‘,800.00,20) 41 insert into emp values(7499,‘allen‘,‘salesman‘,7698,‘1981-2-20‘,1600.00,300.00,30) 42 insert into emp values(7521,‘ward‘,‘salesman‘,7698,‘1981-2-22‘,1250.00,500.00,30) 43 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7566,‘jones‘,‘manager‘,7839,‘1981-4-2‘,2975.00,20) 44 insert into emp values(7654,‘martin‘,‘salesman‘,7698,‘1981-9-28‘,1250.00,1400.00,30) 45 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7698,‘blake‘,‘manager‘,7839,‘1981-5-1‘,2850.00,30) 46 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7782,‘clark‘,‘manager‘,7839,‘1981-6-9‘,2450.00,10) 47 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7788,‘scott‘,‘analyst‘,7566,‘1987-4-19‘,3000.00,20) 48 insert into emp (empno,ename,job,hiredate,sal,deptno) values (7839,‘king‘,‘president‘,‘1981-11-17‘,5000.00,10) 49 insert into emp values (7844,‘turner‘,‘salesman‘,7698,‘1981-9-8‘,1500.00,0.00,30) 50 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7876,‘adams‘,‘clerk‘,7788,‘1987-5-23‘,1100.00,20) 51 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7900,‘james‘,‘clerk‘,7698,‘1981-12-3‘,950.00,30) 52 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7902,‘ford‘,‘analyst‘,7566,‘1981-12-3‘,3000.00,20) 53 insert into emp (empno,ename,job,mgr,hiredate,sal,deptno) values (7934,‘miller‘,‘clerk‘,7782,‘1982-1-23‘,1300.00,10) 54 55 56 --查看dept表內容 57 select * from dept 58 59 --查看emp表內容 60 select * from emp 61 62 --查詢所有列 63 --語法:select * from 表名 where 條件 64 select * from emp 65 66 --查詢指定列(sql sever不區分大小寫,oracle區分大小寫) 67 --語法:select 字段1,字段2 from 表名 where 條件 68 69 --查詢smith的薪水,工作,所在部門 70 select sal,job,deptno from emp where ename=‘smith‘ 71 72 --取消重復行(distinct只能消除完全一樣的行,保留一行) 73 --語法:select distinct 字段 from 表名 where 條件 74 75 --統計共有多少個部門編號 76 select distinct deptno from emp 77 78 --使用算數表達式 79 --顯示每個雇員的年工資+獎金 80 select ename"姓名",sal*13+isnull(comm,0)*13"年收入" from emp 81 82 --使用where子句 83 --如何顯示工資高於3000的員工 84 select ename"員工姓名",sal"工資高於3000" from emp where sal>3000 85 86 --如何查找1982-1-1後入職的員工 87 select ename"員工姓名",hiredate"1982-1-1後入職日期" from emp where hiredate>‘1982-1-1‘ 88 89 --如何顯示工資在2000到2500的員工情況 90 select * from emp where sal>=2000 and sal<=2500 91 select * from emp where sal between 2000 and 2500 92 93 --如何使用like操作符(模糊查詢) 94 --%:表示0到多個字符 _:表示單個字符 95 --如何顯示首字符為S的員工姓名和工資 96 select ename,sal from emp where ename like ‘s%‘ 97 98 --如何顯示第三個字符為o的所有員工的姓名和工資 99 select ename,sal from emp where ename like ‘__O%‘ 100 101 --在where條件中使用in 102 --如何顯示empno為123,345,800...的雇員情況 103 select * from emp where empno in(123,345,800) 104 105 --使用is null的操作符 106 --如何顯示沒有上級的雇員的情況 107 select * from emp where mgr is null 108 109 --使用邏輯操作符號 110 --查詢工資高於500或是崗位為manager的雇員,同時還要滿足他們的姓名首寫字母為大寫的J 111 select * from emp where (sal>500 or job=‘manager‘) and ename like ‘J%‘ 112 113 --使用order by字句(asc默認是升序排列,desc為降序排列) 114 --如何按照工資的從低到高的順序顯示雇員的信息 115 select sal from emp order by sal asc 116 --按照部門號升序而雇員的工資降序排列 117 --order by可以根據不同的字段排序 118 select deptno,sal from emp order by deptno,sal desc 119 120 --使用列的別名排序(別名需要使用""號圈中) 121 select ename,sal*12"年薪" from emp order by "年薪"
JAVA入門到精通-第59講-sqlServer基本查詢