资源预览内容
第1页 / 共57页
第2页 / 共57页
第3页 / 共57页
第4页 / 共57页
第5页 / 共57页
第6页 / 共57页
第7页 / 共57页
第8页 / 共57页
第9页 / 共57页
第10页 / 共57页
亲,该文档总共57页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数据库编程 项目知识要点与目标 任务一MySQL语言结构 1 字符串常量字符串是指用单引号或双引号括起来的字符序列 分为ASCII字符串常量和Unicode字符串常量 ASCII字符串常量是用单引号括起来的 由ASCII字符构成的符号串 举例 hello Howareyou Unicode字符串常量与ASCII字符串常量相似 但它前面有一个N标志符 N代表SQL 92标准中的国际语言 NationalLanguage N前缀必须为大写 只能用单引号括起字符串 举例 N hello N Howareyou Unicode数据中的每个字符用两个字节存储 而每个ASCII字符用一个字节存储 在字符串中不仅可以使用普通的字符 也可使用几个转义序列 它们用来表示特殊的字符 例8 1 执行如下语句 SELECT This nIs nFour nLines 其中 n 表示回车 常量 2 数值常量数值常量可以分为整数常量和浮点数常量 3 十六进制常量一个十六进制值通常指定为一个字符串常量 每对十六进制数字被转换为一个字符 其最前面有一个大写字母 X 或小写字 x 4 日期时间常量日期时间常量 用单引号将表示日期时间的字符串括起来构成 日期型常量包括年 月 日 数据类型为DATE 表示为 1999 06 17 这样的值 时间型常量包括小时数 分钟数 秒数及微秒数 数据类型为TIME 如 12 30 43 00013 日期 时间的组合 数据类型为DATETIME或TIMESTAMP 如 1999 06 1712 30 43 常量 5 位字段值可以使用b value 符号写位字段值 value是一个用0和1写成的二进制值 直接显示b value 的值可能是一系列特殊的符号 例如 b 0 显示为空白 b 1 显示为一个笑脸图标 使用BIN函数可以将位字段常量显示为二进制格式 6 布尔值布尔值只包含两个可能的值 TRUE和FALSE FALSE的数字值为 0 TRUE的数字值为 1 7 NULL值NULL值可适用于各种列类型 它通常用来表示 没有值 无数据 等意义 并且不同于数字类型的 0 或字符串类型的空字符串 用户变量 变量用于临时存放数据 变量有名字及其数据类型两个属性 变量名用于标识该变量 变量的数据类型确定了该变量存放值的格式及允许的运算 MySQL中根据变量的定义方式 变量可分为用户变量和系统变量 1 用户变量用户可以在表达式中使用自己定义的变量 这样的变量叫做用户变量 在使用用户变量前必须定义和初始化 如果使用没有初始化的变量 它的值为NULL 定义和初始化一个变量可以使用SET语句语法格式为 SET user variable1 expression1 user variable2 expression2 其中 user variable1 user variable2为用户变量名 变量名可以由当前字符集的文字数字字符 和 组成 变量举例 例8 2 创建用户变量name并赋值为 王林 SET name 王林 还可以同时定义多个变量 中间用逗号隔开 例8 3 创建用户变量user1并赋值为1 user2赋值为2 user3赋值为3 SET user1 1 user2 2 user3 3 定义用户变量时变量值可以是一个表达式 例8 4 创建用户变量user4 它的值为user3的值加1 SET user4 user3 1 在一个用户变量被创建后 它可以以一种特殊形式的表达式用于其他SQL语句中 变量名前面也必须加上符号 例8 5 创建并查询用户变量name的值 SET name 王林 SELECT name 变量举例 例8 6 使用查询给变量赋值 SET student SELECT姓名FROMXSWHERE学号 081101 例8 7 查询表XS中名字等于例6 11中student值的学生信息 SELECT学号 姓名 专业名 出生日期FROMXSWHERE姓名 student 说明 在SELECT语句中 表达式发送到客户端后才进行计算 这说明在HAVING GROUPBY或ORDERBY子句中 不能使用包含SELECT列表中所设的变量的表达式 对于SET语句 可以使用 或 作为分配符 分配给每个变量的值可以为整数 实数 字符串或NULL值 也可以用其他SQL语句代替SET语句来为用户变量分配一个值 在这种情况下 分配符必须为 而不能用 因为在非SET语句中 被视为比较操作符 例8 8 执行如下语句 SELECT t2 t2 2 5ASt2 结果t2的值为7 系统变量 MySQL有一些特定的设置 当MySQL数据库服务器启动的时候 这些设置被读取来决定下一步骤 例如 有些设置定义了数据如何被存储 有些设置则影响到处理速度 还有些与日期有关 这些设置就是系统变量 和用户变量一样 系统变量也是一个值和一个数据类型 但不同的是 系统变量在MySQL服务器启动时就被引入并初始化为默认值 例8 9 获得现在使用的MySQL版本 SELECT VERSION 说明 在MySQL中 系统变量VERSION的值设置为版本号 在变量名前必须加两个 符号才能正确返回该变量的值 大多数的系统变量应用于其他SQL语句中时 必须在名称前加两个 符号 而为了与其他SQL产品保持一致 某些特定的系统变量是要省略这两个 符号的 如CURRENT DATE 系统日期 例8 10 获得系统当前时间 SELECTCURRENT TIME 运算符 1 算术运算符算术运算符在两个表达式上执行数学运算 这两个表达式可以是任何数字数据类型 算术运算符有 加 减 乘 除 和 求模 5种运算 2 比较运算符比较运算符 又称关系运算符 用于比较两个表达式的值 其运算结果为逻辑值 可以为三种之一 1 真 0 假 及NULL 不能确定 3 逻辑运算符逻辑运算符用于对某个条件进行测试 运算结果为TRUE 1 或FALSE 0 4 运算符优先级当一个复杂的表达式有多个运算符时 运算符优先级决定执行运算的先后次序 执行的顺序会影响所得到的运算结果 运算符优先级如下表所示 表达式 表达式就是常量 变量 列名 复杂计算 运算符和函数的组合 一个表达式通常可以得到一个值 与常量和变量一样 表达式的值也具有某种数据类型 可能的数据类型有字符类型 数值类型 日期时间类型 这样 根据表达式的值的类型 表达式可分为字符型表达式 数值型表达式和日期表达式 表达式按照形式还可分为单一表达式和复合表达式 单一表达式就是一个单一的值 如一个常量或列名 复合表达式是由运算符将多个单一表达式连接而成的表达式例如 1 2 3 a b 3 2008 01 20 INTERVAL2MONTH 表达式一般用在SELECT及SELECT语句的WHERE子句中 系统内置函数 1 有一组数 12 34 5 5 103 2 0 求这组数中的最大值和最小值2 变量x 12 54 y 10 63456 请用MySQL函数完成以下计算 1 求x和y的最大整数值和最小整数值 2 求x和y四舍五入的整数值 3 求y分别保留小数位数为2位和保留小数位数4位的值 4 求x的平方根和y的绝对值3 求字符 R 的ASCII值4 求ASCII码值为91 92 93组成的一个字符串5 设有字符串s1 ABCDEFG s2 yxz 请用MySQL函数完成以下运算 1 返回s1最左边的3个字符和最右边的3个字符 2 分别删除字符串s2首部空格 尾部空格 所有空格 3 返回字符串s1第3个字符开始的4个字符串 4 比较s1和s2两个字符串6 用MySQL函数显示当前日期 当前时间 当前年 当前月的英文 当期星期的英文名 当前日期减10天的日期7 加密显示当前数据库名 当前登录用户名和MySQL服务器的版本 系统内置函数 1 有一组数 12 34 5 5 103 2 0 求这组数中的最大值和最小值selectgreatest 12 34 5 5 103 2 0 least 12 34 5 5 103 2 0 2 变量x 12 54 y 10 63456 请用MySQL函数完成以下计算 1 求x和y的最大整数值和最小整数值Set x 12 54 Set y 10 63456 Selectfloor x floor y ceiling x ceiling y 2 求x和y四舍五入的整数值SELECTROUND x ROUND y 3 求y分别保留小数位数为2位和保留小数位数4位的值SELECTTRUNCATE y 2 TRUNCATE y 4 4 求x的平方根和y的绝对值SELECTSQRT x ABS y 3 求字符 R 的ASCII值SELECTASCII R 4 求ASCII码值为91 92 93组成的一个字符串SELECTCHAR 91 92 93 5 设有字符串s1 ABCDEFG s2 yxz 请用MySQL函数完成以下运算 1 返回s1最左边的3个字符和最右边的3个字符 SET s1 ABCDEFG SET s2 XYZ SELECTLEFT s1 3 right s1 3 2 分别删除字符串s2首部空格 尾部空格 所有空格 SELECTLTRIM s2 RTRIM s2 TRIM s2 3 返回字符串s1第3个字符开始的4个字符串selectsubstring s1 3 4 4 比较s1和s2两个字符串SELECTSTRCMP s1 s2 6 用MySQL函数显示当前日期 当前时间 当前年 当前月的英文 当期星期的英文名 当前日期减10天的日期selectnow CURTIME CURDATE YEAR now MONTHNAME now DAYNAME now DATE ADD now INTERVAL 10DAY 7 加密显示当前数据库名 当前登录用户名和MySQL服务器的版本SELECTDATABASE USER VERSION 任务二存储过程 使用存储过程的优点有 1 存储过程在服务器端运行 执行速度快 2 存储过程执行一次后 其执行规划就驻留在高速缓冲存储器 在以后的操作中 只需从高速缓冲存储器中调用已编译好的二进制代码执行 提高了系统性能 3 确保数据库的安全 使用存储过程可以完成所有数据库操作 并可通过编程方式控制上述操作对数据库信息访问的权限 创建存储过程 创建存储过程可以使用CREATEPROCEDURE语句语法格式 CREATEPROCEDURE存储过程名 参数 存储过程体参数 存储过程的参数 格式如下 IN OUT INOUT 参数名类型当有多个参数的时候中间用逗号隔开 存储过程可以有0个 1个或多个参数 MySQL存储过程支持三种类型的参数 输入参数 输出参数和输入 输出参数 关键字分别是IN OUT和INOUT 输入参数使数据可以传递给一个存储过程 当需要返回一个答案或结果的时候 存储过程使用输出参数 输入 输出参数既可以充当输入参数也可以充当输出参数 存储过程也可以不加参数 但是名称后面的括号是不可省略的 存储过程体 这是存储过程的主体部分 也叫做存储过程体 里面包含了在过程调用的时候必须执行的语句 这个部分总是以BEGIN开始 以END结束 但是 当存储过程体中只有一个SQL语句时可以省略BEGIN END标志 DELIMITER命令 在MySQL中 服务器处理语句的时候是以分号为结束标志的 但是在创建存储过程的时候 存储过程体中可能包含多个SQL语句 每个SQL语句都是以分号为结尾的 这时服务器处理程序的时候遇到第一个分号就会认为程序结束 这肯定是不行的 所以这里使用DELIMITER命令将MySQL语句的结束标志修改为其他符号 DELIMITER语法格式为 DELIMITER 说明 是用户定义的结束符 通常这个符号可以是一些特殊的符号 如两个 两个 等 当使用DELIMITER命令时 应该避免使用反斜杠 字符 因为那是MySQL的转义字符 例8 29 将MySQL结束符修改为两个斜杠 符号 DELIMITER
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号