数据库编程初步.doc
一、 关系数据库的基本概念1、 数据库:通常由多个相互之间存在各种关系的数据表构成2、 数据表:数据表同普通表格一样是二维的,。数据记录相当于普通表格的表行,数据字段相当于普通表格的表列。3、 主码:用于区分不同的数据记录4、 外码:建立数据表之间的联系二、 SQL Server的数据类型分类备注和说明数据类型说明二进制数据类型存储非子符和文本的数据Image可用来存储图像文本数据类型字符数据包括任意字母、符号或数字字符的组合Char固定长度的非 Unicode 字符数据Varchar可变长度非 Unicode 数据Nchar固定长度的 Unicode 数据Nvarchar可变长度 Unicode 数据Text存储长文本信息Ntext存储可变长度的长文本日期和时间日期和时间在单引号内输入Datetime 日期和时间数字数据该数据仅包含数字,包括正数、负数以及分数intsmallint整数floatreal数字货币数据类型用于十进制货币值Money Bit数据类型表示是/否的数据Bit存储布尔数据类型三、 通配符通配符解释示例_一个字符A Like 'C_' %任意长度的字符串B Like 'CO_%' 括号中所指定范围内的一个字符C Like '9W01-2'不在括号中所指定范围内的一个字符D Like %A-D1-2'四、 基本语句1、 插入行语句INSERT INTO <表名> 列名 VALUES <值列表>INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX) VALUES ('张青裁','上海松江',6,'ZQCS',0) 2、 插入多行INSERT INTO <表名>(列名)SELECT <列名>FROM <源表名>INSERT INTO TongXunLu ('姓名','地址','电子邮件') SELECT SName,SAddress,SEmailFROM Students3、 更新数据行UPDATE <表名> SET <列名 = 更新值> WHERE <更新条件>UPDATE ScoresSET Scores = Scores + 5WHERE Scores <= 954、 删除数据行DELETE FROM <表名> WHERE <删除条件>TRUNCATE TABLE <表名>5、 查询SELECT <列名> FROM <表名> WHERE <查询条件表达式> ORDER BY <排序的列名>ASC或DESCSELECT SCode,SName,SAddress FROM Students WHERE SSEX = 0 ORDER BY SCode6、 查询全部行和列SELECT * FROM Students 7、 查询部分行和列SELECT SCode,SName,SAddress FROM StudentsWHERE SAddress = '河南新乡'8、 使用AS来命名列SELECT SCode AS 学员编号,SName AS学员姓名,SAddress AS 学员地址 FROM StudentsWHERE SAddress <> '河南新乡'9、 使用=来命名列SELECT '姓名' = FirstName+'.'+LastName FROM Employees10、 查询空行SELECT SName FROM Students WHERE SEmail IS NULL11、 使用常量列SELECT 姓名=SName,地址= SAddress,'河北新龙' AS 学校名称FROM Students12、 限制固定行SELECT TOP 5 SName, SAddressFROM Students WHERE SSex = 013、 返回百分之多少行SELECT TOP 20 PERCENT SName, SAddressFROM Students WHERE SSex = 014、 升序排列SELECT StudentID As 学员编号,(Score*0.9+5) As 综合成绩FROM ScoreWHERE (Score*0.9+5)>60ORDER BY Score15、 降序排列SELECT Au_Lname +'.' +Au_fName AS EMP From Authors UnionSELECT fName +'.'+ LName AS EMP From EmployeeORDER BY EMP DESC16、 按多列排序SELECT StudentID As 学员编号, Score As 成绩FROM ScoreWHERE Score>60ORDER BY Score,CourseID17、 字符串函数函数描述举例CHARINDEX用来寻找一个指定的字符串在另一个字符串中的起始位置SELECT CHARINDEX(ACCP,My Accp Course,1)返回:4 LEN返回传递给它的字符长度SELECT LEN(SQL Server课程)返回:12LOWER把传递给它的字符串转换为小写SELECT LOWER(SQL SERVER课程)返回:sql serve课程UPPER把传递给它的字符串转换为大写SELECT UPPER(sql serve课程)返回:SQL SERVER课程LTRIM清除字符右边的空格SELECT LTRIM (' 周智宇 ')返回:周智宇 (后面的空格保留)RTRIM请除字符右边的空格SELECT RTRIM (' 周智宇 ')返回: 周智宇(前面的空格保留)REPLACE替换一个字符串中的字符SELECT REPLACE('莫乐可切.杨可','可','兰')返回:莫乐兰切.杨兰RIGHT从字符串右边返回指定数目的字符SELECT RIGHT('买卖提.吐尔松',3)返回:吐尔松STUFF在一个字符串中,删除指定长度的字符,并在该位置插入一个新的字符串SELECT STUFF('ABCDEFG', 2, 3, '我的音乐我的世界')返回:A我的音乐我的世界EFG18、 日期函数函数描述举例GETDATE取消当前的系统日期SELECT GETDATE()返回:今天的日期DATEADD将指定的数值添加到指定的日期部分后的日期SELECT DATEADD(mm,4,01/01/99)返回:以当前的日期格式返回05/01/99DATEDIFF两个日期之间的指定日期部分的区别SELECT DATEDIFF(mm,01/01/99,05/01/99)返回:4DATENAME日期中指定日期部分的字符串形式SELECT DATENAME(dw,01/01/2000)返回:SaturdayDATEPART日期中指定日期部分的整数形式SELECT DATEPART(day, 01/15/2000)返回:1519数学函数函数描述举例ABS取数值表达式的绝对值SELECT ABS(-43)返回:43CEILING返回大于或等于所给数字表达式的最小整数SELECT CEILING(43.5)返回:44FLOOR取小于或等于指定表达式的最大整数SELECT FLOOR(43.5)返回:43POWER取数值表达式的幂值SELECT POWER(5,2)返回:25ROUND将数值表达式四舍五入为指定精度SELECT ROUND(43.543,1)返回:43.5Sign对于正数返回+1,对于负数返回-1,对于0则返回0SELECT SIGN(-43)返回:-1Sqrt取浮点表达式的平方根SELECT SQRT(9)返回:320、系统函数函数描述举例CONVERT用来转换数据类型SELECT CONVERT (VARCHAR (5),12345)返回:字符串12345CURRENT_USER返回当前用户的名字SELECT CURRENT_USER返回:你登录的用户名DATALENGTH返回用于指定表达式的字节数SELECT DATALENGTH ('中国A盟')返回:7HOST_NAME返回当前用户所登陆的计算机的名字SELECT HOST_NAME()返回:你所登录的计算机的名字SYSTEM_USER返回当前所登录的用户名称SELECT SYSTEM_USER返回:你当前所登录的用户名USER_NAME从给定的用户ID返回用户名SELECT USER_NAME(1)返回:从任意数据库中返回“dbo”21、模糊查询LIKESELECT SName AS 姓名 FROM Students WHERE SName LIKE '张%'22、模糊查询 IS NULLSELECT SName As 姓名 SAddress AS 地址 FROM Students WHERE SAddress IS NULL23、模糊查询 BETWEENSELECT StudentID, Score FROM SCore WHERE Score BETWEEN 60 AND 8024、模糊查询 INSELECT SName AS 学员姓名,SAddress As 地址 FROM Students WHERE SAddress IN ('北京','广州','上海') 25、聚合函数 SUMSELECT SUM(ytd_sales) FROM titles WHERE type = 'business'25、聚合函数 AVGSELECT AVG(SCore) AS 平均成绩 From Score WHERE Score >=6026、聚合函数 MIN MAXSELECT AVG(SCore) AS 平均成绩, MAX (Score) AS 最高分, MIN (Score) AS 最低分 From Score WHERE Score >=6027、聚合函数 COUNTSELECT COUNT (*) AS 及格人数 From Score WHERE Score>=6028、内表连接SELECT S.SName,C.CourseID,C.Score From Score AS CINNER JOIN Students AS SON C.StudentID = S.SCode29、三表连接SELECT S.SName AS 姓名, CS.CourseName AS 课程, C.Score AS 成绩FROM Students AS S INNER JOIN Score AS C ON (S.SCode = C.StudentID)INNER JOIN Course AS CS ON (CS.CourseID = C.CourseID)30、左外连SELECT S.SName,C.CourseID,C.Score From Students AS SLEFT JOIN Score AS CON C.StudentID = S.SCode31、右外联SELECT Titles.Title_id, Titles.Title, Publishers.Pub_nameFROM titles RIGHT OUTER JOIN Publishers ON Titles.Pub_id = Publishers.Pub_id