当前位置:首页 » 编程语言 » 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 与 其他数据库之间的差异。基本上就可以了。不必从零开始了。

热点内容
python获取系统时间 发布:2024-05-08 10:32:24 浏览:633
浏览器上传文件 发布:2024-05-08 10:31:17 浏览:90
编程强度高 发布:2024-05-08 10:24:59 浏览:278
电脑如何查看型号和配置 发布:2024-05-08 10:19:56 浏览:420
大地电子保单pdf密码多少 发布:2024-05-08 09:54:21 浏览:860
ftp扫描免费主机 发布:2024-05-08 09:50:05 浏览:339
听说ftpmp4 发布:2024-05-08 09:39:51 浏览:475
退货上传图片 发布:2024-05-08 09:38:38 浏览:79
linux命令安装rpm 发布:2024-05-08 09:37:37 浏览:643
什么是逆算法 发布:2024-05-08 09:28:17 浏览:208