MySQL中的SQL高级语句[一](上篇)

这篇具有很好参考价值的文章主要介绍了MySQL中的SQL高级语句[一](上篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用语言 MySQL

使用工具 Navicat Premium 16

代码能力快速提升小方法,看完代码自己敲一遍,十分有用

  • 拖动表名到查询文件中就可以直接把名字拉进来
  • 以下是使用脚本方法,也可以直接进行修改
  • 中括号,就代表可写可不写 

目录

1.修改数据表结构

1.1 修改数据库的表名 

1.2 修改数据表的字段 

1.3 给数据表添加字段 

1.4 删除数据表的字段 

1.5 添加主外键约束 

1.5.1 添加主键约束 

1.5.2 添加外键约束 

1.5.3 判断是主表(父表)还是外表(子表)

2.DML语句 

2.1 插入数据语句

2.1.1 插入单行数据

2.1.2 插入多行数据 

2.1.3 将查询结果插入新表

2.1.4 插入示例

2.1.5 使用时需注意

2.2 更新数据语句 

2.2.1 更新数据语法

2.2.2 更新示例

 2.3 删除数据语句

2.3.1 delete语法

2.3.2 truncate语法 

2.3.3 TRUNCATE、Drop、Delete的区别 

2.3.4 删除示例 


 

1.修改数据表结构

在项目开发过程中,应尽量在设计阶段将项目中可能存在的问题考虑全面,将数据表设计完整。但是总会出现因业务变动等因素需要对已经创建好的数据表去做修改表的操作,如添加、删除字段等。如果采用将表删除后重建的方式实现,很容易造成已有数据的丢失,影响业务,风险比较大。此时,需要在原有表结构的基础上对表进行修改。MySQL可以通过alter关键字实现此功能。在修改操作之前,应先使用show tables语句确认该表是否存在于数据库中。 

1.1 修改数据库的表名 

使用SQL语句对已创建的表修改表名,语法如下:

  • alter table 旧表名 rename [to] 新表名;

其中,to为可选,使用与否不影响结果。此语句仅修改表名,并不更改表的结构。 

1.2 修改数据表的字段 

数据表中的字段包含字段名和数据类型,可以使用SQL修改字段名和修改数据存储类型及属性。语法如下:

  • alter table 表名 change 原字段名 新字段名 数据类型 [属性];

其中,原字段名指修改前的字段名,新字段名为修改后的;数据类型指修改后的,若不需要修改数据类型,则与原数据类型保持一致,但数据类型不能为空;属性可为空,若修改时未添加属性,则修改后的字段无任何属性约束。 

由于不同类型的数据存储释放和长度不同,修改数据类型可能会影响数据表中已有的数据,因此,已有数据情况下不轻易修改数据类型;

1.3 给数据表添加字段 

随着业务需求的变化,可能需要向已存在的表中添加新的字段。添加字段的语法格式如下:

  • alter table 表名 add 字段名 数据类型 [属性]; 

1.4 删除数据表的字段 

在开发过程中,由于业务的改变,也有将数据表中的某个字段从表中移除的需求。删除字段的语法格式如下:

  • alter table 表名 drop 字段名; 

1.5 添加主外键约束 

1.5.1 添加主键约束 

语法如下:

  • alter table 表名 [add constraint 主键名] primary key 表名(主键字段); 

MySQL中的SQL高级语句[一](上篇),Java分享,mysql,数据库 

1.5.2 添加外键约束 

语法如下:

  • alter table 表名 [add consran 外键名] foreign key (外表外键字段) references 关联表名(关联字段); 

MySQL中的SQL高级语句[一](上篇),Java分享,mysql,数据库 

在MySQL中,InnoDB存储类型的表支持外键,MyISAM存储类型的表不支持外键。因此,对于MyISAM存储类型的表,也可以通过建立逻辑关联的方式保证数据的完整性和一致性。 

1.5.3 判断是主表(父表)还是外表(子表)

MySQL中的SQL高级语句[一](上篇),Java分享,mysql,数据库
1.查看这张表有没有其他表的主键,没有的话就是主表,有的话就是外表
2.语法中的主键名,就是设计表上方索引的名(一般以PK_字段名命名)
3.语法中的外键名就是设计表上方外键的名(一般以FK_字段名命名)
4.创建外键,第一个表名写外表,第二个外键字段写外表中需要创建关系的字段,最后一个写主表中的需要创建关系字段(从外写到主)
5.添加数据先添加主表,然后再添加外表

2.DML语句 

常用的DML语句——增、删、改语句的使用方法。 

2.1 插入数据语句

完成数据库搭建及数据表的创建后,就需要向数据表中添加数据。使用insert语句向数据表中插入数据的语法如下: 

2.1.1 插入单行数据

  • insert into 表名[(字段名列表)] values (值列表); 

2.1.2 插入多行数据 

 MySQL支持在一条SQL语句中依次向数据表中插入多条记录。插入多个值列表时,每个值列表之间用逗号分隔。语法格式如下:

  • insert into 表名[(字段名列表)] values (值列表1),(值列表2)...,(值列表n);

除数字类型之外的所有数据类型都要加单引号包住;

2.1.3 将查询结果插入新表

在MySQL中,如果想把一个表中的数据查询后存储至另一张表的语法如下:

  • create table 新表(select 字段1,字段2, ... form原表);

使用as放在对应的字段或者表名后面时,可以为这个前面的字段添加别名;

2.1.4 插入示例

MySQL中的SQL高级语句[一](上篇),Java分享,mysql,数据库 MySQL中的SQL高级语句[一](上篇),Java分享,mysql,数据库

运行结果 

MySQL中的SQL高级语句[一](上篇),Java分享,mysql,数据库 

这个代表,有4行受到影响;

查询结果 

MySQL中的SQL高级语句[一](上篇),Java分享,mysql,数据库 如果执行以上创建a表的语句后,执行结果如下:

MySQL中的SQL高级语句[一](上篇),Java分享,mysql,数据库 查询的结果如下: 

MySQL中的SQL高级语句[一](上篇),Java分享,mysql,数据库 

2.1.5 使用时需注意

MySQL中的SQL高级语句[一](上篇),Java分享,mysql,数据库 

  • 可以直接选中表中需要添加数据的行,然后右键,可以复制脚本代码来赋值;
  • 字段名列表是可选项,若省略,则依次插入所有字段。
  • 若插入表的是部分数据,字段名列表不能省略。
  • 值列表必须和字段名列表的数量相同,且数据类型一致。
  • 多个字段名和多个值之间使用逗号分隔。
  • 自增列如果一定要写的话写null或者0,自增列一般默认不写,这时就要使用字段名列表 ;

2.2 更新数据语句 

2.2.1 更新数据语法

更新表中的数据也是软件开发经常使用的技能。通常使用update语句更新数据表中的数据。语法格式如下:

  • update 表名 set 字段1=值1,字段2=值2,...,字段n=值n [where 条件]; 

2.2.2 更新示例

MySQL中的SQL高级语句[一](上篇),Java分享,mysql,数据库 

运行结果 

  • 原来的查询结果 MySQL中的SQL高级语句[一](上篇),Java分享,mysql,数据库
  • 更新后的查询结果 MySQL中的SQL高级语句[一](上篇),Java分享,mysql,数据库

 2.3 删除数据语句

2.3.1 delete语法

  • delete from 表名 [where 条件]; 

2.3.2 truncate语法 

  • truncate table 表名; 

2.3.3 TRUNCATE、Drop、Delete的区别 

  • truncate语句删除表中的所有数据时会重置自增列,表结构及其字段、约束、索引保持不变,执行速度比delete语句快。
  • drop和truncate都无法回滚,但是delete可以。
  • drop和delete只是删除表的数据(定义),drop语句将删除表的结构、被依赖的约束(constrain)、触发器 (trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid状态。
  • delete语句是DML语言,这个操作会放在rollback segement中,事物提交后才生效;如果有相应的触发器(trigger),执行的时候将被触发。truncate、drop是DDL语言,操作后即 生效,原数据不会放到rollback中,不能回滚,操作不会触发trigger。
  • delete语句不影响表所占用的extent、高水线(high watermark)保持原位置不动。drop语句将表所占用的空间全部释放。truncate语句缺省情况下将空间释放到minextents的 extent,除非使用reuse storage。truncate会将高水线复位(回到最初)。
  • 效率方面:drop > truncate > delete
  • 安全性:小心使用drop与truncate,尤其是在 没有备份的时候,想删除部分数据可使用delete需要带上where子句,回滚段要足够大,想删除表可以用drop,想保留表只是想删除表的所有数据、 如果跟事物无关可以使用truncate,如果和事物有关、又或者想触发 trigger,还是用delete,如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入、插入数据。
  • delete是DML语句,不会自动提交。drop/truncate都是DDL语句,执行后会自动提交。
  • drop一般用于删除整体性数据 如表,模式,索引,视图,完整性限制等;delete用于删除局部性数据 如表中的某一元组
  • DROP把表结构都删了;DELETE只是把数据清掉
  • 当你不再需要该表时, 用 drop;当你仍要保留该表,但要删除所有记录时, 用 truncate;当你要删除部分记录时(always with a WHERE clause), 用 delete. 

2.3.4 删除示例 

MySQL中的SQL高级语句[一](上篇),Java分享,mysql,数据库 

运行后查询结果

MySQL中的SQL高级语句[一](上篇),Java分享,mysql,数据库 如果truncate无法删除,可以先delete,然后使用:

ALTER TABLE table_name AUTO_INCREMENT = 重置从哪里开始;文章来源地址https://www.toymoban.com/news/detail-851537.html

到了这里,关于MySQL中的SQL高级语句[一](上篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Linux操作系统中的MySQL数据库SQL语句(三十一)

    MySQL数据库SQL语句 目录 一、SQL语句类型 1、DDL 2、DML 3、DCL 4、DQL 二、数据库操作 1、查看 2、创建 2.1、默认字符集 2.2、指定字符集 3、进入  4、删除 5、更改 6、练习 三、数据表操作 (一)数据类型 1、数值类型 1.1、TINYINT 1.2、SMALLINT 1.3、INT 1.4、BIGINT 1.5、FLOAT(M,D) 2、时间

    2024年02月15日
    浏览(68)
  • MySQL高级(进阶)SQL语句

    #显示一个字段或者多个字段的所有内容 SELECT “字段” FROM 表名 ; #distinct对字段去重查询 (最好只对单个字段进行去重) SELECT DISTINCT 字段名 FROM 表名 #where 有条件查询 SELECT “字段” FROM 表名 WHERE 条件(例如:sales =!= 100); #and or 查看多个条件 SELECT “字段” FROM 表名 WHE

    2024年02月05日
    浏览(44)
  • MySQL 高级(进阶) SQL 语句

     创建两表以供使用   ---- SELECT ----显示表格中一个或数个字段的所有数据记录 ---- DISTINCT ----不显示重复的数据记录 ---- WHERE ----有条件查询 ---- AND OR ----且 或 ---- IN ----显示已知的值的数据记录 ---- BETWEEN ----显示两个值范围内的数据记录(包含边界值) ---- 通配符 ----通常通配

    2024年02月10日
    浏览(52)
  • mysql高级sql语句-全面

    显示表格中一个或数个字段的所有数据记录 在已知的字段数据取值范围内取值 在两个字段数据值之间取值,包含两边字段的数据 通常通配符都是与like配合使用的 % :百分号表示零个、一个或多个字符 _ :下划线表示单个字符 名称 作用 举例 ‘A_Z’ 所有以 ‘A’ 起头,另一

    2024年02月11日
    浏览(37)
  • MySQL数据库管理高级语句

    复制表及内容     克隆表 获取数据表的表结构、索引等信息    清空表,删除表内的所有数据       删除的特点: 创建临时表 临时表创建成功之后,使用SHOWTABLES命令是看不到创建的临时表的, 临时表会在连接退出后被销毁。 如果在退出连接之前,也可以可执行增删改查

    2024年02月11日
    浏览(70)
  • MySQL数据库高级查询语句

    基于这两个数据库表格来实现以下实验 concat(x,y)将提供的参数x和y拼接成一个字符串 trim()返回去除指定格式的值 GROUP BY 有一个原则,凡是在 GROUP BY 后面出现的字段,必须在 SELECT 后面出现; 凡是在 SELECT 后面出现的、且未在聚合函数中出现的字段,必须出现在 GROUP BY 后

    2024年02月11日
    浏览(70)
  • MySQL数据库——高级查询语句

    数据库是用来存储数据,更新,查询数据的工具,而查询数据是一个数据库最为核心的功能,数据库是用来承载信息,而信息是用来分析和查看的。所以掌握更为精细化的查询方式是很有必要的。本文将围绕数据的高级查询语句展开。 1.指定指字段进行查询——SELECT 语法:

    2024年02月11日
    浏览(94)
  • MySQL 高级(进阶) SQL 语句二

    MYSQL数据库中的三种连接: inner join(内连接):只返回两个表中联结字段相等的行(有交集的值) left join(左连接):返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右连接):返回包括右表中的所有记录和左表中联结字段相等的记录 注:oracle数据库支持 outer

    2024年02月07日
    浏览(45)
  • 数据库应用:MySQL高级语句(一)

    目录 一、理论 1.常用查询 2.函数 3.进阶查询 二、实验 1.普通查询 2.函数 3.进阶查询 三、问题 1.MySQL || 运算符不生效 四、总结 常用查询包括:增、删、改、查; 对 MySQL 数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理。 (1)selelct select,显示表格中

    2024年02月17日
    浏览(88)
  • Linux5.7 MySQL 高级(进阶) SQL 语句

    第四章 LINUX MySQL 高级(进阶) SQL 语句 一、高级SQL 语句 1.SELECT 显示表格中一个或数个字段的所有数据记录 2.DISTINCT 不显示重复的数据记录 3.WHERE 有条件查询 4.AND OR 且 或 5.IN 显示已知的值的数据记录 6.BETWEEN 显示两个值范围内的数据记录 7.通配符 通常通配符都是跟 LIKE 一起使用

    2024年02月09日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包