为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
与MySQL的零距离接触_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

与MySQL的零距离接触

平然 学生
难度入门
时长 8小时29分
  • 事务处理:整个过程每一个单元全部完成才算事务处理成功,某一个单元失败事务就会回滚. 主要作用:保证数据库的完整性 事务的特性: 原子性、一致性、隔离性、持久性 简称:A(Atomic)C(Consistency)I(Isolation)D(Durable)
    查看全部
  • 1.并发控制: 当多个连接对记录进行修改时保证数据的一致性和完整性。系统使用锁系统来解决这个并发控制,这种锁分为: 1).共享锁(读锁)---在同一时间内,多个用户可以读取同一个资源,读取过程中数据不会发生任何变化。 2).排他锁(写锁)---在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作。 2.锁的力度(也叫锁的颗粒) 锁颗粒(锁定时的单位) 只需对修改的数据精确加锁,而不需要对所有资源加锁,加锁只加最对的,而不加最大的。 加锁会增大系统的开销,应通过锁策略在锁开销与数据安全之间寻求一种平衡。 锁策略: ---表锁,是一种开销最小的锁策略。得到数据表的写锁 ---行锁,是一种开销最大的锁策略。并行性最大 表锁的开销最小,因为只需要给一张表加锁,使用锁的个数最小; 行锁的开销最大,因为每一行记录都要加锁,可能使用锁的个数比较多。
    查看全部
  • 存储引擎 (1)MySQL可以将数据以不同的技术存储在文件(内存)中,不同的技术就称为不同的存储引擎。 每种存数引擎使用不同的存储机制、索引技巧、锁定水平,最终提供广泛且不同的功能。 (2)使用不同的存储引擎也可以说不同类型的表 (3)MySQL支持的存储引擎 1. MyISAM 2. InnoDB 3. Memory 4. CSV 5. Archive
    查看全部
  • 存储过程回顾
    查看全部
    0 采集 收起 来源:课程回顾

    2017-02-18

  • 存储过程与自定义函数的区别: 1、存储过程实现的功能相对复杂,函数针对性较强 2、存储过程可以返回多个值,函数只能有一个返回值 3、存储过程一般独立执行,函数可以作为 sql 语句的组成部分来出现 另外,存储过程也比通过API接口调用程序要快。 修改存储过程 如图 存储过程只能修改一些特性,不能修改过程体。如果要修改过程体 只能先删除存储过程
    查看全部
  • ROW_COUNT()函数相当于PHP的MySQL函数库中的mysql_affected_rows()这个函数,都是计算被影响的记录数(行数)的总和。 例子: INSERT test(username) VALUES('A'),('B,'),('C');//写入三条记录 SELECT ROW_COUNT();==>3 //返回被修改的记录总数 DELIMITER // CREATE PROCEDURE rmUserByAgeAndRtInfos(IN p_age SMALLINT UNSIGNED, OUT delNums SMALLINT UNSIGNED, OUT leftNums SMALLINT UNSIGNED) BEGIN DELETE FROM users WHERE age = p_age; //注意变量不同 SELECT ROW_COUNT() INTO delNums;//此处的SELECT... INTO…只是在赋值 SELECT COUNT(id) FROM users INTO leftNums;//同上 END // DELIMITER ; CALL rmUserByAgeAndRtInfos(20, @a, @b); SELECT @a, @b; 局部变量与用户函数: 1. 类型声明 SELECT…INTO…/SET 不需要声明类型,declare必须指定类型 SET 变量名 = 表达式值 [,variable_name = expression ...] SELECT 表达式值 INTO 变量; DECLARE variable_name [,variable_name...] datatype [DEFAULT value]; DECLARE为MySQL的数据类型,如:int, float, date, varchar(length) 例如:DECLARE l_int int unsigned default 40; 2. 位置 SELECT…INTO…/SET 位置可以任意, DECLARE 必须在复合语句的开头,在任何其它语句之前 3.作用范围 DECLARE 定义的变量的作用范围是BEGIN … END块内,只能在块中使用, SET 定义的变量用户变量,只能存在于当前用户所使用的客户端有效。
    查看全部
  • 创建带有IN和OUT类型的参数: DELIMITER // CREATE PROCEDURE removeUserAndReturnUserNums(IN p_id INT UNSIGNED,OUT userNums INT UNSIGNED) //删除指定的id值对应的记录并返回剩余的id BEGIN DELETE FROM users WHERE id = p_id; SELECT count(id) FROM users INTO userNums; // INTO 含义就是将 SELECT 语句结果的表达式(id数量)返回到 userNums 变量中。 将SELECT结果的表达式放入到OUT变量,使用INTO END // DELIMITER ; CALL removeUserAndReturnUserNums(27,@nums);//第二个参数是返回值,不能设成定值,所以写成一个变量 SELELCT @nums;//结果:16 1.用户变量:以"@"开始,形式为"@变量名" eg.SET @i=7; 用户变量跟mysql客户端是绑定的,设置的变量,只对当前用户使用的客户端生效 2.全局变量:定义时,以如下两种形式出现,set GLOBAL 变量名 或者 set @@global.变量名 对所有客户端生效。只有具有super权限才可以设置全局变量 3.会话变量:只对连接的客户端有效。 4.局部变量:作用范围在begin到end语句块之间。在该语句块里设置的变量 declare语句专门用于定义局部变量。set语句是设置不同类型的变量,包括会话变量和全局变量
    查看全部
  • 1.创建带有INT类型参数的存储过程 DESC users;//降序显示数据库记录 DELIMITER // CREATE PROCEDURE removeUserByID(IN id INT UNSIGNED) BEGIN DELETE FROM users WHERE id = id; END // DELIMITER ; CALL removeUserById(3); //参数名称最好不要和表中的字段相同 SELECT * FROM users; //结果为记录全删除,系统将WHERE条件视为:字段id的值等于字段id的值时 我们认为第一个id为数据表中的id值,第二个id 为传递的参数。此例告诉我们参数名称最好不要和表中的字段相同 删除存储过程,重新插入记录,再重建存储过程 DELIMITER // CREATE PROCEDURE removeUserById(IN p_id INT UNSIGNED) BEGIN DELETE FROM users WHERE id = p_id; END // DELIMITER ; SELECT * FROM users; CALL removeUserById(22); SELECT * FROM users WHERE id = 22;//不存在id为22 的字段,已经删除 2.修改存储过程 //不能修改过程体 要修改过程体需删除存储过程,重新创建 ALTER PROCEDURE sp_name [characteristic] COMMENT 'string' |{CONTAINS SQL|NO SQL|READS SQL DATA|MODIFIES SQL DATA} |SQL SECURITY{DEFINER|INVOKER} 3.删除存储过程 DROP PROCEDURE [IF EXISTS] sp_name; DROP PROCEDUER removeUserById;
    查看全部
  • C:\WINDOWS\system32>mysql -uroot -p -P3306 -h127.0.0.1 上面的语句可以是别人看不到你的密码 cls清屏
    查看全部
  • -D ,--database=name 打开指定数据库 --delimiter 指定分隔符 -h ,--host=name 服务器名称 -p ,--password[=name] 密码 -P --port=# 端口号 --prompt=name 设置提示符 -u,--user=name 用户名 -v ,--version 输出版本信息且推出
    查看全部
  • mysql 提示符 \D 完整的日期 \d 当前数据库 \h 服务器名称 \u 当前用户
    查看全部
  • 创建一个无参存储过程 举例:CREATE PROCEDURE sp1() SELECT VERSION(); 调用过程:CALL sp1(); 注:无参过程的调用可以不写小括号,例如上面的例子可以写成 CALL sp1
    查看全部
  • 1、存储过程语法结构分析 CREATE [DEFINER = {user|CURRENT_USER}]//定义时的用户,若是不写就默认为当前用户 PROCEDURE sp_name ([proc_parameter[,...]]) //可以带0到多个参数 sp_name存储过程的名字 [characteristic ...] routine_body 创建存储过程的语法结构与创建自定义函数的基本相同,不同的是其中参数前面可以加in、out、inout这三个选项 proc_parameter: [IN|OUT|INOUT] param_name type IN, 表示该参数的值必须在调用存储过程时指定 OUT, 表示该参数的值可以被存储过程改变,并且可以返回 INOUT, 表示该参数的值调用时指定,并且可以被改变和返回 2.特性 COMMENT 'string' {CONTAINS SQL|NO SQL|READS SQL DATA|MODIFIES SQL DATA|SQL SECURITY{DEFINER|INVOKER} COMMENT:注释 CONTAINS SQL:包含SQL语句, 但不包含读或写数据的语句 NO SQL:不包含SQL语句 READS SQL DATA:包含读数据的语句 MODIFIES SQL DATA:包含写数据的语句 SQL SECURITY {DEFINER|INVOKER}指明谁有权限来执行 3.过程体 (1)过程体由合法的SQL语句构成; (2)过程体可以是任意SQL语句;对表格进行增删,连接,但是不能创建数据表<br> (3)过程体如果为复合结构则使用BEGIN...END语句 (4)复合结构可以使用条件、循环等控制语句
    查看全部
  • 输入SQL命令,MySQL引擎对命令进行分析,查看输入的语法是否正确,如果正确,再进行编译,编译成MySQL引擎可识别的命令,最后再进行执行,并将执行结果返回给客户端。 如果省略了语法分析和编译的阶段,则效率可提高。 存储过程:是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理(类似函数)。存储过程存储在数据库内,可以由应用程序调用执行,而且允许用户申明变量以及进行流程控制。存储过程可以接受输入类型的参数和输出类型的参数,并且可以存在多个返回值。只在第一次调用时进行语法分析和编译,以后的调用直接调用编译的结果,效率大大提高。 优点: 1、增强SQL语句的功能和灵活性:可以通过控制语句对流程进行控制和判断 2、实现较快的执行速度:客户端第一次调用存储过程时,MySQL引擎会对其进行语法分析、编译等操作,然后将编译结果存储到内存中,所以第一次和之前的效率一样,然而以后会直接调用内存中的编译结果,效率提高 3、减少网络流量:例如删除一个记录,我们原本要输入DELETE FROM xx WHERE ...; 要传输的字符较多,如果写成存储过程,就只要调用存储过程的名字和相应参数就行,传输的字符数量较少,所以减少了网络流量。
    查看全部
  • DELECT t1 FROM tdb_goods AS t1 LEFT JOIN (SELECT goods_id,goods_name FROM tdb_goods GROUP BY goods_name HAVING count(goods_name)>=2) AS t2 ON t1.good_name= t2.goods_name WHERE t1.goods_id>t2.goods_id;
    查看全部
    0 采集 收起 来源:多表删除

    2018-03-22

举报

0/150
提交
取消
课程须知
要想学习本课程,你只需要知道数据库是个什么东东就足够了,是不是很easy?!
老师告诉你能学到什么?
1、MySQL安装与配置 2、数据类型 3、流程控制与运算符 4、DDL、DCL、DQL、DML 5、常用函数 6、表类型(存储引擎) 7、图形化工具
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!