![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SQL学习
SQL
AAA非专业划水人士小张
这个作者很懒,什么都没留下…
展开
-
SQLZoo:SELECT from WORLD Tutorial/zh
name continent area population gdpAfghanistan Asia 652230 25500100 20343000000Albania Europe 28748 2831741 12960000000…name:國家名稱continent:洲份area:面積population:人口gdp:國內生產總值Country Profile在這教程中,我們會使用SELECT語句,對World表格進行查詢。閱讀此表的注意事項 觀察運行一個簡單的SQL命令原创 2024-03-15 17:36:31 · 558 阅读 · 0 评论 -
SQL zoo(zh)习题记录Ⅰ
這個教程介紹SQL語言。我們會使用SELECT語句。我們會使用WORLD表格name:國家名稱continent:洲份area:面積population:人口gdp:國內生產總值。原创 2024-03-15 15:21:28 · 578 阅读 · 0 评论 -
SQL学习27-33
原创 2024-03-14 15:37:28 · 353 阅读 · 0 评论 -
存储过程概述与创建
为结束符,而在procedure中经常要用到默认的命令结束符——分号(😉 所以在创建procedure的时候需要定义新的结束符以说明创建procedure的命令结束,所以需更改命令结束符(常将结束符号改成美元符号–$或//等).如果我们没有声明新分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前的结束符,这样MySQL才会将原结束符“;当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。原创 2024-03-13 16:11:12 · 1158 阅读 · 0 评论 -
触发器
触发器(TRIGGER)是MySQL的与表的insert,delete,update语句相关的数据库对象之一,当表上出现特定事件时,比如当对一个表进行操作(insert,delete,update)时, 将激活该对象, 就会自动执行。对其他程序员来说,触发器是看不到的,但是的确存在,如果不用触发器的话,更新了某表的某字段时,还要写代码去更新其他表里面的冗余字段,如果是几张表都有冗余字段时,自动操作就很方便。触发器有回滚性,就是一共要更新五张表的数据时,不会出现更新了二个张表,而另外三张表没有更新的情况。原创 2024-03-13 04:59:46 · 696 阅读 · 0 评论 -
视图
默认情况下,在当前数据库下创建视图,若想给其他数据创建视图,必须在视图名前指定目标数据库名称 ,写为“数据库名.视图名”的形式: db_name.view_name,视图名不能与任何同个库中的表名重名;Ø 安全性:如果想要使用户只能查询或修改用户有权限访问的数据,也可以只授予 用户访问视图的权限,不授予访问表的权限,这样就提高了数据库的安全性。Ø 简化数据查询和处理:视图可以为用户集中多个表中的数据,使用户可以将注意 力集中在他们关心的数据上,简化用户对数据的查询和处理;在已有视图中创建新的视图。原创 2024-03-12 21:28:48 · 921 阅读 · 0 评论 -
子查询的特殊用途
二、演示SELECT查询的特殊用途。一、在数据操作语句中使用子查询。原创 2024-03-12 14:57:25 · 372 阅读 · 0 评论 -
子查询
1.带in的子查询中,内查询和外查询必须使用意义相同的字段来构造条件;2. 如果内查询的结果只有一个返回值,则可以用关系运算符或者in来构造条件;3. 如果内查询的结果有多个返回值,则必须只能用in来构造条件。原创 2024-03-12 14:15:57 · 1422 阅读 · 0 评论 -
外连接 (outer join)
右连接是左连接的反向连接,查询结果为右表中的所有记录以及左表中连接字段相等的记录。tableA RIGHT JOIN tableB与 tableB left JOIN tableA 是等价,其中 tableB 都是主表,连接后tableB中的所有记录都将会保留。Ø 外连接操作是生成笛卡尔积后,在其中按照on连接条件进行数据匹配,以指定表为连接主体,将其中不满足连接条件的记录也保留,对无法匹配的内容用null值填充,一并输出。完全连接返回左表和右表中的所有记录,包括连接字段相等的记 录和不相等的记录。原创 2024-03-11 16:35:10 · 864 阅读 · 0 评论 -
内连接(INNER)
所以内连接的运算量也是非常大的。所谓内连接查询的自然连接(natural join)操作就是在表关系的笛卡尔积中,首先根据表关系中所有相同名称的字段且值都相同的记录自动进行匹配,然后去掉重复的字段。Ø 对于三个表:表 A、表 B和表 C ,如果A与B没有共同内容的字段,不能建立直接的联系,而它们都与C有共同内容的字段,此时可以用C作为桥梁,将A与B建立连接。2语法形式:select 字段1,字段2,,,字段n from 连接表1 [as表别名1],连接表2 [as表别名2] where 连接条件;原创 2024-03-11 14:32:22 · 1129 阅读 · 0 评论 -
连接查询
就是在表关系的笛卡尔积中,让两个表的记录在某种条件下匹配起来,根据表关系中相应字段的比较条件进行选择,生成一个新的表关系。所谓的内连接操作就是在表关系的笛卡尔积中,保留表关系中所有匹配的数据记录,然后去掉不匹配的数据记录。,字段n From 连接表1 [as 表别名1] Cross join 连接表2 [as 表别名2];连接操作分为交叉连接 (cross join,即笛卡尔积 )、内连接(INNER JOIN)、外连接(outer join)。笛卡尔积的连接结果的记录数为两个表的记录数的乘积。原创 2024-03-11 05:10:46 · 225 阅读 · 0 评论 -
SQL学习二十~二十六
原创 2024-03-10 19:12:06 · 73 阅读 · 0 评论 -
DATE_SUB或DATE_ADD
DATE_SUB或DATE_ADD(date, INTERVAL expr type)将日期date提前或推后指定的expr type时间间隔。expr 是一个表达式,用来指定从起始日期加上(推后)或减去(提前)的时间间隔表达式值。DATE_ADD (date2 , INTERVAL d_value d_type ) 对时间进行加(向后推移)。DATE_SUB (date2 , INTERVAL d_value d_type )对时间进行减(向前推移)。• 返回结果: -> ‘1998-02-02’原创 2024-03-10 15:58:21 · 330 阅读 · 0 评论 -
STR_TO_DATE(string,format) 格式format的表示法:
(不可用:%h 小时(01…12) %I 小时(01…12) %l 小时(1…%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。%Y 年, 数字, 4 位 (不可用:%y 年, 数字, 2 位 )%w 一个星期中的天数(0=Sunday …%r 时间,12 小时(hh:mm:ss [AP]M)23) %k 小时(0…%T 时间,24 小时(hh:mm:ss)%d 月份中的天数, 数字(00…%e 月份中的天数, 数字(0…%i 分钟, 数字(00…%m 月, 数字(01…原创 2024-03-10 01:44:39 · 267 阅读 · 0 评论 -
Limit的对效率的影响分析
Ø 当数据量很大并且起始行号较小时,使用limit能够避免。Ø 当数据量很大量并且起始行号较大时,仅用limit来限制。Limit的对效率的影响分析。全表扫描而提高查询效率;提取行数会导致效率低下。原创 2024-03-09 22:42:40 · 122 阅读 · 0 评论 -
运算中字符串自动转换数字
当执行转换时,MySQL遵循两个基本规则:原创 2024-03-09 02:10:27 · 99 阅读 · 0 评论 -
SQL学习十八~十九
原创 2024-03-08 23:04:51 · 154 阅读 · 0 评论 -
数据库查询
查询产生一个虚拟表,看到的是表形式显示的结果,但结果并不真正存储,每次执行查询只是现从数据表中提取数据,并按照表的形式显示出来。原创 2024-03-08 22:06:58 · 72 阅读 · 0 评论 -
MySQL 主键与索引的联系与区别
(5). 主键和索引都是键,不过主键是逻辑键,索引是物理键,意思就是主键不实际存在,而索引实际存在于数据库中,主键一般都要设,主要是用来避免一张表中有相同的记录,索引一般可不建,但若需要对该表进行查询操作,则最好建,这样可以加快检索速度。(2). 一个表中可以有多个索引,但通常只能有一个主键(必要时也可设多个主键,新版本MySQL中主键也可以由多个字段组成,组成复合主键,同时主键肯定也是唯一索引 )。比如看书,书的每页都有个页码(对每页来说,它的页码是唯一的),数据表的主键就相当于是这个页码。原创 2024-03-08 21:18:31 · 695 阅读 · 0 评论 -
SQL学习十六~十七
原创 2024-03-07 18:59:34 · 98 阅读 · 0 评论 -
SQL索引
根节点、非叶级节点和叶级节点都位于索引页中,统称为索引页节点,属于索引页的范筹。这种表我们称为堆表,因为所有的数据页都是无序的,杂乱无章的,在查询数据时,需要一条一条记录查询,有时第一条记录就能找到,最坏的情况是在最后一条记录中查找到,但是千万不要认为SQL此时查找到数据后会当成结果立即返回,SQL即使查找到了记录,也会将所有数据遍历一次,这能从最终的执行计划中得知,就是平时说的表扫描,对于没有索引的表也能查询,就是效率会特别低,如果数据量稍大的话。1、经常被查询的字段,即在where子句中出现的字段。原创 2024-03-07 18:33:51 · 647 阅读 · 0 评论 -
用load data语句将Excel表格中的数据导入注意事项
(2). 如果被导入的txt文件的路径写上了“\”,有时会提示找不到指定的文件,这时将反斜杠换为“/”,或者不写“\”与“/”,例如可写为“D:book.txt”.(4). 如果导入后数据与在源文件中的值不同,都变为0值,则问题可能出在目标文件的列与源文件的列没有对应好,可用desc查看结构。(6). 可以将“性别”字段设置为Enum型数据,在源文件中的0或1值,到目标文件中能完全对应正确。(1). 被导入的txt文件的路径最好选择C盘以外的盘,否则可能会提示路径错误,找不到文件。原创 2024-03-07 11:42:46 · 291 阅读 · 0 评论 -
replace与update
replace into不能从当前行中引用值,也不能在新行中使用值。1、(执行)首先判断数据是否存在;replace into 表名 set 字段=字段+1 where id=1;3、(不执行)如果存在,某字段值在原来的基础上加上或减去某个数,如加一操作。update 表名 set 字段=字段+1 where id=1;a. 从表中删除含有重复关键字值的冲突行。b. 再次尝试把新行数据添加到表中;2、(执行)如果不存在,则插入;原创 2024-03-07 10:52:52 · 337 阅读 · 0 评论 -
replace into 与insert into的区别
• 使用replace向表插入新记录时,如果要添加的新记录的主键值或者唯一性约束的字段值与表中已有某记录相同,则先删除已有记录,(注意:已有记录删除时也不能违背外键约束条件),然后再插入新记录,也就是说如果新加入的主键或者唯一性约束的字段值与已有记录相同时会覆盖掉原有相同数据,相当于是更新操作。2、 执行replace into时,如果表中没有此数据,则直接插入新数据。• 使用insert 向表插入新记录时,如果新记录的主键值或者唯一性约束的字段值与已有记录相同,则会提示错误,不执行命令。原创 2024-03-07 10:27:48 · 881 阅读 · 0 评论 -
SQL学习十四~十五
原创 2024-03-06 23:54:57 · 162 阅读 · 0 评论 -
SQL学习十二~十三
原创 2024-03-05 21:22:41 · 319 阅读 · 0 评论 -
SQL学习十一
原创 2024-03-05 02:45:16 · 169 阅读 · 0 评论 -
SQL学习⑩
原创 2024-03-04 17:20:55 · 390 阅读 · 0 评论 -
SQL学习⑨
原创 2024-03-04 12:50:09 · 158 阅读 · 1 评论 -
SQL学习⑧
原创 2024-03-03 15:25:47 · 66 阅读 · 0 评论 -
存储引擎详解——DBD HEAP Gemeni ISAM MERGE
DBDBerkeley DB(DBD)表是支持事务处理的表,由Sleepycat软件公司开发。它提供MySQL用户期待已久的功能–事务控制。事务控制在任何数据库系统中都是一个极有价值的功能,因为它们确保一组命令能成功地执行或回滚。HEAPHEAP表是MySQL中存取数据最快的表。这是因为他们使用存储在动态内存中的一个散列索引,不过如果MySQL或服务器崩溃,这些内存数据将会丢失。SQL举例:CREATE TABLE tb_test TYPE=HEAP (name char(10) NOT NULL原创 2024-03-03 14:34:17 · 157 阅读 · 0 评论 -
存储引擎详解——InnoDB
如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,同样应该使用InnoDB表。对于支持事务的InnoDB类型的表来说,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动提交,严重影响了速度。InnoDB是MySQL 4.0之后推出的一种比较新的数据表类型,这种类型是事务安全的。InnoDB表格速度很快,具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它。原创 2024-03-03 14:28:25 · 244 阅读 · 0 评论 -
存储引擎详解——MyIASM
所以假如忽略事务以及访问并发性的话,并且需要执行大量的SELECT检索语句的话,MyISAM将是最好的选择,原因:MyIASM表小于IASM表,所以使用较少资源。因此,应用中应尽量避免出现长时间运行的查询操作,不要总想用一条SELECT语句来解决问题,因为这种看似巧妙的SQL语句,往往比较复杂,执行时间较长,在可能的情况下可以通过使用中间表等措施对SQL语句做一定的“分解”,使每一步查询都能在较短时间完成,从而减少锁冲突。注意:在查询结束后,不会将索引的改变数据写入磁盘,而是改变内存中的索引数据。原创 2024-03-03 14:25:42 · 429 阅读 · 0 评论 -
SQL学习⑦
原创 2024-03-03 12:35:04 · 95 阅读 · 0 评论 -
SQL学习⑥
原创 2024-03-02 15:17:53 · 100 阅读 · 0 评论 -
SQL学习⑤
原创 2024-03-02 14:35:03 · 88 阅读 · 0 评论 -
日期类型datetime和timestamp区别
datetime的存储范围是1000-01-01 00:00:00.000000 到 9999-12-31 23:59:59.999999,而timestamp的范围是1970-01-01 00:00:01.000000到 2038-01-19 03:14:07.999999(准备的来讲应该是UTC范围);timestamp 通常是相对于某个特定时区的时间戳,但通常不包含时区信息。timestamp是一个表示时间戳的数据类型,通过表示从某个特定时间点开始经过的秒和毫秒数,他通常是一个整数和浮点数。原创 2024-03-02 00:07:48 · 843 阅读 · 0 评论 -
SQL学习④
原创 2024-03-01 18:51:35 · 91 阅读 · 1 评论 -
SQL学习③
原创 2024-03-01 14:23:26 · 186 阅读 · 1 评论 -
SQL ②
原创 2024-03-01 12:32:08 · 289 阅读 · 1 评论