當前位置:首頁 » 編程語言 » sql技術手冊

sql技術手冊

發布時間: 2023-02-02 04:07:49

㈠ 自學sql server資料庫的書籍材料等比較好的,有推薦的么

你好!

sqlserver資料庫吧,資料也沒那麼多

好的書也就express出的那幾本,基本上網上msdn 上學學就可以了!

你要是學習oracle的話,可能會發現,這個比sqlserver 要好玩的多!

祝你好運

㈡ MySQL有什麼推薦的學習書籍

1、深入淺出mysql
2、高性能mysql
此外,簡單介紹下兩本書的特點和不同
1、從書的內容做比較
《深入淺出MySQL》從資料庫的基礎、開發、優化、管理維護4個方面對MySQL進行了詳細的介紹,其中每一部分都獨立成篇。
基礎篇主要適合於MySQL的初學者,內容包括MySQL的安裝與配置、SQL基礎、MySQL支持的數據類型、MySQL中的運算符、常用函數、圖形化工具的使用等。
開發篇主要適合於MySQL的設計和開發人員,內容包括表類型(存儲引擎)的選擇、選擇合適的數據類型、字元集、索引的設計和使用、視圖、存儲過程和函數、觸發器、事務控制和鎖定語句、SQL中的安全問題、SQL
Mode及相關問題等。
優化篇主要適合於開發人員和資料庫管理員,內容包括常用SQL技巧和常見問題、SQL優化、優化資料庫對象、鎖問題、優化
MySQL
Server、磁碟I/O問題、應用優化等。
管理維護篇主要適合於資料庫管理員,內容包括MySQL高級安裝和升級、MySQL中的常用工具、MySQL
日誌、備份與恢復、MySQL許可權與安全、MySQL復制、MySQL
Cluster、MySQL常見問題和應用技巧等。
《高性能MySQL(第2版)》榮獲2009年Jolt圖書大獎,是不可多得的分享MySQL實用經驗的圖書。它不但可以幫助MySQL初學者提高使用技巧,更為有經驗的MySQL
DBA指出了開發高性能MySQL應用的途徑。《高性能MySQL(第2版)》包含14章和4個附錄,內容覆蓋MySQL系統架構、設計應用技巧、SQL語句優化、伺服器性能調優、系統配置管理和安全設置、監控分析,以及復制、擴展和備份/還原等主題,每一章的內容自成體系,適合各領域技術人員作選擇性的閱讀。
2、從適用性來講
《深入淺出MySQL》融入了他們豐富的工作經驗和多年的使用心得,還提供了大量來自工作現場的實例,具有很強的實戰性和可操作性。適用於資料庫管理人員、資料庫開發人員、系統維護人員、資料庫初學者及其他資料庫從業人員,也可以作為大中專院校相關專業師生的參考用書和相關培訓機構的培訓教材。
《高性能MySQL(第2版)》不但適合資料庫管理員(dba)閱讀,也適合開發人員參考學習。不管是資料庫新手還是專家,相信都能從本書有所收獲。
總體來說,兩本說各有優劣,都可以看看,可以當做一步是基礎,一步是進階。

㈢ jsp頁面中怎麼導入jdbc連接mysql

在項目lib中加入mysql的jar包,然後寫jdbc鏈接信息即可,如下提供多種鏈接方式希望對你有幫助

java">JDBC連接MySQL
載入及注冊JDBC驅動程序
Class.forName("com.mysql.jdbc.Driver");
Class.forName("com.mysql.jdbc.Driver").newInstance();
JDBCURL定義驅動程序與數據源之間的連接
標准語法:
<protocol(主要通訊協議)>:<subprotocol(次要通訊協議,即驅動程序名稱)>:<datasourceidentifier(數據源)>
MySQL的JDBCURL格式:
jdbc:mysql//[hostname][:port]/[dbname][?param1=value1][&param2=value2]….

示例:jdbc:mysql://localhost:3306/sample_db?user=root&password=your_password

常見參數:
user用戶名
password密碼
autoReconnect聯機失敗,是否重新聯機(true/false)
maxReconnect嘗試重新聯機次數
initialTimeout嘗試重新聯機間隔
maxRows傳回最大行數
useUnicode是否使用Unicode字體編碼(true/false)
characterEncoding何種編碼(GB2312/UTF-8/…)
relaxAutocommit是否自動提交(true/false)
capitalizeTypeNames數據定義的名稱以大寫表示
建立連接對象
Stringurl="jdbc:mysql://localhost:3306/sample_db?user=root&password=your_password";
Connectioncon=DriverManager.getConnection(url);
建立SQL陳述式對象(StatementObject)
Statementstmt=con.createStatement();
執行SQL語句
executeQuery()
Stringquery="select*fromtest";
ResultSetrs=stmt.executeQuery(query);
結果集ResultSet
while(rs.next())
{rs.getString(1);rs.getInt(2);}
executeUpdate()
Stringupd="insertintotest(id,name)values(1001,xuzhaori)";
intcon=stmt.executeUpdate(upd);
execute()
示例:
try


{

}
catch(SQLExceptionsqle)
{
}
finally
{
}

Java類型和SQL類型技術手冊P421
PreparedStatement(預編語句)
PreparedStatementstmt=conn.prepareStatement("insertintotest(id,name)values(?,?)");
stmt.setInt(1,id);
stmt.setString(2,name);
註:一旦設定語句的參數值後,就可以多次執行改語句,直到調用clearParameters()方法將他清除為止
CallableStatement(預儲程序)技術手冊P430
JDBC2.0使用
ResultSet對象中的游標上下自由移動
Statementstmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSetrs=stmt.executeQuery("select*fromtest");

(intresultSetType,intresultSetConcuttency)throwsSQLException

resultSetType
TYPE_FORWARD_ONLY只能使用next()方法。
TYPE_SCROLL_SENSITIVE可以上下移動,可以取得改變後的值。
TYPE_SCROLL_INSENSITIVE可以上下移動。
resultSetConcuttency
CONCUR_READ_ONLY只讀
CONCUR_UPDATABLEResultSet對象可以執行資料庫的新增、修改、和移除

直接使用ResultSet對象執行更新數據
新增數據
Statementstmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE);
ResultSetuprs=stmt.executeQuery("select*fromtest");
uprs.moveToInsertRow();
uprs.updateInt(1,1001);
uprs.updateString(2,"許召日");
uprs.insertRow;
更新數據
Statementstmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE);
ResultSetuprs=stmt.executeQuery("select*fromtest");
uprs.last();
uprs.updateString("name","www.5itjob.com");
uprs.updateRow;
刪除數據
Statementstmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE);
ResultSetuprs=stmt.executeQuery("select*fromtest");
uprs.absolute(4);
uprs.deleteRow();

批處理
con.setAutoCommit(false);關閉自動認可模式
Statementstmt=con.createStatement();
int[]rows;
stmt.addBatch("insertintotestvalues(1001,xuzhaori)");
stmt.addBatch("insertintotestvalues(1002,xuyalin)");
rows=stmt.executeBatch();
con.commit();沒有任何錯誤,執行批處理stmt.executeBatch();

JNDI-數據源(DataSource)與連接池(ConnectionPool)
Tomcat的JDBC數據源設置技術手冊P439
連接池工具-ProxoolVar0.8.3技術手冊P446
設置web.xml
<?xmlversion="1.0"encoding="ISO-8859-1"?>
<!--<?xmlversion="1.0"encoding="GB2312"?>-->

<web-appxmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
….
<servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>

<init-param>
<param-name>propertyFile</param-name>
<param-value>WEB-INF/classes/Proxool.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
後端統計埠添加下列
<servlet>
<servlet-name>Admin</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Admin</servlet-name>
<url-pattern>/Admin</url-pattern>
</servlet-mapping>

….

</web-app>

配置Proxool.properties
jdbc-0.proxool.alias=JSPBook
jdbc-0.proxool.driver-class=com.mysql.jdbc.Driver
jdbc-0.proxool.driver-url=jdbc:mysql://localhost:3306/sample_db?user=root&password=browser&useUnicode=true&characterEncoding=UTF-8
jdbc-0.proxool.maximum-connection-count=10
jdbc-0.proxool.prototype-count=4
jdbc-0.proxool.house-keeping-test-sql=selectCURRENT_DATE
jdbc-0.proxool.verbose=true
jdbc-0.proxool.statistics=10s,1m,1d後端統計介面添加此行
jdbc-0.proxool.statistics-log-level=DEBUG
使用Proxool連接池
Connectioncon=DriverManager.getConnection("proxool.JSPBook");
Statementstmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
Stringquery="SELECT*FROMemployee";
ResultSetrs=stmt.executeQuery(query);

㈣ 請推薦一本基礎的SQL資料庫的書

《資料庫技術與應用——sql server》我上大學的教課書,感覺挺好的,通俗易懂的。

㈤ sql取各個欄目最新的幾條信息

--查每個分組前N條記錄

--> 生成測試數據: #T
IF OBJECT_ID('tempdb.dbo.#T') IS NOT NULL DROP TABLE #T
CREATE TABLE #T (ID VARCHAR(3),GID INT,Author VARCHAR(29),Title VARCHAR(39),Date DATETIME)
INSERT INTO #T
SELECT '001',1,'鄒建','深入淺出SQLServer2005開發管理與應用實例','2008-05-10' UNION ALL
SELECT '002',1,'胡百敬','SQLServer2005性能調校','2008-03-22' UNION ALL
SELECT '003',1,'格羅夫Groff.J.R.','SQL完全手冊','2009-07-01' UNION ALL
SELECT '004',1,'KalenDelaney','SQLServer2005技術內幕存儲引擎','2008-08-01' UNION ALL
SELECT '005',2,'Alex.Kriegel.Boris.M.Trukhnov','SQL寶典','2007-10-05' UNION ALL
SELECT '006',2,'飛思科技產品研發中心','SQLServer2000高級管理與開發','2007-09-10' UNION ALL
SELECT '007',2,'胡百敬','SQLServer2005資料庫開發詳解','2008-06-15' UNION ALL
SELECT '008',3,'陳浩奎','SQLServer2000存儲過程與XML編程','2005-09-01' UNION ALL
SELECT '009',3,'趙松濤','SQLServer2005系統管理實錄','2008-10-01' UNION ALL
SELECT '010',3,'黃占濤','SQL技術手冊','2006-01-01'

--SQL查詢如下:

--按GID分組,查每個分組中Date最新的前2條記錄

--1.欄位ID唯一時:
SELECT * FROM #T AS T WHERE ID IN(SELECT TOP 2 ID FROM #T WHERE GID=T.GID ORDER BY Date DESC)

--2.如果ID不唯一時:
SELECT * FROM #T AS T WHERE 2>(SELECT COUNT(*) FROM #T WHERE GID=T.GID AND Date>T.Date)

--SQL Server 2005 使用新方法

--3.使用ROW_NUMBER()進行排位分組
SELECT ID,GID,Author,Title,Date
FROM
(
SELECT rid=ROW_NUMBER() OVER(PARTITION BY GID ORDER BY Date DESC),*
FROM #T
) AS T
WHERE rid<=2

--4.使用APPLY
SELECT DISTINCT b.*
FROM #T AS a
CROSS APPLY
(
SELECT TOP(2) * FROM #T WHERE a.GID=GID ORDER BY Date DESC
) AS b

--結果
/*

ID GID Author Title Date
---- ----------- ----------------------------- --------------------------------------- -----------------------
003 1 格羅夫Groff.J.R. SQL完全手冊 2009-07-01 00:00:00.000
004 1 KalenDelaney SQLServer2005技術內幕存儲引擎 2008-08-01 00:00:00.000
005 2 Alex.Kriegel.Boris.M.Trukhnov SQL寶典 2007-10-05 00:00:00.000
007 2 胡百敬 SQLServer2005資料庫開發詳解 2008-06-15 00:00:00.000
009 3 趙松濤 SQLServer2005系統管理實錄 2008-10-01 00:00:00.000
010 3 黃占濤 SQL技術手冊 2006-01-01 00:00:00.000

(6 行受影響)
*/

--得到每組前幾條數據
--假設每組Col1中, Col3不會重復

--建立測試環境
Create Table TEST
(Col1 Varchar(10),
Col2 Varchar(10),
Col3 Int)
--插入數據
Insert TEST Select 'BD1V','Label', 4
Union All Select 'BD1V', 'BATT', 2
Union All Select 'BD1V', 'ODD', 3
Union All Select 'BD1V', 'HDD', 5
Union All Select 'BD1V', 'LCD', 1
Union All Select 'BD1W','HDD', 3
Union All Select 'BD1W','RAM', 8
Union All Select 'BD1W','TP CABLE', 5
Union All Select 'BD1W','LCD', 6
Union All Select 'BD1W','Label', 2
Union All Select 'BL3', 'LCD CABLE', 7
Union All Select 'BL3', 'LABEL', 6
Union All Select 'BL3', 'LCD', 5
Union All Select 'BL3', 'RAM', 1
Union All Select 'BL3D', 'Label', 4
GO
--測試
--方法一:
Select Col1, Col2, Col3 From TEST A
Where (Select Count(*) From TEST Where Col1 = A.Col1 And Col3 > A.Col3) < 3
Order By Col1, Col3 Desc
--方法二:
Select Col1, Col2, Col3 From TEST A
Where Exists (Select Count(*) From TEST Where Col1 = A.Col1 And Col3 > A.Col3 Having Count(*) < 3)
Order By Col1, Col3 Desc
--方法三:
Select Col1, Col2, Col3 From TEST A
Where Col3 In (Select TOP 3 Col3 From TEST Where Col1 = A.Col1 Order By Col3 Desc)
Order By Col1, Col3 Desc
GO
--刪除測試環境
Drop Table TEST
--結果
/*
Col1 Col2 Col3
BD1V HDD 5
BD1V Label 4
BD1V ODD 3
BD1W RAM 8
BD1W LCD 6
BD1W TP CABLE 5
BL3 LCD CABLE 7
BL3 LABEL 6
BL3 LCD 5
BL3D Label 4
*/

㈥ SQL語句實現

這是個sql語句的基本學習手冊
你可以自己查一下

SQL語句學習手冊實例版

表操作

例 1 對於表的教學管理資料庫中的表 STUDENTS ,可以定義如下:
CREATE TABLE STUDENTS
(SNO NUMERIC (6, 0) NOT NULL
SNAME CHAR (8) NOT NULL
AGE NUMERIC(3,0)
SEX CHAR(2)
BPLACE CHAR(20)
PRIMARY KEY(SNO))
例 2 對於表的教學管理資料庫中的表 ENROLLS ,可以定義如下:
CREATE TABLE ENROLLS
(SNO NUMERIC(6,0) NOT NULL
CNO CHAR(4) NOT NULL
GRADE INT
PRIMARY KEY(SNO,CNO)
FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO)
FOREIGN KEY(CNO) REFERENCES COURSES(CNO)
CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100)))
例 3 根據表的 STUDENTS 表,建立一個只包含學號、姓名、年齡的女學生表。
CREATE TABLE GIRL
AS SELECT SNO, SNAME, AGE
FROM STUDENTS
WHERE SEX=' 女 ';
例 4 刪除教師表 TEACHER 。
DROP TABLE TEACHER
例 5 在教師表中增加住址列。
ALTER TABLE TEACHERS
ADD (ADDR CHAR(50))
例 6 把 STUDENTS 表中的 BPLACE 列刪除,並且把引用 BPLACE 列的所有視圖和約束也一起刪除。
ALTER TABLE STUDENTS
DROP BPLACE CASCADE
例 7 補充定義 ENROLLS 表的主關鍵字。
ALTER TABLE ENROLLS
ADD PRIMARY KEY (SNO,CNO) ;

視圖操作(虛表)

例 9 建立一個只包括教師號、姓名和年齡的視圖 FACULTY 。 ( 在視圖定義中不能包含 ORDER BY 子句 )
CREATE VIEW FACULTY
AS SELECT TNO, TNAME, AGE
FROM TEACHERS
例 10 從學生表、課程表和選課表中產生一個視圖 GRADE_TABLE , 它包括學生姓名、課程名和成績。
CREATE VIEW GRADE_TABLE
AS SELECT SNAME,CNAME,GRADE
FROM STUDENTS,COURSES,ENROLLS
WHERE STUDENTS.SNO = ENROLLS.SNO AND
COURSES.CNO=ENROLLS.CNO
例 11 刪除視圖 GRADE_TABLE
DROP VIEW GRADE_TABLE RESTRICT

索引操作

例 12 在學生表中按學號建立索引。
CREATE UNIQUE INDEX ST
ON STUDENTS (SNO,ASC)
例 13 刪除按學號所建立的索引。
DROP INDEX ST

資料庫模式操作

例 14 創建一個簡易教學資料庫的資料庫模式 TEACHING_DB ,屬主為 ZHANG 。
CREATE SCHEMA TEACHING_DB AUTHRIZATION ZHANG
例 15 刪除簡易教學資料庫模式 TEACHING_DB 。(( 1 )選用 CASCADE ,即當刪除資料庫模式時,則本資料庫模式和其下屬的基本表、視圖、索引等全部被刪除。( 2 )選用 RESTRICT ,即本資料庫模式下屬的基本表、視圖、索引等事先已清除,才能刪除本資料庫模式,否則拒絕刪除。)
DROP SCHEMA TEACHING_DB CASCADE
單表操作

例 16 找出 3 個學分的課程號和課程名。
SELECT CNO, CNAME
FROM COURSES
WHERE CREDIT = 3
例 17 查詢年齡大於 22 歲的學生情況。
SELECT *
FROM STUDENTS
WHERE AGE > 22
例 18 找出籍貫為河北的男生的姓名和年齡。
SELECT SNAME, AGE
FROM STUDENTS
WHERE BPLACE = ' 河北 ' AND SEX = ' 男 '
例 19 找出年齡在 20 ~ 23 歲之間的學生的學號、姓名和年齡,並按年齡升序排序。 (ASC (升序)或 DESC (降序)聲明排序的方式,預設為升序。 )
SELECT SNO, SNAME, AGE
FROM STUDENTS
WHERE AGE BETWEEN 20 AND 23
ORDER BY AGE
例 20 找出年齡小於 23 歲、籍貫是湖南或湖北的學生的姓名和性別。(條件比較運算符=、< 和邏輯運算符 AND (與),此外還可以使用的運算符有:>(大於)、>=(大於等於)、<=(小於等於)、<>(不等於)、 NOT (非)、 OR (或)等。
謂詞 LIKE 只能與字元串聯用,常常是 「 <列名> LIKE pattern」 的格式。特殊字元 「_」 和 「%」 作為通配符。
謂詞 IN 表示指定的屬性應與後面的集合(括弧中的值集或某個查詢子句的結果)中的某個值相匹配,實際上是一系列的 OR (或)的縮寫。謂詞 NOT IN 表示指定的屬性不與後面的集合中的某個值相匹配。
謂詞 BETWEEN 是 「 包含於 … 之中 」 的意思。)
SELECT SNAME, SEX
FROM STUDENTS
WHERE AGE < 23 AND BPLACE LIKE' 湖% '

SELECT SNAME, SEX
FROM STUDENTS
WHERE AGE < 23 AND BPLACE IN ( ' 湖南 ' , ' 湖北 ' )
例 22 找出學生表中籍貫是空值的學生的姓名和性別。(在 SQL 中不能使用條件:<列名>= NULL 。在 SQL 中只有一個特殊的查詢條件允許查詢 NULL 值:)
SELECT SNAME, SEX
FROM STUDENTS
WHERE BPLACE IS NULL
多表操作

例 23 找出成績為 95 分的學生的姓名。(子查詢)
SELECT SNAME
FROM STUDENTS
WHERE SNO =
(SELECT SNO
FROM ENROLLS
WHERE GRADE = 95)
例 24 找出成績在 90 分以上的學生的姓名。
SELECT SNAME
FROM STUDENTS
WHERE SNO IN
(SELECT SNO
FROM ENROLLS
WHERE GRADE > 90)

SELECT SNAME
FROM STUDENTS
WHERE SNO = ANY
(SELECT SNO
FROM ENROLLS
WHERE GRADE > 90)
例 25 查詢全部學生的學生名和所學課程號及成績。(連接查詢)
SELECT SNAME, CNO, GRADE
FROM STUDENTS, ENROLLS
WHERE STUDENTS.SNO = ENROLLS.SNO
例 26 找出籍貫為山西或河北,成績為 90 分以上的學生的姓名、籍貫和成績。(當構造多表連接查詢命令時,必須遵循兩條規則。第一,連接條件數正好比表數少 1 (若有三個表,就有兩個連接條件 ) ;第二,若一個表中的主關鍵字是由多個列組成,則對此主關鍵字中的每一個列都要有一個連接條件(也有少數例外情況))
SELECT SNAME, BPLACE, GRADE
FROM STUDENTS, ENROLLS
WHERE BPLACE IN (『 山西 ' , 『 河北 ') AND GRADE >= 90 AND STUDENTS.SNO=ENROLLS.SNO
例 28 查出課程成績在 80 分以上的女學生的姓名、課程名和成績。( FROM 子句中的子查詢)
SELECT SNAME,CNAME, GRADE
FROM (SELECT SNAME, CNAME , GRADE
FROM STUDENTS, ENROLLS,COURSES
WHERE SEX = ' 女 ')
AS TEMP (SNAME, CNAME,GRADE)
WHERE GRADE > 80
表達式與函數的使用

例 29 查詢各課程的學時數。(算術表達式由算術運算符+、-、 * 、/與列名或數值常量所組成。)
SELECT CNAME,COURSE_TIME = CREDIT*16
FROM COURSES
例 30 找出教師的最小年齡。(內部函數: SQL 標准中只使用 COUNT 、 SUM 、 AVG 、 MAX 、 MIN 函數,稱之為聚集函數( Set Function )。 COUNT 函數的結果是該列統計值的總數目, SUM 函數求該列統計值之和, AVG 函數求該列統計值之平均值, MAX 函數求該列最大值, MIN 函數求該列最小值。)
SELECT MIN(AGE)
FROM TEACHERS
例 31 統計年齡小於等於 22 歲的學生人數。(統計)
SELECT COUNT(*)
FROM STUDENTS
WHERE AGE < = 22
例 32 找出學生的平均成績和所學課程門數。
SELECT SNO, AVG(GRADE), COURSES = COUNT(*)
FROM ENROLLS
GROUP BY SNO

例 34 找出年齡超過平均年齡的學生姓名。
SELECT SNAME
FROM STUDENTS
WHERE AGE >
(SELECT AVG(AGE)
FROM STUDENTS)
例 35 找出各課程的平均成績,按課程號分組,且只選擇學生超過 3 人的課程的成績。( GROUP BY 與 HAVING
GROUP BY 子句把一個表按某一指定列(或一些列)上的值相等的原則分組,然後再對每組數據進行規定的操作。
GROUP BY 子句總是跟在 WHERE 子句後面,當 WHERE 子句預設時,它跟在 FROM 子句後面。
HAVING 子句常用於在計算出聚集之後對行的查詢進行控制。)
SELECT CNO, AVG(GRADE), STUDENTS = COUNT(*)
FROM ENROLLS
GROUP BY CNO
HAVING COUNT(*) >= 3

相關子查詢

例 37 查詢沒有選任何課程的學生的學號和姓名。(當一個子查詢涉及到一個來自外部查詢的列時,稱為相關子查詢( Correlated Subquery) 。相關子查詢要用到存在測試謂詞 EXISTS 和 NOT EXISTS ,以及 ALL 、 ANY ( SOME )等。)
SELECT SNO, SNAME
FROM STUDENTS
WHERE NOT EXISTS
(SELECT *
FROM ENROLLS
WHERE ENROLLS.SNO=STUDENTS.SNO)
例 38 查詢哪些課程只有男生選讀。
SELECT DISTINCT CNAME
FROM COURSES C
WHERE ' 男 ' = ALL
(SELECT SEX
FROM ENROLLS , STUDENTS
WHERE ENROLLS.SNO=STUDENTS.SNO AND
ENROLLS.CNO=C.CNO)
例 39 要求給出一張學生、籍貫列表,該表中的學生的籍貫省份,也是其他一些學生的籍貫省份。
SELECT SNAME, BPLACE
FROM STUDENTS A
WHERE EXISTS
(SELECT *
FROM STUDENTS B
WHERE A.BPLACE=B.BPLACE AND
A.SNO < > B.SNO)
例 40 找出選修了全部課程的學生的姓名。
本查詢可以改為:查詢這樣一些學生,沒有一門課程是他不選修的。
SELECT SNAME
FROM STUDENTS
WHERE NOT EXISTS
(SELECT *
FROM COURSES
WHERE NOT EXISTS
(SELECT *
FROM ENROLLS
WHERE ENROLLS.SNO = STUDENTS.SNO
AND ENROLLS.CNO = COURSES.CNO))
關系代數運算

例 41 設有某商場工作人員的兩張表:營業員表 SP_SUBORD 和營銷經理表 SP_MGR ,其關系數據模式如下:
SP_SUBORD (SALPERS_ID, SALPERS_NAME, MANAGER_ID, OFFICE)
SP_MGR (SALPERS_ID, SALPERS_NAME, MANAGER_ID, OFFICE)
其中,屬性 SALPERS_ID 為工作人員的編號 , SALPERS_NAME 為工作人員的姓名 , MANAGER_ID 為所在部門經理的編號 , OFFICE 為工作地點。
若查詢全部商場工作人員,可以用下面的 SQL 語句:
(SELECT * FROM SP_SUBORD)
UNION
(SELECT * FROM SP_MGR)
或等價地用下面的 SQL 語句:
SELECT *
FROM (TABLE SP_SUBORD UNION TABLE SP_MGR)
( 2 ) INTERSECT
(SELECT * FROM SP_SUBORD)
INTERSECT
(SELECT * FROM SP_MGR)
或等價地用下面的 SQL 語句:
SELECT *
FROM (TABLE SP_SUBORD INTERSECT TABLE SP_MGR)
或用帶 ALL 的 SQL 語句:
(SELECT * FROM SP_SUBORD)
INTERSECT ALL
(SELECT * FROM SP_MGR)

SELECT *
FROM (TABLE SP_SUBORD INTERSECT ALL TABLE SP_MGR)
( 3 ) EXCEPT
(SELECT * FROM SP_MGR)
EXCEPT
(SELECT * FROM SP_SUBORD)
或等價地用下面的 SQL 語句:
SELECT *
FROM (TABLE SP_MGR EXCEPT TABLE SP_ SUBORD)
或用帶 ALL 的 SQL 語句:
(SELECT * FROM SP_MGR)
EXCEPT ALL
(SELECT * FROM SP_SUBORD)
例 42 查詢籍貫為四川、課程成績在 80 分以上的學生信息及其成績。(自然連接)
(SELECT * FROM STUDENTS
WHERE BPLACE=『 四川 ')
NATURAL JOIN
(SELECT * FROM ENROLLS
WHERE GRADE >=80)
例3.43 列出全部教師的姓名及其任課的課程號、班級。
(外連接與外部並外連接允許在結果表中保留非匹配元組,空缺部分填以 NULL 。外連接的作用是在做連接操作時避免丟失信息。
外連接有 3 類:
( 1 )左外連接( Left Outer Join )。連接運算謂詞為 LEFT [OUTER] JOIN ,其結果表中保留左關系的所有元組。
( 2 )右外連接( Right Outer Join )。連接運算謂詞為 RIGHT [OUTER] JOIN ,其結果表中保留右關系的所有元組。
( 3 )全外連接( Full Outer Join )。連接運算謂詞為 FULL [OUTER] JOIN ,其結果表中保留左右兩關系的所有元組。)
SELECT TNAME, CNO, CLASS
FROM TEACHERS LEFT OUTER JOIN TEACHING USING (TNO)

SQL 的數據操縱

例 44 把教師李映雪的記錄加入到教師表 TEACHERS 中。(插入)
INSERT INTO TEACHERS
VALUES(1476 , ' 李映雪 ' , 44 , ' 副教授 ')
例 45 成績優秀的學生將留下當教師。
INSERT INTO TEACHERS (TNO , TNAME)
SELECT DISTINCT SNO , SNAME
FROM STUDENTS , ENROLLS
WHERE STUDENTS.SNO = ENROLLS.SNO AND GRADE >= 90
例 47 把所有學生的年齡增加一歲。(修改)
UPDATE STUDENTS
SET AGE = AGE+1
例 48 學生張春明在資料庫課考試中作弊,該課成績應作零分計。
UPDATE ENROLLS
SET GRADE = 0
WHERE CNO = 'C1' AND
' 張春明 ' =
(SELECT SNAME
FROM STUDENTS
WHERE STUDENTS.SNO=ENROLLS.SNO)
例 49 從教師表中刪除年齡已到 60 歲的退休教師的數據。(刪除)
DELETE FROM TEACHERS
WHERE AGE >= 60

SQL 的數據控制

例 50 授予 LILI 有對表 STUDENTS 的查詢權。(表/視圖特權的授予
一個 SQL 特權允許一個被授權者在給定的資料庫對象上進行特定的操作。授權操作的資料庫對象包括:表 / 視圖、列、域等。授權的操作包括: INSERT 、 UPDATE 、 DELETE 、 SELECT 、 REFERENCES 、 TRIGGER 、 UNDER 、 USAGE 、 EXECUTE 等。其中 INSERT 、 UPDATE 、 DELETE 、 SELECT 、 REFERENCES 、 TRIGGER 有對表做相應操作的許可權,故稱為表特權。)
GRANT SELECT ON STUDENTS
TO LILI
WITH GRANT OPTION
例 51 取消 LILI 的存取 STUDENTS 表的特權。
REVOKE ALL
ON STUDENTS
FROM LILI CASCADE

㈦ 學習MYSQL前需要學SQL嗎

漫畫SQL——mysql必修課(956×540視頻)網路網盤

鏈接: https://pan..com/s/1dZyKSIHepckKltyYMz1DWQ

提取碼: 3qea 復制這段內容後打開網路網盤手機App,操作更方便哦

若資源有問題歡迎追問~

㈧ 有沒有好的學習SQL的教程...初級的。

列出以下經典SQL教程下載,如果想獲得更多更新的SQL教程請到www.ibook8.com進入SQL教程列表,更有經典SQL視頻教程等著您。01 SQL Server 2000 看圖教程 17M 推薦 02 SQL server 2000自學教程 7M 推薦 03 SQL Server 7參考手冊 96M 04 SQL Server精華 4.53M 05 SQL Server 2000資料庫開發從零開始 10M 推薦 06 SQL Server 2000資料庫管理 16M 07 戰勝SQL Server必做練習50題 16M 推薦 08 SQL SERVER 2000培訓教程 4.8M 09 sql server2000實用工具大全 14M 10 SQL基礎教程 6.02M 推薦 11 10分鍾學會SQL 324K 12 Microsoft SQL Server7 資料庫技術指南 16M 13 Sql Server7教程 39M 14 Microsoft SQL Server高級編程管理指南 7.5M 15 SQL7.0教程 19.85M 16 SQL Server 2000編程員指南 32M 17 SQL Server 2000資料庫開發 13M 18 輕松搞定SQL Server 2000程序設計 10M 19 SQL入門,使用與高級使用篇 55K 20 SQL Server 7.0 資料庫管理與應用開發 20.86M 21 SQL Server 2000開發指南 15M 22 SQL_Server_2000編程人員指南 36M 23 SQL Server 2000開發者指南 8.1M 24 21天學會Sql 2.1M 25 SQLServer7關系資料庫系統管理與開發 14.3M 26 SQL SERVER 7.24 學時教程 14M 27 SQL系統管理員新起點--7.0實用教程 4.88M 28 sql_server_7編程技術內幕 19.6M 29 Microsoft SQL Server 管理員手冊 6M 30 SQL Server2000 管理手冊 9.4M 31 SQL 2000 簡明教程 4.77M 32 SQL Server 2000 學習教程 10.5M 33 SQL7.0最新教程 38M 34 SQL Server 2000菜鳥進階 408K 連接 http://www.ibook8.com/book/sql.htm

㈨ 《MySQL核心技術手冊第2版》pdf下載在線閱讀,求百度網盤雲資源

《MySQL核心技術手冊 第2版》(戴爾)電子書網盤下載免費在線閱讀

資源鏈接:

鏈接:https://pan..com/s/1kN0HHbs4lBK2e9cloSGhbw

提取碼:qwzr

書名:MySQL核心技術手冊 第2版

作者:戴爾

譯者:李紅軍

豆瓣評分:7.0

出版社:機械工業出版社

出版年份:2009-9

頁數:554

內容簡介:

MySQL包含了許多功能,尤其是在MySQL 5.0和5.1版本中新增了一些主要的功能和特性。MySQL特有的函數或者語句是相當豐富的。這正是《MySQL核心技術手冊(第2版)》富有價值的原因。《MySQL核心技術手冊(第2版)》令讀者可以快速查找到所需要的具體細節,無論是SQL關鍵字還是mysql命令行選項、具體的API信息或管理實用工具。

《MySQL核心技術手冊(第2版)》涵蓋了適用於MySQL 5.1版本的所有命令和編程信息,其中包括一些新增特性和語言介面,對於列舉的大部分語句和函數,給出了它們的用法示例。

《MySQL核心技術手冊(第2版)》易於使用,並由權威作者執筆。《MySQL核心技術手冊(第2版)》:

·提供了MySQL語句、函數、配置選項和實用工具的一個完整手冊。

·給出了幾個指導章節用於幫助新手入門。

·為PHP、Perl和C語言提供了應用程序編程介面(API)。

·在每章的API開頭部分提供了簡要的指南。

·新增復制、觸發器和存儲過程章節。

·提供了許多MySQL的實用示例。

·給出了一些有用的提示,用於幫助讀者克服難題。

無論你為何而使用MySQL,《MySQL核心技術手冊(第2版)》充滿了大量的知識財富,給你節省了許多用於嘗試的時間以及令人厭煩的在線搜索。

作者簡介:

Russell Dyer是一位自由作家,主要致力於MySQL資料庫軟體方面的研究,他是MySQL公司知識庫(http://www.mysql.com/network/knowledgebase.html)的編輯。他在如下出版物上發表了很多文章,這些出版物包括DevZone(MySQL的一個出版物)、Linux期刊、ONlamp.com、Perl期刊、Red Hat雜志、Sys Admin雜志、TechRepublic、Unix評論和XML.com。他還是《MySQL核心技術手冊》第1版的作者。

㈩ 怎麼學習MYSQL

看你基礎如何了.

你要是 什麼都不知道的. 那麼可能需要先掌握 基本的 SQL 語言, 然後再在 MYSQL 裡面慢慢實踐。

你要是 僅僅知道基本的 SQL 語言的語法, 那麼就可以直接 在 MySQL 裡面做一些基本的實踐, 然後慢慢的多看一些 別人的例子。然後了解一些 MySQL 的函數之類的。

你要是 已經對 SQL Server 或者 Oracle 比較熟練了,那麼就可以直接 看看 MySQL 與 其他資料庫之間的差異。基本上就可以了。不必從零開始了。

熱點內容
醫院新冠肺炎疫情防控演練腳本 發布:2024-04-27 04:04:45 瀏覽:652
天津智慧網關伺服器雲伺服器 發布:2024-04-27 03:56:51 瀏覽:422
移門製作下料尺寸演算法 發布:2024-04-27 03:15:02 瀏覽:641
c語言5常量 發布:2024-04-27 02:38:49 瀏覽:991
源碼怎麼搭建 發布:2024-04-27 02:33:44 瀏覽:97
java獲取參數 發布:2024-04-27 02:22:21 瀏覽:501
unixlinuxwindows 發布:2024-04-27 02:10:55 瀏覽:445
nginx禁止ip訪問網站 發布:2024-04-27 02:05:43 瀏覽:845
webrtc伺服器搭建哪家價格低 發布:2024-04-27 01:30:08 瀏覽:141
oracle資料庫無法啟動 發布:2024-04-27 01:29:20 瀏覽:613