Day51、資料庫、遠端連線伺服器、查詢select語句、form字句、where字句、order by 子句
一、 資料庫介紹
1、資料庫簡介
設計資料庫要保證冗餘(重複)度小,資料的完整性
一套軟體 UI、業務邏輯層、持久層
DB(database):資料庫
DBMS(databasemanagement system):資料庫管理系統
DBA:資料庫管理員
DBS:資料庫系統
關係型資料庫(RDB)
什麼是關係型資料庫? 用二維表儲存資料
2、主流的關係型資料庫
商業型:
oracle Oracle(甲骨文)
db2 IBM
sql server 微軟
開源的 免費的
MySql Oracle
3、操作資料庫的語言---SQL
SQL:structured query language 結構化查詢語言
查詢(DQL): select
資料操作語言(DML): insert updata delete (增刪改資料)
資料定義語言(DDL): creat alter drop (增刪改物件)
事務處理語言(TCL): commit (提交) rollback(撤銷) savepoint
資料控制語言(DCL): grant(授予許可權) revoke(撤銷許可權)
4、遠端連線伺服器
步驟:
1) 連線伺服器
telnet ip
ip: 176.3.20.200
使用者名稱:oracle
密碼:oracle
2) 使用賬號登陸oracle
sqlplus :oracle提供的客戶端訪問工具
sqlplus 回車
輸入使用者名稱:oracle
輸入密碼:oracle
SQL> “輸入命令”
第二步可以簡化為:sqlplus使用者名稱/密碼
如: sqlplusoracle/oracle
5、描述表結構:
s_emp:員工資訊表
desc 表名;
desc s_emp;
在cmd下輸入命令:desc s_emp;
(
在ubuntu中 直接輸入sqlplus syetem/open123也可以
[email protected]:~$ sqlplus system/open123
SQL*Plus: Release 10.2.0.1.0- Production on Tue Oct 25 10:48:55 2016
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0- Production
With the Partitioning, OLAP and Data Miningoptions
SQL> desc s_emp;
)
SQL> desc s_emp;
Name Null? Type
------------------------------------------------- --------------
ID 員工編號 NOT NULL NUMBER(7)
LAST_NAME 姓 NOTNULL VARCHAR2(25)
FIRST_NAME 名 VARCHAR2(25)
USERID VARCHAR2(8)
START_DATE 入職日期 DATE
COMMENTS VARCHAR2(255)
MANAGER_ID 領導編號 NUMBER(7)
TITLE 職位 VARCHAR2(25)
DEPT_ID 部門編號 NUMBER(7)
SALARY 工資 NUMBER(11,2)
COMMISSION_PCT 提成 NUMBER(4,2)
Name:欄位名
Null?表示該欄位是否允許為空 NOT NULL不允許為空
Type:欄位的資料型別
NUMBER(p,s) 數值型別
p [1,38]
s [-84,127]
[-1.0e-130,1.0e+126 )
1~22 bytes
varchar2(n) 變長字串 <=4000字元
char 定長字串 <=2000字元
data 日期
二、查詢 select語句
1、from 子句
2、where 字句(條件字句)
3、order by (排序)
4、單行函式
5、多表查詢
6、組函式和分組
7、子查詢
三、form字句
select 欄位 from 表名; 指定從表名裡查詢欄位
1、 查詢一個欄位
/*列出所有員工的工資*/
select salary fromm s_emp ;
slect first_name from s_emp;
2、 查詢多個欄位
Select 欄位1,欄位2…….fom 表名
/*列出所有員工的id,first_name,salary */
select id,first_name,salary s_emp;
3、 查詢表中全部資料
select id,last_name,first_name,……,commission_pctfrom s_emp;
使用*表示所有欄位
select * from s_emp;
4、 使用算數運算(一般是數值型別的欄位)
+ - * /
/*列出員工的年收入*/
12*salary
12*salary+1000
select id,first_name,salary,salary*12 froms_emp;
5、 欄位或表示式的別名
欄位或表示式 [as] 別名
select id,first_name,salary as sal,salary*12yearsal from s_emp;
“”:用雙引號解決別名有非法字元的問題
select id,first_name,salary assal,salary*12 year sal from s_emp;error
select id,first_name,salary assal,salary*12 “year sal” from s_emp;
select id,first_name,salary assal,salary*12 “yearSal” from s_emp;
6、 sql中的字串
1) sql中如何表示字串
‘’ ‘ ‘ ‘a’ ‘hello world’
2) 字串拼接
|| ---字串拼勁
/*把first_name和last_name拼接起來 */
Select id,fist_name || last name name froms_emp;
/*在first_name和last_name之間拼接加一個點. */
Select id,fist_name || ‘.’|| last name name from s_emp;
Select id,fist_name || ‘’’|| last name name from s_emp; 錯誤
This’s
轉義:’
Select id,fist_name || ‘’’’|| last name name from s_emp;
7、
1)/*列出所有員工的年收入,包括提成*/
SQL> select commission_pct from s_emp;
12*salary*(1+commission_pct/100)
select id,first_name,salary,12*salary*(1+commission_pct/100)yearsalary from s_emp;
NULL值和任何數值進行算數運算,結果為NULL
2)處理NULL值的函式
nvl(par1,par2) :引數可以是任意型別,但是兩個引數型別必須一樣
當par1不為null時,返回par1,
當par2為空時,返回par2;
selectid,first_name,salary,nv1(12*salary*(1+commission_pct/100),12*salary) yearsalaryfrom s_emp; 不好
NULL值要儘早處理
nvl(commission_pct,0)
或selectid,first_name,salary,12*salary*(1+nvl(commission_pct,0)/100) yearsalary from s_emp;
8、 排重顯示
distinct
/*列出多有員工的職位(title)*/
select title from s_emp;
/*列出表中職位型別*/
select distinct title from s_emp;
多欄位排重
select distinct title,dept_id from s_emp;
四、where字句(條件字句)
1、where字句的作用是限制返回的行
符合條件的行被篩選出來,不符合條件的行被過濾掉
Select 欄位 from 表名 where 條件;
2、數字型別的條件
/*列出工資大於1500的員工的資訊*/
select id,first_name,salary from s_empwhere salary>1500;
select id,first_name,salary from s_empwhere 1=1; /*資料庫引擎不支援= =*/
select id, first_name,salary from s_empwhere 1!=1;
3、列出first_name為Mark的員工的資訊
Select id,first_name from s_emp wherefirst_name=’Mark’;
sql中不區分大小寫,但是字串型別的值是區分大小寫的
4、where字句能使用的運算子
< <= > >= != (<>、^=)
5、sql提供的運算子
1)表示一個閉區間 [a,b]
between a and b
/*列出工資在[1100,1450]之間的員工的資訊*/
Select id,first_name,salary from s_empwhere salary between 1100 and 1450;
/*列出編號在[10,15]範圍內的員工的id,first_name,dept_id*/
Select id,first_name,dept_id from s_empwhere id between 10 and 15;
2)表示欄位的取值在一個列表中(值1,值2,…..)
欄位 in(列表)
/*列出部門編號為32,42,50的部門的員工的資訊*/
select id,first_name,dept_id from s_empwhere dept_ip in(32,42,50);
3)模糊查詢
張小龍 龍小云 成龍 張三 李四
查詢名字中帶 龍的
萬用字元 % _
%:任意長度的任意字元
_:一個任意字元
like ‘%龍%’ 帶龍的
like ‘_龍’ 第二個字是龍的
/*列出員工的first_name的首字母為A的員工的資訊*/
select id,first_name from s_emp wherefirst_name like ‘A%’;
/*列出員工的first_name的第二個字母為a的員工的資訊*/
select id,first_name from s_emp wherefirst_name like '_a%';
user_tables
desc user_tables;
/*所有的表名*/
select table_name from user_tables;
/*從user_tables表中查詢出所有的S_開頭的表名*/
select table_name from user_table wheretable_name like ‘S_%’ 不合適
escape:表示哪一個字元後面的字元需要轉義
select table_name from user_tables wheretable_name like ‘S\_%’ escape ‘\’;
/*從user_tables表中查詢出所有的S_開頭的表名*/
select table_name from user_tables wheretable_name like ‘S\_\_%’ escape ‘\’;
4)NULL值的查詢
欄位 is null
select id,manager_id from s_emp wheremanager_id is null;
/*列出提成為空的員工的資訊*/
select id,commission_pct from s_emp wherecommission_pct is null;
6、sql提供的邏輯運算子
and :邏輯與
or:邏輯或
not:邏輯非
1) 使用and列出工資在[1100,1450]範圍內的員工的資訊
select id,salary from s_emp wheresalary>=1100 and salary=<1450 ;
2) 使用or列出部門編號為32,42,50的部門的員工的資訊
select id,first_name,dept_id from s_empwhere dept_id=32 or dept_id=42 or dept_id=50;
3) 列出提成不為null的員工的資訊
對立面
> <=
< >=
= !=
between and not between and
in not in(注意null值)
like not like
is null is not null
select id,commission_pct from s_emp wherecommission_pct is not null;
五、orderby 子句
1、 order by 子句總是在select語句的最後
select 欄位
from 表名
where 條件
orderby 子句
2、按照工資從高到低顯示員工的資訊
order by 排序標準 排序方式
排序標準: 欄位或表示式
排序方式:升序 asc (預設的排序方式 自然順序 字典順序)
降序 desc
select id,first_name,salary from s_empwhere 1=1 order by salary desc;
3、在排序時,NULL值按最大值處理
列出員工的資訊,按照manager_id升序排序
select id,first_name,manager_id from s_emporder by manager_id;
4、多欄位排序
Order by 欄位1 排序方式,欄位2 排序方式
按照工資從高到低顯示員工資訊,如果工資相同,則按id升序顯示
select id,first_name,salary from s_emporder by salary desc,id asc;
相關推薦
Day51、資料庫、遠端連線伺服器、查詢select語句、form字句、where字句、order by 子句
一、 資料庫介紹 1、資料庫簡介 設計資料庫要保證冗餘(重複)度小,資料的完整性 一套軟體 UI、業務邏輯層、持久層 DB(database):資料庫 DBMS(databasemanagement system):資料庫管理系統 DBA:資料庫管理員
Win10中使用Hyper-V安裝Ubuntu18.04、實現ssh遠端連線及Hpyer-V中Ubuntu全屏問題
利用Windows10自帶的虛擬機器Hyper-V安裝Ubuntu18.04,並實現配置主機通過ssh連線Hpyer-V中Ubuntu虛擬機器,同時解決Ubuntu虛擬機器在Hpyer-V全屏時不能鋪滿螢幕的問題 首先安裝Hyper-V:開啟Win10控制面板--程式--啟
Python遠端連線伺服器上的Oracle資料庫/mysql
讀取ORACLE資料庫 1、安裝plsql以及配置檔案instanctclient 在配置檔案中新增資料庫ip、埠等 BZPDA = (DESCRIPTION = (ADDRESS_LIST = &
遠端連線伺服器上的oracle資料庫幾種方法
第一種情況: 若oracle伺服器裝在本機上,那就不多說了,連線只是使用者名稱和密碼的問題了。不過要注意環境變數%ORACLE_HOME%/network/admin/是否設定。 第二種情況: 本機未安裝oracle伺服器,也未安裝oracle客戶端。但是安裝了pl
遠端連線伺服器資料庫
1、通過navicat通過需要連線的Ip,使用者名稱、密碼即可連線遠端資料庫,並且可以用eclipse訪問資料庫 2、通過遠端連線伺服器桌面,可以訪問遠端伺服器,並儲存檔案至本地: Win+R,輸入mstsc 在"遠端桌面連線"程式”中展開“選項”,選擇“本地資源”標籤; “本地裝置和資源/
Oracle資料庫-客戶端遠端連線伺服器
首先我們要知道Oracle是CS結構(客戶端伺服器),在今後正式工作後,公司中Oracle伺服器只有一臺,我們現在只是將伺服器與客戶端都在自己的筆記本上,但公司是不可能讓個人安裝伺服器的... 方式一: 1.找到listener.ora和tnsnames.ora
遠端連線伺服器上的MySQL資料庫出現1130錯誤的解決辦法
問題背景: win2003servers系統,mysql5.0資料庫, MySQL-Front連線工具(以下簡稱MF) 問題:通過MF連線資料庫,出現ERROR 1130 (HY000): Host ‘xxx.xxx.xxx.xxx’ i
遠端連線伺服器資料庫報錯:Host ‘XXXXXX’ is blocked because of many connection errors
一、我遇到的問題描述 使用Navicat for mysql連線公司的伺服器資料庫,報錯:Host ‘XXXXXX’ is blocked because of many connection errors 二、出現錯誤原因  
【轉】MySQL—1、資料庫索引的實現原理及查詢優化
MySQL官方對索引的定義為:索引(Index)是幫助MySQL高效獲取資料的資料結構。 使用索引的目的在於提高查詢效率,這篇文章梳理一下索引的實現原理和應用。 不同的儲存引擎索引實現的資料結構不同 MySQL支援諸多儲存引擎,而各種儲存引擎對索引的支援也各不相同,
Python遠端連線伺服器上的Oracle資料庫
1、正確的開啟方式 在你的IPython或者是Anaconda的jupyter中輸入一下程式碼,其中: ‘username’—— 使用者名稱 ‘password’——密碼 ‘192.168.1.1:1521/service_
sql 異常<除非另外還指定了 TOP、OFFSET 或 FOR XML,否則,ORDER BY 子句在視圖、內聯函數、派生表、子查詢和公用表表達式中無效。>
select sel top percent 異常 子句 cor 查詢 表達 問題:當子查詢內存在ORDER BY 字句時查詢會報錯 SQL: SELECT * FROM ( SELECT * FROM USER ORDER BY USER_CORD ) S. 解
Xmanager遠端連線伺服器
服務端 以cenos7為例,其他系統請見https://www.netsarang.com/faq/xmanager/list 將桌面轉換成lightdm 安裝依賴 yum install lightdm 如果安裝失敗,可以先嚐試下面的命令再安裝 yum
【資料庫遠端】MySQL資料庫開啟遠端連線方法
Mysql安裝後,預設不能外網直接訪問的,只能本機訪問,但是很多使用者需要外網訪問來備份資料、修改資料或者呼叫資料,mysql如何開啟遠端連線呢?下面就是MySQL資料庫開啟遠端連線方法。 登陸mysql操作命令如下直接複製即可 1.下面的命令是給予任何主機訪問資料的許可權 mysql&
win7 遠端連線伺服器出現身份驗證錯誤,又找不到加密Oracle修正
今天想用遠端桌面連線登入伺服器,結果,彈出一個錯誤的提示框:發生身份驗證錯誤,要求的函式不受支援。 然後在網上找了相關的教程,基本上所有的方法都是如下所示: 策略路徑:"計算機配置"->"管理模板"->"系統"->"憑據分
Linux系統遠端連線伺服器命令列模式
對於很多新手來說,如何用Windows遠端Linux作業系統,是個前進的大問題。如果這個問題前進不了,其他更別說了。 Linux或Max OS X系統電腦,登入步驟為 1.開啟ssh客戶端 2.使用者名稱:root 3.伺服器: 輸入伺服器的IP 埠預設為22 4.輸入伺服器密碼
本機直接遠端連線伺服器Jupyter notebook
最近一直在跑神經網路的作業,所以借到了GPU的伺服器,jupyter notebook 又是一個用Python寫dl作業的神器,於是免不了要學會怎麼遠端訪問jupyter notebook! 1. 問度娘 不靠譜…..大家分享的觀點主要
遠端連線伺服器:提示身份驗證錯誤 要求的函式不受支援 Windows遠端桌面連線
之前好好的能遠端桌面連線到伺服器,但是今天來就不能連線上了,並提示:身份驗證錯誤。要求的函式不受支援。猜想可能是Windows又更新了什麼鬼,後面查詢資料知道是由於CredSSP加密Oracle修正的原因,這裡我整理了下解決方案,希望能幫到你。 微軟給出解決方案: h
通過Navicat遠端連線伺服器MySQL伺服器
1.檢視伺服器mysql許可權 select user,host from mysql.user; 2.看host許可權是否為%,如果不是可通過MySQL Workbench進行修改; 進入MySQL Workbench並且連線資料庫 單擊Users and Privile
PyCharm遠端連線伺服器(pycharm-professional-2018.2.5)
第一步:File -- Setting(Ctrl+Alt+S) 第二步: 1)Project:D -- Project Interpreter -- 設定 -- Add -- SSH Interpreter -- New server configuration -- Host -
PyCharm 如何遠端連線伺服器編寫程式
寫在前面 我之前一直通過mstsc遠端伺服器修改程式碼,或者本地修改後上傳到遠端伺服器等,各種不爽,現在改用xshell,但有時候還是感覺不方便。於是乎,自己動手配置PyCharm遠端連線伺服器,這樣就不用總是到伺服器裡修改程式碼,而是直接在Windows下PyCharm裡修改後自動儲存,並實現自動同步更新