MYSQL数据库学习笔记

合集下载

MySql-Mysql技术内幕~SQL编程学习笔记(1)

MySql-Mysql技术内幕~SQL编程学习笔记(1)

MySql-Mysql技术内幕~SQL编程学习笔记(1)1、MySQL的历史,⼀些相关概念。

2、MySQL数据类型*通常⼀个页内可以存放尽可能多的⾏,那么数据库的性能就越好,选择⼀个正确的数据类型⾄关重要。

1》UNSIGNED类型:将数字类型⽆符号化。

2》ZEROFILL:可以格式化整形显⽰,⼀旦启⽤该属性,MySQL数据库为列⾃动添加UNSIGNED属性。

0填充。

3》⽇期和时间类型⽇期数据类型占⽤空间的情况类型起始范围结束范围DATETIME1000-01-01 00:00:009999-12-31 23:59:59DATE1000-01-019999-12-31TIMESTAMP1970-01-01 00:00:002038-01-19 03:14:07YEARTIMETIMESTAMP与DATETIME显⽰的格式⼀样,但有些不同的地⽅:1>表⽰的时间范围不同2>TIMESTAMP类型的列可以设置⼀个默认值,⽽DATETIME类型不可以。

3>TIMESTAMP类型在更新表时可以设置⾃动更新为当前时间。

3》和⽇期时间相关的函数1>获取当前系统时间:now()、current_timestamp()、sysdate()1>>now():返回执⾏sql时的时间2>>current_timestamp():返回执⾏sql时的时间3>>sysdate():返回执⾏到当前sql时的时间2>时间加减函数:1>>date_add(date,interval expr unit):date_add(now(),interval 1 day)。

expr可正可负。

unit的值有year、month、day、hour、minute、second、microsecond、week。

2>>date_sub(date,interval expr unit):date_sub(now(),interval 1 day)。

MySQL学习笔记:生成一个时间序列

MySQL学习笔记:生成一个时间序列
T (SELECT @i := -1) t;END源自2018-05-29 00:55:32
博客园 用户登录 代码改变世界 密码登录 短信登录 忘记登录用户名 忘记密码 记住我 登录 第三方登录/注册 没有账户, 立即注册
MySQL学 习 笔 记 : 生 成 一 个 时 间 序 列
今天遇到一个需求是生成以下表格的数据,一整天24小时,每秒一行数据。
寻找颇旧,找到另外两个实现的例子,暂且学习一翻。另一个见另外一篇。
其中,SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1是为了生成一个虚拟的表格,这样子可以生 成一样多的行数,此次可用T表代替,只需满足T表数据量大于所需即可。
SELECT DATE_ADD('2018-01-01',INTERVAL @i := @i + 1 DAY) AS DATE FROM
SELECT DATE_ADD('2018-01-01',INTERVAL @i := @i + 1 DAY) AS DATE FROM (SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1) AS tmp, (SELECT @i := -1) t;

MySQL实战45讲(学习笔记)

MySQL实战45讲(学习笔记)

MySQL实战45讲(学习笔记)本系列是学习极客时间林晓斌的《MySQL实战45讲》系列的学习笔记。

原⽂链接:https:///column/intro/13901 基础架构:⼀条SQL查询语句是如何执⾏的?https:///fengfeng2861285642/article/details/85131474https:///u014737928/article/details/85060991https:///u012131610/article/details/9005153502 ⽇志系统:⼀条SQL更新语句是如何执⾏的?https:///fengfeng2861285642/article/details/85712388https:///u014737928/article/details/85062279https:///u012131610/article/details/9005278703 事务隔离:为什么改了还看不见?https:///u014737928/article/details/99731828https:///u012131610/article/details/9016857804 深⼊浅出索引(上)https:///u012131610/article/details/9017404105 深⼊浅出索引(下)https:///u012131610/article/details/9017695306 全局锁和表锁:给表加个字段怎么有这么多阻碍?https:///u012131610/article/details/9019993807 ⾏锁功过:怎么减少⾏锁对性能的影响?https:///u012131610/article/details/9020891308 事务到底是隔离的还是不隔离的?https:///u012131610/article/details/9022900309 普通索引和唯⼀索引,应该怎么选择?https:///u012131610/article/details/9026055810 MySQL为什么有时候会选错索引?https:///u012131610/article/details/9027003111 怎么给字符串字段加索引?https:///u012131610/article/details/9039965212 为什么我的MySQL会“抖”⼀下?https:///u012131610/article/details/9043686713 为什么表数据删掉⼀半,表⽂件⼤⼩不变?https:///u012131610/article/details/9059947714 count(*)这么慢,该怎么办?https:///u012131610/article/details/9063344215 答疑⽂章(⼀):⽇志和索引相关问题https:///u012131610/article/details/9256390816 “order by”是怎么⼯作的?https:///u012131610/article/details/9071048517 如何正确地显⽰随机消息?https:///u012131610/article/details/9074652218 为什么这些SQL语句逻辑相同,性能却差异巨⼤?https:///u012131610/article/details/9103878919 为什么只查⼀⾏的语句,也执⾏这么慢?https:///u012131610/article/details/9141115220 幻读是什么,幻读有什么问题?https:///u012131610/article/details/9148902321 为什么我只改⼀⾏的语句,锁这么多?https:///u012131610/article/details/9178131722 MySQL有哪些“饮鸩⽌渴”提⾼性能的⽅法?https:///u012131610/article/details/9296907423 MySQL是怎么保证数据不丢的?https:///u012131610/article/details/9993657224 MySQL是怎么保证主备⼀致的?https:///u012131610/article/details/10000775225 MySQL是怎么保证⾼可⽤的?https:///u012131610/article/details/10003019226 备库为什么会延迟好⼏个⼩时https:///u012131610/article/details/100090270 27 主库出问题了,从库怎么办?https:///u012131610/article/details/100112609 28 读写分离有哪些坑https:///u012131610/article/details/100112952 29 如何判断⼀个数据库是不是出问题?https:///u012131610/article/details/100113348 30 答疑⽂章(⼆):⽤动态的观点看加锁https:///u012131610/article/details/100129983 31 误删数据后除了跑路,还能怎么办?https:///u012131610/article/details/100130039 32 为什么还有kill不掉的语句?https:///u012131610/article/details/100130460 33 查这么多数据,会不会把数据库内存撑爆?https:///u012131610/article/details/97107364 34 到底可不可以使⽤join?https:///u012131610/article/details/93158401 35 join语句怎么优化https:///u012131610/article/details/97240601 36 为什么临时表可以重名https:///u012131610/article/details/97757120 37 什么时候会使⽤内部临时表https:///u012131610/article/details/97884757 38 都说InnoDB好,那还要不要使⽤Memory引擎https:///u012131610/article/details/98028479 39 ⾃增主键为什么不是连续的?https:///u012131610/article/details/98168871 40 insert语句的锁为什么这么多?https:///u012131610/article/details/98937622 41 怎么最快的复制⼀张表https:///u012131610/article/details/99406030 42 grant之后要跟着flsh privileges吗?https:///u012131610/article/details/99539832 43 要不要使⽤分区表https:///u012131610/article/details/99620613 44 答疑(三)https:///u012131610/article/details/99670766 45 ⾃增id⽤完了怎么办?https:///u012131610/article/details/99714097《MySQL实战45讲》1~15讲https:///zxcc1314/article/details/84842650《MySQL实战45讲》16~30讲https:///zxcc1314/article/details/85216128《MySQL实战45讲》31~45讲https:///zxcc1314/article/details/88087028。

MySQL中文参考手册MySQL学习总结-MySQL-API函数描述

MySQL中文参考手册MySQL学习总结-MySQL-API函数描述

MySQL函数描述、学习总结(适用版本:MySQL 3.23.7alpla)1. MySQL API (2)1.1. MySQL C API (2)1.2. C API数据类型 (3)1.3. C API函数概述 (6)1.4. C API函数描述 (9)1.4.1. mysql_affected_rows() (10)1.4.2. mysql_close() (11)1.4.3. mysql_connect() (11)1.4.4. mysql_change_user() (12)1.4.5. mysql_create_db() (13)1.4.6. mysql_data_seek() (14)1.4.7. mysql_debug() (15)1.4.8. mysql_drop_db() (15)1.4.9. mysql_dump_debug_info() (16)1.4.10. mysql_eof() (17)1.4.11. mysql_errno() (18)1.4.12. mysql_error() (19)1.4.13. mysql_escape_string() (20)1.4.14. mysql_fetch_field() (21)1.4.15. mysql_fetch_fields() (22)1.4.16. mysql_fetch_field_direct() (23)1.4.17. mysql_fetch_lengths() (23)1.4.18. mysql_fetch_row() (24)1.4.19. mysql_field_count() (26)1.4.20. mysql_field_seek() (27)1.4.21. mysql_field_tell() (28)1.4.22. mysql_free_result() (28)1.4.23. mysql_get_client_info() (29)1.4.24. mysql_get_host_info() (29)1.4.25. mysql_get_proto_info() (30)1.4.26. mysql_get_server_info() (30)1.4.27. mysql_info() (30)1.4.28. mysql_init() (31)1.4.29. mysql_insert_id() (32)1.4.30. mysql_kill() (32)1.4.31. mysql_list_dbs() (33)1.4.32. mysql_list_fields() (34)1.4.33. mysql_list_processes() (35)1.4.34. mysql_list_tables() (35)1.4.35. mysql_num_fields() (36)1.4.36. mysql_num_rows() (38)1.4.37. mysql_options() (38)1.4.38. mysql_ping() (40)1.4.39. mysql_query() (41)1.4.40. mysql_real_connect() (41)1.4.41. mysql_real_query() (43)1.4.42. mysql_reload() (44)1.4.43. mysql_row_seek() (45)1.4.44. mysql_row_tell() (45)1.4.45. mysql_select_db() (46)1.4.46. mysql_shutdown() (47)1.4.47. mysql_stat() (47)1.4.48. mysql_store_result() (48)1.4.49. mysql_thread_id() (49)1.4.50. mysql_use_result() (50)1.4.51. 为什么在mysql_query()返回成功后,mysql_store_result()有时返回NULL? (51)1.4.52. 我能从查询中得到什么结果? (51)1.4.53. 我怎样能得到最后插入的行的唯一ID? (52)1.MySQL API1.1. MySQL C APIC API代码是随MySQL分发的,它被包含在mysqlclient库且允许C程序存取一个数据库。

MySQL学习笔记:while循环

MySQL学习笔记:while循环

MySQL学习笔记:while循环 思考:while循环是否只能使⽤在存储过程或者存储函数之中,不能直接在查询语句中使⽤? ———— 循环⼀般在存储过程和存储函数中使⽤。

直接放⼏个例⼦: 例⼀: 1.创建存储过程DELIMITER $$CREATE PROCEDURE test_while_001(IN in_count INT) # 创建存储过程学习while循环的⽤法BEGINDECLARE COUNT INT DEFAULT 0;DECLARE SUM INT DEFAULT 0;WHILE COUNT < in_count DOSET SUM = SUM + COUNT;SET COUNT = COUNT + 1;END WHILE;SELECT SUM;END $$DELIMITER ; 2.调⽤存储过程CALL test_while_001(10); # 45 输出 3.删除存储过程DROP PROCEDURE test_while_001;例⼆: 1.创建函数DELIMITER $$CREATE FUNCTION my_test_function(quantity INT(10)) RETURNS INT(10) # 创建函数学习while循环的⽤法BEGINWHILE quantity MOD 12 > 0 DOSET quantity = quantity + 1;END WHILE;RETURN quantity;END $$DELIMITER ; 注意:创建函数之前必须更改系统设置否则⽆法创建函数SET GLOBAL log_bin_trust_function_creators=TRUE; 2.调⽤函数SELECT my_test_function(10);SELECT my_test_function(24);SELECT my_test_function(222); 3.删除函数DROP FUNCTION my_test_function; 例三: 1.如果存在,则删除DROP PROCEDURE IF EXISTS u_head_and_low_pro; 2.创建存储过程DELIMITER $$CREATE PROCEDURE u_head_and_low_pro()BEGINDECLARE n INT DEFAULT 10;SET n = n - 1;WHILE n > 0 DOSELECT n;SET n = n - 1;END WHILE;END $$DELIMITER ; 3.调⽤存储过程CALL u_head_and_low_pro(); 4.删除存储过程DROP PROCEDURE u_head_and_low_pro; 注:不依赖于任何数据库表,完整展⽰变量、while语句、存储过程的⽤法。

宋红康mysql高级篇笔记

宋红康mysql高级篇笔记

宋红康mysql高级篇笔记MySQL 是一款广泛应用于互联网领域的关系型数据库管理系统。

它的高级功能和优势使得它成为互联网开发者的首选。

本文将分享一些关于 MySQL 高级篇的笔记,涵盖了一些互联网技术介绍、互联网商业和技术应用方面的内容。

一、索引优化索引是提高数据库查询效率的重要手段之一。

在 MySQL 中,使用合适的索引可以显著提升查询性能。

首先,我们需要了解不同类型的索引,如主键索引、唯一索引和普通索引等。

其次,根据具体应用场景,我们可以使用覆盖索引、前缀索引、联合索引等技术进行索引优化。

此外,我们还要注意索引的维护和管理,及时进行索引的重建和优化。

二、查询优化在互联网应用中,查询是最常见的数据库操作之一。

如何编写高效的查询语句,能够快速地获取所需的数据,是每个开发者都应该关注的问题。

本节将介绍一些查询优化的技巧,例如避免使用通配符查询、合理使用 LIMIT 关键字、使用 EXPLAIN 分析查询执行计划等。

三、事务管理事务是保证数据库操作一致性和完整性的重要手段。

MySQL 支持事务的 ACID 特性,可以确保多个操作的原子性、一致性、隔离性和持久性。

本节将详细介绍如何使用事务管理,包括事务的开启、提交和回滚,以及事务并发控制的方法。

四、高级数据操作除了基本的增删改查操作,MySQL 还提供了一些高级数据操作功能,方便开发者完成复杂的数据处理任务。

本节将介绍如何使用子查询、联合查询、分组查询和多表操作等技术,实现更灵活和高效的数据操作。

五、存储引擎选择MySQL 支持多种存储引擎,如 InnoDB、MyISAM、Memory 等。

不同的存储引擎具有不同的特点和适用场景。

本节将比较各种存储引擎的优缺点,并给出存储引擎选择的建议。

六、高可用性和容灾备份在互联网应用中,数据库的高可用性和容灾备份是非常重要的。

本节将介绍如何使用主从复制、读写分离、故障转移和数据备份等技术,提高数据库的稳定性和可用性。

MySQL数据库学习笔记

MySQL数据库学习笔记

MySQL数据库学习笔记数据库 DDL: 数据定义语⾔, 包含数据库和表相关的操作(MySQL中保存数据需要先建库再建表,最后把数据保存到表中) DML: 数据操作语⾔, 包含增删改查相关的SQL DQL: 数据查询语⾔, 只包含查询相关的SQL TCL: 事务控制语⾔, 包括和事务相关的SQL DCL: 数据控制语⾔, 包括⽤户管理及权限分配相关的SQLDDL数据定义语⾔ 数据库相关SQL 1. 查询所有数据库 show databases; 2. 创建数据库 格式: create database 数据库名; 指定字符集格式: create database 数据库名 character set utf8/gbk; 举例: create database db1; create database db2 character set utf8; create database db3 character set gbk; show databases; 3. 查询数据库详情 格式: show create database 数据库名; 举例: show create database db1; show create database db2; show create database db3; 4. 删除数据库 格式: drop database 数据库名; drop database db3; 5. 使⽤数据库必须使⽤了某个数据库之后才能执⾏表和数据相关的SQL 格式: use 数据库名; use db1; 表相关SQL 操作表相关的SQL 必须使⽤了某个数据库之后再操作use db1; 1. 创建表 格式: create table 表名(字段1名类型,字段2名类型); 指定字符集格式: create table 表名(字段1名类型,字段2名类型) charset=utf8/gbk; 举例: create table person (name varchar(20),age int); create table student(name varchar(20),score int) charset=utf8; create table car(name varchar(20),price int) charset=gbk; 2. 查询所有表 格式: show tables; 3. 查询表详情 格式: show create table 表名 举例: show create table person; 4. 查看表字段 格式: desc 表名; 举例: desc student; 5. 删除表 格式: drop table 表名 举例: drop table car; 表相关SQL(续) use db1; 1. 修改表名格式: rename table 原名 to 新名; rename table student to stu; 2. 添加表字段 最后添加格式: alter table 表名 add 字段名类型; 最前⾯添加个格式: alter table 表名 add 字段名类型 fifirst; xxx字段后⾯添加格式: alter table 表名 add 字段名类型 after xxx; 举例: alter table person add gender varchar(5); //最后⾯ alter table person add id int fifirst; //最前⾯ alter table person add salary int after name;//name后⾯ 3. 删除表字段 格式: alter table 表名 drop 字段名; alter table person drop salary; 4. 修改表字段 格式: alter table 表名 change 原名新名新类型; alter table person change gender salary int;DML数据操作语⾔(数据相关SQL语句) 1. 插⼊数据 全表插⼊格式: insert into 表名 values(值1,值2); 值的数量和表字段⼀致 批量插⼊格式: insert into 表名 values(值1,值2),(值1,值2),(值1,值2); 举例: insert into person values("Tom",18); //全表插⼊ insert into person(name) values("Jerry"); //指定字段插⼊ insert into person values("AAA",10),("BBB",20), ("CCC",30); 中⽂问题: insert into person values("刘德华",30); 如果执⾏上⾯包含中⽂的SQL 报以下错误执⾏ set names gbk; 2. 查询数据 格式: select 字段信息 from 表名 where 条件; 举例: select name from person; //查询表中所有的名字 select name,age from person; //查询表中所有名字和年龄 select * from person; //查询表中所有数据的所有字段信息 select * from person where age>20; //查询年龄⼤于20岁的信息 select * from person where name='Tom'; //查询Tom的信息 3. 修改数据 格式: update 表名 set xxx=xxx,xxx=xxx where 条件; 举例: update person set age=8 where name='Jerry'; update person set name="张学友",age=50 where name="刘德华"; update person set age=15 where age<20; 4. 删除数据 格式: delete from 表名 where 条件; 举例: delete from person where name='Tom'; delete from person where age<20; delete from person; 约束* 概念:对表中的数据进⾏限定,保证数据的正确性、有效性和完整性。

mysql数据库期末总结

mysql数据库期末总结

mysql数据库期末总结一、前言MySQL是一款开源的关系型数据库管理系统(RDBMS),被广泛应用于Web开发、企业级应用等领域。

作为一名学习数据库的学生,我们在本学期的课程中对MySQL数据库进行了深入学习和使用。

在学习的过程中,我对MySQL数据库有了更深刻的认识,并且也掌握了一些基本的MySQL使用技巧。

本文旨在总结本学期学习MySQL数据库的经验与教训,提供给其他学习数据库的同学作为参考。

二、MySQL概述MySQL是一款适用于各种规模的应用程序的数据库管理系统。

它支持多种操作系统(如Linux、Windows、Mac OS)和多种编程语言(如Java、Python、PHP)的接口。

MySQL 以其高性能、可靠性和用户友好性而备受推崇。

1. 数据库系统MySQL是一种基于客户-服务体系架构的数据库系统。

它由一个客户端程序和一个服务器程序组成。

客户端程序通过与服务器进行通信来发送和接收数据。

2. 数据库管理系统MySQL是一种关系型数据库管理系统(RDBMS),它将数据组织成表格(表)的形式。

每个表由一组行(记录)组成,每行由一组列(字段)组成。

表格是数据库的核心组成部分,用于存储和管理数据。

3. SQL语言MySQL使用SQL(Structured Query Language)作为其标准查询语言。

SQL是一种用于操作关系型数据库的语言,它包含了一系列命令和语法规则。

通过使用SQL语言,我们可以对数据库进行增删改查的操作。

三、MySQL安装与配置在学习MySQL之前,我们首先需要安装和配置MySQL数据库。

以下是一些关于MySQL 安装和配置的经验总结:1. 安装MySQLMySQL提供了各种版本的安装程序,我们可以选择适合自己操作系统的版本进行安装。

安装过程中可以根据提示完成基本设置,如指定安装目录、设置管理员密码等。

2. 配置MySQL安装完成后,我们需要对MySQL进行配置。

首先,我们可以编辑f文件来修改MySQL的配置。

(转)MySQL学习笔记-redolog和binlog两阶段提交

(转)MySQL学习笔记-redolog和binlog两阶段提交

(转)MySQL学习笔记-redolog和binlog两阶段提交原⽂:https:///qq_38937634/article/details/113100472?utm_term=mysql%E6%97%A5%E5%BF%97%E4%B8%A4%E9%98%B6%E6%AE%B5%E6%8F%90%E4%BA%A4&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~sobaiduweb~default-2-113100472&spm=3001.4430⽂章⽬录MySQL学习笔记-redo log 和 binlog&两阶段提交1.笔记图2.⼀条更新语句是如何被执⾏的3.redo log4.binlog5.为什么要有两份⽇志?6.更新语句内部执⾏流程7.两阶段提交MySQL学习笔记-redo log 和 binlog&两阶段提交前⾯学习了⼀条查询语句的执⾏过程⼀般是经过连接器、分析器、优化器、执⾏器等功能模块,最后到达存储引擎,⽽⼀条更新语句的执⾏流程也会按照查询查询语句的流程⾛⼀遍,但更新语句会涉及到两个⽇志模块,分别是 redo log 和 binlog,这篇⽂章学习⼀下这两个⽇志的作⽤。

1.笔记图2.⼀条更新语句是如何被执⾏的连接器:负责跟客户端建⽴连接、获取权限、维持和管理连接分析器:词法分析:识别出 SQL 语句⾥⾯的字符串分别代表什么,把 SQL 语句中字符串 T 识别成“表名 T,把字符串 ID 识别成列 ID语法分析:根据词法分析的结果,语法分析器会根据语法规则,判断你输⼊的这个 SQL 语句是否满⾜ MySQL 语法优化器:优化器是在表⾥⾯有多个索引的时候,决定使⽤哪个索引,或者在⼀个语句有多表关联(join)的时候,决定各个表的连接顺序执⾏器:调⽤存储引擎提供的接⼝3.redo logWAL(Write-Ahead Logging):先写⽇志,再写磁盘当有记录需要更新时,InnoDB 引擎就会先把记录写到 redo log,并更新内存,这时更新就算完成InnoDB 的 redo log 是固定⼤⼩的,可以配置为⼀组 4 个⽂件,每个⽂件的⼤⼩是 1GB,从头开始写,写到末尾就⼜回到开头循环写Tips:write pos 表⽰当前记录的位置,写到第 3 号⽂件末尾后就回到 0 号⽂件开头,checkpoint 表⽰当前要擦除的位置,擦除记录前要把记录更新到数据⽂件如果 write pos 追上 checkpoint,表⽰ redo log 满了,这时不能再执⾏新的更新,得停下来先擦掉⼀些记录,把 checkpoint 推进⼀下crash-safe:InnoDB 就可以保证即使数据库发⽣异常重启,之前提交的记录都不会丢失4.binlogMySQL Server 层也有⾃⼰的⽇志,称为归档⽇志(binlog),binlog ⽇志只能⽤于归档redo log 是 InnoDB 引擎特有的,binlog 是 MySQL 的 Server 层实现的,所有引擎都可以使⽤redo log 是物理⽇志,记录的是在某个数据页上做了什么修改,binlog 是逻辑⽇志,记录的是这个语句的原始逻辑,⽐如给 ID=2 这⼀⾏的 c 字段加 1redo log 是循环写的,空间固定会⽤完,binlog 是可以追加写⼊的,binlog ⽂件写到⼀定⼤⼩后会切换到下⼀个,并不会覆盖以前的⽇志5.为什么要有两份⽇志?最开始 MySQL ⾥并没有 InnoDB 引擎,MyISAM 没有 crash-safe 的能⼒,binlog ⽇志只能⽤于归档InnoDB 是另⼀个公司以插件形式引⼊ MySQL 的,使⽤另外⼀套⽇志系统 redo log 来实现 crash-safe 能⼒6.更新语句内部执⾏流程update T set c=c+1 where ID=2执⾏器先找引擎取 ID=2 这⼀⾏,ID 是主键,引擎直接⽤树搜索找到这⼀⾏,如果 ID=2 这⼀⾏所在的数据页本来就在内存中,就直接返回给执⾏器,否则,需要先从磁盘读⼊内存,然后再返回执⾏器拿到引擎给的⾏数据,把这个值加上 1,⽐如原来是 N,现在就是 N+1,得到新的⼀⾏数据,再调⽤引擎接⼝写⼊这⾏新数据引擎将这⾏新数据更新到内存中,同时将这个更新操作记录到 redo log ⾥⾯,此时 redo log 处于 prepare 状态。

MySQL学习笔记:timediff、timestampdiff、datediff

MySQL学习笔记:timediff、timestampdiff、datediff

MySQL学习笔记:timediff、timestampdiff、datediff⼀、时间差函数:timestampdiff 语法:timestampdiff(interval, datetime1,datetime2) 结果:返回(时间2-时间1)的时间差,结果单位由interval参数给出。

frac_second 毫秒(低版本不⽀持,⽤second,再除于1000)second 秒minute 分钟hour ⼩时day 天week 周month ⽉quarter 季度year 年 注意:MySQL 5.6之后才⽀持毫秒的记录和计算,如果是之前的版本,最好是在数据库除datetime类型之外的字段,再建⽴⽤于存储毫秒的int字段,然后⾃⼰进⾏转换计算。

# 所有格式SELECT TIMESTAMPDIFF(FRAC_SECOND,'2012-10-01','2013-01-13'); # 暂不⽀持SELECT TIMESTAMPDIFF(SECOND,'2012-10-01','2013-01-13'); # 8985600SELECT TIMESTAMPDIFF(MINUTE,'2012-10-01','2013-01-13'); # 149760SELECT TIMESTAMPDIFF(HOUR,'2012-10-01','2013-01-13'); # 2496SELECT TIMESTAMPDIFF(DAY,'2012-10-01','2013-01-13'); # 104SELECT TIMESTAMPDIFF(WEEK,'2012-10-01','2013-01-13'); # 14SELECT TIMESTAMPDIFF(MONTH,'2012-10-01','2013-01-13'); # 3SELECT TIMESTAMPDIFF(QUARTER,'2012-10-01','2013-01-13'); # 1SELECT TIMESTAMPDIFF(YEAR,'2012-10-01','2013-01-13'); # 0⼆、时间差函数:datediff 语法:传⼊两个⽇期参数,⽐较DAY天数,第⼀个参数减去第⼆个参数的天数值。

mysql学习笔记(一)之mysqlparameter

mysql学习笔记(一)之mysqlparameter

mysql学习笔记(⼀)之mysqlparameter基础琐碎总结-----参数化查询参数化查询(Parameterized Query )是指在设计与数据库链接并访问数据时,在需要填⼊数值或数据的地⽅,使⽤参数 (Parameter) 来给值,这个⽅法⽬前已被视为最有效可预防SQL注⼊攻击 (SQL Injection) 的攻击⼿法的防御⽅式。

下⾯将重点总结下Parameter构建的⼏种常⽤⽅法。

说起参数化查询当然最主要的就是如何构造所谓的参数:⽐如,我们登陆时需要密码和⽤户名,⼀般我们会这样写sql语句,Select * from Login where username= @Username and password = @Password,为了防⽌sql注⼊,我们该如何构建@Username和@Password两个参数呢,下⾯提供六种(其实⼤部分原理都是⼀样,只不过代码表现形式不⼀样,以此仅作对⽐,⽅便使⽤)构建参数的⽅法,根据不同的情况选⽤合适的⽅法即可:说明:以下loginId和loginPwd是户登陆时输⼊登陆⽤户名和密码,DB.conn是数据库连接,⽤时引⼊using System.Data.SqlClient命名空间⽅法⼀:SqlCommand command = new SqlCommand(sqlStr, DB.conn);command.Parameters.Add("@Username", SqlDbType.VarChar);command.Parameters.Add("@Pasword", SqlDbType.VarChar);command.Parameters["@Username"].Value = loginId;command.Parameters["@Pasword"].Value = loginPwd;⽅法⼆:SqlCommand command = new SqlCommand();command.Connection = DB.conn;mandText = sqlStr;command.Parameters.Add(new SqlParameter("@Username", loginId));command.Parameters.Add(new SqlParameter("@Pasword", loginPwd));⽅法三:Sqlcommand cmd=new Sqlcommand(sqlStr, DB.conn);cmd.parameters.add("@Username",DbType.varchar).value=loginId;cmd.parameters.add("@Pasword",DbType.varchar).value=loginPwd;⽅法四:Sqlcommand cmd=new Sqlcommand(sqlStr, DB.conn);cmd.parameters.addwithvalue("@Username",loginId);cmd.parameters.addwithvalue("@Pasword",loginPwd);⽅法五:Sqlcommand cmd=new Sqlcommand(sqlStr, DB.conn);SqlParameter para1=new SqlParameter("@Username",SqlDbType.VarChar,16);para1.Value=loginId;cmd.Parameters.Add(para1);SqlParameter para2=new SqlParameter("@Pasword",SqlDbType.VarChar,16);para2.Value=loginPwd;cmd.Parameters.Add(para2);⽅法六:SqlParameter[] parms = new SqlParameter[]{new SqlParameter("@Username", SqlDbType.NVarChar,20),new SqlParameter("@Pasword", SqlDbType.NVarChar,20),};SqlCommand cmd = new SqlCommand(sqlStr, DB.conn);// 依次给参数赋值parms[0].Value = loginId;parms[1].Value = loginPwd;//将参数添加到SqlCommand命令中foreach (SqlParameter parm in parms){cmd.Parameters.Add(parm);}法和实现⽅法的不同,也可以说是语法糖,但后记:鉴于园友对dedeyi,⿁⽕飘荡,guihwu的疑问,我在写⼀个说明。

Mysql笔记(附Mysql基础书pdf版)

Mysql笔记(附Mysql基础书pdf版)

Mysql笔记(附Mysql基础书pdf版)资料数据库篇SHOW DATABASES; //显⽰数据库系统中已经存在的数据库CREATE DATABASE 数据库名; //创建数据库DROP DATABASE 数据库名; //删除数据库表篇注:在使⽤操作表语句前,⾸先要使⽤USE语句选择数据库。

选择数据库语句的基本格式为“USE 数据库名”。

否则会报错,1046;CREATE TABLE 表名 ( 属性名数据类型 [完整性约束条件],属性名数据类型 [完整性约束条件],属性名数据类型);表名不能为SQL语句的关键字,⼀个表可以有多个属性。

定义时,字母⼤⼩写均可,各属性之间⽤逗号隔开,最后⼀个属性不需要加逗号。

主键主键有唯⼀值单字段主键属性名数据类型 primary key //创建主键,写在属性名数据类型后⾯;多字段主键primary key(属性名 1,属性名2,属性名n)两者的组合可以确定唯⼀的⼀条记录;外键外键不⼀定必须为⽗表的主键,但必须是唯⼀性索引,主键约束和唯⼀性约束都是唯⼀性索引;外键可以为空值;设置外键的基本语法规则如下:CONSTRAINT 外键别名 FOREIGN KEY(属性 1.1,属性1.2,属性1.n)REFERENCES 表名(属性2.1,属性2.2,属性2.n)其中,“外键别名”参数是为外键的代号;“属性1”参数列表是⼦表中设置的外键;“表名”参数是指⽗表的名称;“属性2”参数列表是⽗表的主键。

设置表的⾮空约束设置表的唯⼀性约束设置表的属性值⾃动增加查看表结构DESCRIBE 表名; // 查看表基本结构语句,可缩写为desc 表名SHOW CREATE TABLE 表名; //查看表详细结构语句(包含存储引擎、字符编码)删除表DROP TABLE 表名;//删除没有被关联的普通表删除⽗表需要先将外键删除,然后才能去删除⽗表。

字段篇//通过ALTER TABLE语句ALTER TABLE 旧表名 RENAME [TO] 新表名;//修改表名 TO参数是可选参数,是否在语句中出现不会影响语句的执⾏。

大一mysql数据库知识点总结

大一mysql数据库知识点总结

大一mysql数据库知识点总结MySQL是一种常用的关系型数据库管理系统,广泛应用于各个领域。

作为大一学生,学习和掌握MySQL数据库的基本知识是非常重要的。

本文将对大一学习MySQL数据库所需的基础知识进行总结。

一、数据库基础知识1. 数据库的定义与作用数据库是一个有组织的数据集合,可以进行高效的数据存储、管理和查询。

它在现代应用中扮演着非常重要的角色,有助于数据的有效管理和使用。

2. 数据库管理系统(DBMS)数据库管理系统是一种管理数据库的软件,用于增加、删除、修改和查询数据。

MySQL是一种开源的DBMS,它具有良好的性能、稳定性和易用性。

3. 数据库和表的创建在MySQL中,可以使用SQL语句来创建数据库和表。

创建数据库使用CREATE DATABASE语句,创建表使用CREATE TABLE语句。

4. 基本数据类型MySQL支持多种数据类型,包括整型、浮点型、字符型等。

不同的数据类型适用于不同的数据存储和操作需求。

二、SQL语言基础1. SQL语言概述结构化查询语言(SQL)是一种用于访问和管理数据库的语言。

它可以用来执行查询、插入、更新和删除等操作。

2. 数据库查询使用SELECT语句可以从数据库中检索数据。

可以使用WHERE子句进行条件筛选,使用ORDER BY子句进行排序。

3. 数据库插入使用INSERT INTO语句可以向数据库的表中插入新的数据。

需要指定要插入的字段和对应的值。

4. 数据库更新使用UPDATE语句可以修改数据库中的数据。

可以使用SET 子句指定要更新的字段和新的值,并使用WHERE子句指定更新的条件。

5. 数据库删除使用DELETE FROM语句可以从数据库中删除数据。

可以使用WHERE子句指定删除的条件。

三、数据库设计与规范化1. 数据库设计的重要性数据库设计是指根据应用需求设计数据库的结构和关系。

良好的数据库设计可以提高查询和操作的效率,减少数据冗余和数据错误。

mysql数据库知识点总结

mysql数据库知识点总结

MySQL 数据库1数据库概念(了解)1.1什么是数据库数据库就是用来存储和管理数据的仓库!数据库存储数据的优先:●可存储大量数据;●方便检索;●保持数据的一致性、完整性;●安全,可共享;●通过组合分析,可产生新数据。

数据库具有原子性,数据不可再分割!1.2数据库的发展历程●没有数据库,使用磁盘文件存储数据;●层次结构模型数据库;●网状结构模型数据库;●关系结构模型数据库:使用二维表格来存储数据;●关系-对象模型数据库;MySQL就是关系型数据库!1.3常见数据库●Oracle:甲骨文;●DB2:IBM;●SQL Server:微软;●Sybase:赛尔斯;●MySQL:甲骨文;1.4理解数据库我们现在所说的数据库泛指关“系型数据库管理系统(RDBMS - Relational database management system)”,即“数据库服务器”。

当我们安装了数据库服务器后,就可以在数据库服务器中创建数据库,每个数据库中还可以包含多张表。

数据库表就是一个多行多列的表格。

在创建表时,需要指定表的列数,以及列名称,列类型等信息。

而不用指定表格的行数,行数是没有上限的。

下面是tab_student表的结构:当把表格创建好了之后,就可以向表格中添加数据了。

向表格添加数据是以行为单位的!下面是s_student表的记录:s_id s_name s_age s_sexS_1001 zhangSan 23 maleS_1002 liSi 32 femaleS_1003 wangWu 44 male大家要学会区分什么是表结构,什么是表记录。

1.5应用程序与数据库应用程序使用数据库完成对数据的存储!2安装MySQL数据库2.1安装MySQL参考:MySQL安装图解.doc2.2MySQL目录结构MySQL的数据存储目录为data,data目录通常在C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data位置。

MySQL数据库知识点整理

MySQL数据库知识点整理

MySQL数据库知识点整理1. Mysql 的存储引擎,myisam和innodb的区别?数据表类型有哪些?答:主要区别: 1)InnoDB⽀持事务,MyISAM不⽀持,对于InnoDB每⼀条SQL语⾔都默认封装成事务,⾃动提交,这样会影响速度,所以最好把多条SQL语⾔放在begin和commit之间,组成⼀个事务; 2)InnoDB⽀持外键,⽽MyISAM不⽀持。

对⼀个包含外键的InnoDB表转为MYISAM会失败; 3) InnoDB是聚集索引,数据⽂件是和索引绑在⼀起的,必须要有主键,通过主键索引效率很⾼。

但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。

因此,主键不应该过⼤,因为主键太⼤,其他索引也都会很⼤。

⽽MyISAM是⾮聚集索引,数据⽂件是分离的,索引保存的是数据⽂件的指针。

主键索引和辅助索引是独⽴的。

4) InnoDB不保存表的具体⾏数,执⾏select count(*) from table时需要全表扫描。

⽽MyISAM⽤⼀个变量保存了整个表的⾏数,执⾏上述语句时只需要读出该变量即可,速度很快; 5)Innodb不⽀持全⽂索引,⽽MyISAM⽀持全⽂索引,查询效率上MyISAM要⾼;概括总结:MyISAM 是⾮事务的存储引擎,适合⽤于频繁查询的应⽤。

表锁,不会出现死锁,适合⼩数据,⼩并发。

innodb是⽀持事务的存储引擎,合于插⼊和更新操作⽐较多的应⽤,设计合理的话是⾏锁(最⼤区别就在锁的级别上),适合⼤数据,⼤并发。

数据表类型有:MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV等。

MyISAM:成熟、稳定、易于管理,快速读取。

⼀些功能不⽀持(事务等),表级锁。

InnoDB:⽀持事务、外键等特性、数据⾏锁定。

空间占⽤⼤,不⽀持全⽂索引等。

应⽤场景: 1).MyISAM管理⾮事务表。

它提供⾼速存储和检索,以及全⽂搜索能⼒。

如果应⽤中需要执⾏⼤量的SELECT查询,那么MyISAM是更好的选择。

10分钟梳理MySQL核心知识点

10分钟梳理MySQL核心知识点

10分钟梳理MySQL核心知识点今天我们用10分钟,重点梳理一遍以下几方面:•数据库知识点汇总;•数据库事务特性和隔离级别;•详解关系型数据库、索引与锁机制;•数据库调优与最佳实践;•面试考察点及加分项。

一、数据库的不同类型1.常用的关系型数据库•Oracle:功能强大,主要缺点就是贵•MySQL:互联网行业中最流行的数据库,这不仅仅是因为MySQL的免费。

可以说关系数据库场景中你需要的功能,MySQL都能很好的满足,后面详解部分会详细介绍MySQL的一些知识点•MariaDB:是MySQL的分支,由开源社区维护,MariaDB虽然被看作MySQL的替代品,但它在扩展功能、存储引擎上都有非常好的改进•PostgreSQL:也叫PGSQL,PGSQL类似于Oracle的多进程框架,可以支持高并发的应用场景,PG几乎支持所有的SQL标准,支持类型相当丰富。

PG更加适合严格的企业应用场景,而MySQL更适合业务逻辑相对简单、数据可靠性要求较低的互联网场景。

2.NoSQL数据库(非关系型数据库)•Redis:提供了持久化能力,支持多种数据类型。

Redis适用于数据变化快且数据大小可预测的场景。

•MongoDB:一个基于分布式文件存储的数据库,将数据存储为一个文档,数据结构由键值对组成。

MongoDB比较适合表结构不明确,且数据结构可能不断变化的场景,不适合有事务和复杂查询的场景。

•HBase:建立在HDFS,也就是Hadoop文件系统之上的分布式面向列的数据库。

类似于谷歌的大表设计,HBase可以提供快速随机访问海量结构化数据。

在表中它由行排序,一个表有多个列族以及每一个列族可以有任意数量的列。

HBase依赖HDFS可以实现海量数据的可靠存储,适用于数据量大,写多读少,不需要复杂查询的场景。

•Cassandra:一个高可靠的大规模分布式存储系统。

支持分布式的结构化Key-value存储,以高可用性为主要目标。

黑马程序员mysql运维篇笔记

黑马程序员mysql运维篇笔记

黑马程序员MySQL运维篇笔记一、MySQL概述MySQL是一个流行的关系型数据库管理系统,广泛应用于各种场景,如Web开发、数据存储和数据分析等。

了解MySQL的基本概念、安装和配置是进行MySQL运维的基础。

二、MySQL安装与配置1.安装方式:可以选择源码安装、二进制安装或使用包管理器进行安装。

2.配置文件:MySQL的配置文件为f,其中包含了各种服务器参数,可以根据实际需求进行修改。

3.启动与停止:可以通过命令行工具或系统服务管理器来启动和停止MySQL服务。

三、MySQL基本操作1.创建数据库:使用CREATE DATABASE语句创建一个新的数据库。

2.删除数据库:使用DROP DATABASE语句删除一个数据库。

3.创建表:使用CREATE TABLE语句创建一个新的表。

4.删除表:使用DROP TABLE语句删除一个表。

5.插入数据:使用INSERT INTO语句向表中插入数据。

6.查询数据:使用SELECT语句查询表中的数据。

7.更新数据:使用UPDATE语句更新表中的数据。

8.删除数据:使用DELETE语句删除表中的数据。

四、MySQL性能优化1.索引优化:合理使用索引可以大大提高查询速度,但要注意避免过度索引。

2.SQL优化:优化SQL语句可以提高查询效率,如避免SELECT *,尽量使用连接(JOIN)代替子查询等。

3.服务器硬件优化:根据实际需求合理配置服务器硬件,如增加内存、使用SSD硬盘等。

4.定期备份与恢复:定期备份数据库可以防止数据丢失,而恢复备份可以帮助快速恢复数据。

5.监控与日志分析:使用工具监控MySQL服务器的性能指标,分析日志文件可以帮助排查问题。

6.安全性:加强MySQL服务器的安全性,如设置强密码、禁用不必要的功能等。

7.高可用性:通过主从复制、负载均衡等方式提高MySQL服务器的可用性。

8.数据迁移:在需要时可以将数据迁移到其他存储介质或服务器上,以满足性能或扩展需求。

【学习笔记】使用SQLyog连接MySQL数据库

【学习笔记】使用SQLyog连接MySQL数据库

【学习笔记】使⽤SQLyog连接MySQL数据库⼀、使⽤SQLyog创建数据库⽤来管理学⽣信息1 #创建数据库student2DROP DATABASE IF EXISTS Myschool;3CREATE DATABASE Myschool;45 #在数据库中新建四张数据表6USE Myschool;78 #创建年级表9CREATE TABLE grade(10 gradeID INT(4) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '年级编号',11 gradeName VARCHAR(50) NOT NULL COMMENT '年级名称'12 )COMMENT="年级表";1314 #创建学⽣信息表15CREATE TABLE student(16 studentNo INT(4) NOT NULL PRIMARY KEY COMMENT '学号',17 loginPwd VARCHAR(20) NOT NULL DEFAULT'123' COMMENT '密码',18 studentName VARCHAR(50) NOT NULL COMMENT '姓名',19 sex CHAR(2) NOT NULL DEFAULT'男' COMMENT '性别',20 gradeID INT(4) UNSIGNED COMMENT '年级编号',21 phone VARCHAR(50) COMMENT '电话',22 address VARCHAR(255) DEFAULT'地址不详' COMMENT '地址',23 bornDate DATETIME DEFAULT NOW() COMMENT '出⽣⽇期',24 email VARCHAR(50) DEFAULT'xx@' COMMENT '邮件账号',25 identityCard VARCHAR(18) COMMENT '⾝份证号'26 )COMMENT="学⽣信息表";2728 #创建科⽬表29CREATE TABLE `subject`(30 subjectNo INT(4) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '课程编号',31 subjectName VARCHAR(50) COMMENT '课程名称',32 classHour INT(4) COMMENT '学时',33 gradeID INT(4) UNSIGNED COMMENT '年级编号'34 )COMMENT="科⽬表";3536 #创建成绩表37CREATE TABLE result(38 studentNo INT(4) NOT NULL COMMENT '学号',39 subjectNo INT(4) NOT NULL COMMENT '课程编号',40 examDate DATETIME DEFAULT NOW() NOT NULL COMMENT '考试⽇期',41 studentResult INT(4) NOT NULL COMMENT '考试成绩'42 )COMMENT="成绩表";4344 #为表添加外键(关系)4546 #在student表中添加gradeID外键47ALTER TABLE student48ADD CONSTRAINT fk_student_grade FOREIGN KEY(gradeID)49REFERENCES grade(gradeID);5051 #在subject表中添加gradeID外键52ALTER TABLE `subject`53ADD CONSTRAINT fk_subject_grade FOREIGN KEY(gradeID)54REFERENCES grade(gradeID);5556 #在result表中添加studentNo,subjectNo外键57ALTER TABLE result58ADD CONSTRAINT fk_result_student FOREIGN KEY(studentNo)59REFERENCES student(studentNo);6061ALTER TABLE result62ADD CONSTRAINT fk_result_subject FOREIGN KEY(subjectNo)63REFERENCES `subject`(subjectNo);6465 #为表添加初始数据6667 #年级表grade的数据68INSERT INTO grade(gradeID,gradeName)69VALUES(1,'⼀年级'),(2,'⼆年级'),(3,'三年级'),(4,'四年级'),(5,'五年级');7071 #科⽬表subject的数据72INSERT INTO `subject`(subjectNo,subjectName,classHour,gradeID)73VALUES(1,'Logic Java',220,1),(2,'HTML',160,1),(3,'Java OOP',230,2);7475 #学⽣信息表student的数据76INSERT INTO student(studentNo,studentName,sex,gradeID,phone,address,bornDate)77VALUES(10000,'郭靖','男',1,136********,'天津市河西区','1990-09-08'),78 (10001,'李⽂才','男',1,136********,'地址不详','1994-04-12'),79 (10002,'李斯⽂','男',1,136********,'河南洛阳','1993-07-23'),80 (10003,'张萍','⼥',1,136********,'地址不详','1995-06-10'),81 (10004,'韩秋洁','⼥',1,138********,'北京市海淀区','1995-07-15'),82 (10005,'张秋丽','⼥',1,135********,'北京市东城区','1994-01-17'),83 (10006,'肖梅','⼥',1,135********,'河北省⽯家庄市','1991-02-17'),84 (10007,'秦洋','男',1,130********,'上海市卢湾区','1992-04-18'),85 (10008,'何睛睛','⼥',1,130********,'⼴州市天河区','1997-07-23'),86 (20000,'王宝宝','男',2,150********,'地址不详','1996-06-05'),87 (20010,'何⼩华','⼥',2,133********,'地址不详','1995-09-10'),88 (30011,'陈志强','⼥',3,136********,'地址不详','1994-09-27'),89 (30012,'李露露','⼥',3,136********,'地址不详','1992-09-27');9091 #成绩表result的数据92INSERT INTO result(studentNo,subjectNo,examDate,studentResult)93VALUES(10000,1,'2016-02-15',71),94 (10000,1,'2016-02-17',60),95 (10001,1,'2016-02-17',46),96 (10002,1,'2016-02-17',83),97 (10003,1,'2016-02-17',65),98 (10004,1,'2016-02-17',70),99 (10005,1,'2016-02-17',95),100 (10006,1,'2016-02-17',93),101 (10007,1,'2016-02-17',23),102 (20000,3,'2016-07-17',68),103 (20010,3,'2016-07-17',90),104 (20000,2,'2016-07-17',88),105 (20010,2,'2016-07-17',78);106107 ##学⽣信息数据库备份##⼆、使⽤SQLyog创建数据库制作图书馆管理系统1 #建⽴⼀个图书馆管理系统的数据库来存放图书馆的相关信息,包括图书的基本信息、图书借阅的信息和读者的信息 23 #创建数据库Library4CREATE DATABASE IF NOT EXISTS Library;5USE Library;6 #创建实体表7 #图书信息表book8CREATE TABLE book(9 bookId VARCHAR(50) PRIMARY KEY NOT NULL COMMENT '图书编号',10 bookName VARCHAR(255) NOT NULL COMMENT '图书名称',11 author VARCHAR(50) COMMENT '作者姓名',12 pubComp VARCHAR(50) COMMENT '出版社',13 pubDate DATE COMMENT '出版⽇期',14 bookCount INT(4) COMMENT '现存数量',15 price DOUBLE COMMENT '单价'16 )COMMENT="图书信息表";1718 #读者信息表reader19CREATE TABLE reader(20 readerId VARCHAR(50) PRIMARY KEY NOT NULL COMMENT '读者编号',21 readerName VARCHAR(50) NOT NULL COMMENT '读者姓名',22 lendNum INT(4) COMMENT '已借书数量',23 readerAddress VARCHAR(255) COMMENT '联系地址'24 )COMMENT="读者信息表";2526 #图书借阅表borrow27CREATE TABLE borrow(28 readerId VARCHAR(50) NOT NULL COMMENT '读者编号',29 bookId VARCHAR(50) NOT NULL COMMENT '图书编号',30 lendDate DATETIME DEFAULT NOW() NOT NULL COMMENT '借阅⽇期',31 willDate DATE COMMENT '应归还⽇期',32 returnDate DATE COMMENT '实际归还⽇期'33 )COMMENT="图书借阅表";3435 #罚款记录表penalty36CREATE TABLE penalty(37 readerId VARCHAR(50) NOT NULL COMMENT '读者编号',38 bookId VARCHAR(50) NOT NULL COMMENT '图书编号',39 pDate DATE NOT NULL COMMENT '罚款⽇期',40 pType INT COMMENT '罚款类型:1-延期,2-损坏,3-丢失',41 amount DOUBLE COMMENT '罚款⾦额'42 )COMMENT="罚款记录表";4344 #删除信息表45USE Library;46DROP TABLE IF EXISTS book;47DROP TABLE IF EXISTS reader;48DROP TABLE IF EXISTS borrow;49DROP TABLE IF EXISTS penalty;5051 #给borrow添加复合主键52ALTER TABLE borrow53ADD CONSTRAINT pk_borrow PRIMARY KEY(readerId,bookId,lendDate); 5455 #给penalty添加复合主键56ALTER TABLE penalty57ADD CONSTRAINT pk_penalty PRIMARY KEY(readerId,bookId,pDate); 5859 ##删除borrow和penalty的主键60ALTER TABLE borrow61DROP PRIMARY KEY;62ALTER TABLE penalty63DROP PRIMARY KEY;64 ##删除borrow和penalty的外键65ALTER TABLE borrow66DROP FOREIGN KEY fk_borrow_book;67ALTER TABLE borrow68DROP FOREIGN KEY fk_borrow_reader;69ALTER TABLE penalty70DROP FOREIGN KEY fk_penalty_book;71ALTER TABLE penalty72DROP FOREIGN KEY fk_penalty_reader;7374 #给borrow添加外键75ALTER TABLE borrow76ADD CONSTRAINT fk_borrow_book FOREIGN KEY(bookId)77REFERENCES book(bookId);78ALTER TABLE borrow79ADD CONSTRAINT fk_borrow_reader FOREIGN KEY(readerId)80REFERENCES reader(readerId);8182 #给penalty添加外键83ALTER TABLE penalty84ADD CONSTRAINT fk_penalty_book FOREIGN KEY(bookId)85REFERENCES book(bookId);86ALTER TABLE penalty87ADD CONSTRAINT fk_penalty_reader FOREIGN KEY(readerId)88REFERENCES reader(readerId);。

MySQL学习笔记:repeat、loop循环

MySQL学习笔记:repeat、loop循环

END 2018-05-22 13:15:09
DECLARE a INT DEFAULT 10; REPEAT
SET a = a - 1; UNTIL a < 5 END REPEAT;
SELECT a; END $$ DELIMITER ;
# 调用 CALL test_repeat();
# 删除 DROP PROCEDURE test_repeat;
SET t = t + 1; IF t > 10 THEN LEAVE label; END IF; END LOOP label;
SELECT t; END $$ DELIMITER ;
# 调用 CALL test_loop();
# 删除 DROP PROCEDURE test_loop;
注意 loop 一般要和一个标签(此处为label,名称可以自定义,不过要保证前后一致)一起使用,且在 loop 循环中一定要有一个判断条 件,能够满足在一定的条件下跳出 loop 循环(即 leave )!
注意loop一般要和一个标签此处为label名称可以自定义不过要保证前后一致一起使用且在looБайду номын сангаас循环中一定要有一个判断条件能够满足在一定的条件下跳出loop循环即leave
MySQL学习笔记: repeat、 loop循环
一 、 repeat循 环
# ---- repeat ---DELIMITER $$ CREATE PROCEDURE test_repeat() BEGIN
注意使用repeat的时候,在判断条件(until条件)的那一行句末不加分号,这个很容易出错!
二 、 loop循 环
# ---- loop ---DELIMITER $$ CREATE PROCEDURE test_loop() BEGIN

mysql基础知识笔记总结

mysql基础知识笔记总结

mysql基础知识笔记总结创建数据库在与数据进⾏任何其他操作之前,需要创建⼀个数据库。

数据库是数据的容器。

它可以⽤于存储联系⼈,供应商,客户或任何想存储的数据。

在MySQL中,数据库是⽤于存储和操作诸如表,数据库视图,触发器,存储过程等数据的对象的集合。

要在MySQL中创建数据库,请使⽤CREATE DATABASE语句,如下:CREATE DATABASE [IF NOT EXISTS] database_name;SQL我们来更详细地看看CREATE DATABASE语句:CREATE DATABASE语句的后⾯是要创建的数据库名称。

建议数据库名称尽可能是有意义和具有⼀定的描述性。

IF NOT EXISTS是语句的可选⼦句。

IF NOT EXISTS⼦句可防⽌创建数据库服务器中已存在的新数据库的错误。

不能在MySQL数据库服务器中具有相同名称的数据库。

例如,要创建⼀个名称为mytestdb数据库,可以执⾏CREATE DATABASE语句后接数据库名称:mytestdb,如果当前MySQL服务器中没有数据库:mytestdb,则创建成功,如下所⽰:CREATE DATABASE IF NOT EXISTS mytestdb;SQL执⾏此语句后,MySQL返回⼀条消息,通知新数据库是否已成功创建。

显⽰数据库SHOW DATABASES语句显⽰MySQL数据库服务器中的所有数据库。

您可以使⽤SHOW DATABASES语句来查看您要创建的数据库,或者在创建新数据库之前查看数据库服务器上的所有数据库,例如:+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || testdb || yiibaidb |+--------------------+5 rows in set在此MySQL数据库服务器中有6个数据库。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、启动MySQL Server 启\\> C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\mysqld 2、停止MySQL Server C:\\> C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\mysqladmin -u root shutdown
3
二、连接Mysql 二、连接Mysql
1、格式:mysql -h 远程主机地址 -u 用户 名 -p 回车,输入密码; 2、mysql –u root -p 回车; 3、Enter password: ,输入密码就可以进入 mysql>; 4、退出命令:>exit或ctrl+D。
4
三、Mysql管理与授权 三、Mysql管理与授权
给root用户添加密码: mysqladmin -u root password 52netseek 因为开始root没有密码,所以-p旧密码一项 可以省略。 登陆测试: # mysql -u root -p 回车 输入密码,成功登陆。
6
创建数据库添加用户并授予相应的权限: mysql> create database phpbb; mysql> use phpbb; Database changed mysql> grant create,select,update,insert,delete,alter -> on phpbb.* -> to phpbbroot@localhost identified by '52netseek';
13
>desc personal; 显示表结构: +------------+------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+------------+------+-----+---------+-------+ | member_no | char(5) | | PRI | | | | name | char( | YES | | NULL | | | birthday | date | YES | | NULL | | | exam_score | tinyint(4) | YES | | NULL | | +------------+------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) >insert into personal values (‘001’,‘netseek’,‘1983-0315’,‘95’); 插入数据 > insert into personal values ('002','heihei','1982-02-24','90'); >insert into personal values ('003','gogo','1985-05-21','85'); >insert into personal values ('004','haha','1984-02-25','84'); >insert into personal values ('005','linlin','1982-04-28','85'); >insert into personal values ('006','xinxin','1985-03-15','75');14
17
五、数据库的导入与导出
导入: 从文件中加载数据库: mysql>load data infile "/tmp/name.txt" into table names; mysql>select * from names;
18
导出: 使用select into outfile 'filename'语句 使用mysqldump实用程序 使用select into outfile 'filename'语句 1.只能处理单个表,输出文件只有数据,没有表结构 我们要将office,其中有一个表为personal,现在要把personal 卸成文本文件out.txt: >use office; >select * from personal into outfile 'out.txt'; 可以看在 /var/lib/mysql/office/目录下有out.txt select * from personal into outfile './out.txt'; 可以看在out.txt 在/var/lib/mysql/目录下用out.txt
MYSQL数据库学习笔记 MYSQL数据库学习笔记
20092009-3-26
1
纲要:
一、启动/关闭MySQL Server 二、连接MySQL 三、MySQL管理与授权 四、数据库简单操作 五、数据库的导入与导出 六、数据库备份 七、
2
一、启动/关闭MySQL 一、启动/关闭MySQL Server
19
2.使用mysqldump实用程序(可以轻松处理多个表) # cd /var/lib/mysql 导出建立相关表的建表命令和插入指令 # mysqldump bbs >bbs.sql 将数据库bbs导入到bbs.sql中 如果要将bbs.sql导入数据库可以使用: mysql> create database bbstest; 先建立一个名为office 的数据库. # mysql bbstest 只想导出建表指令: # mysqldump -d bbs >bbscreate.sql 只想导出插入数据的sql指令: # mysqldump -t bbs >bbsinsert.sql 同时导出数据库中建表指令和表中的数据: # mysqldump -T./ bbs cdb_admingroups (其中./表示当前目 录,cdb_admingroups为bbs数据库其中的一个表) #ls cdb_admingroups.sql 导出了建表指令 cdb_admingroups.txt 导出了表中的数据
15
修改数据库表: 要求: 在birthday这后增加一个为height的字段,数据类型为tinyint. 将 字段exam_score 改名为scores,数据类型不变 。 >alter table personal ->add column height tinyint after birthday, ->change column exam_score scores tinyint; mysql> select * from personal; +-----------+---------+------------+--------+--------+ | member_no | name | birthday | height | scores | +-----------+---------+------------+--------+--------+ | 001 | netseek | 1983-03-15 | NULL | 95 | | 002 | heihei | 1982-02-24 | NULL | 90 | | 003 | gogo | 1985-05-21 | NULL | 85 | | 004 | haha | 1984-02-25 | NULL | 84 | | 005 | linlin | 1982-04-28 | NULL | 85 | | 006 | xinxin | 1985-03-15 | NULL | 75 | +-----------+---------+------------+--------+--------+
16
给表中插入数据: >update personal set scores=95+5 where name='netseek'; >select scores from personal where name='netseek'; +--------+ | scores | +--------+ | 100 | +--------+ 删除表名字为'gogo'所有的信息中的的: > delete from personal where name='gogo'; 册除数据库中的表: mysql>drop table if exists personal;
7
授予所有的权限: >grant all privileges >on bbs.* >to bbsroot@localhost identified by ‘52netseek‘; 回收权限: revoke create,select,update,insert,delete,alter on phpbb.* from phpbbroot@localhost identified by '52netseek';
相关文档
最新文档