MySQL高级查询
发布日期:2022-02-06 00:27:00 浏览次数:48 分类:技术文章

本文共 2311 字,大约阅读时间需要 7 分钟。

修改表

在创建数据库之后,有时候可能会因为某些原因需要修改表结构,这时,如果将表删除重建,往往还需要考虑表中的数据,风险比较大,此时需要在原来已存在的数据表结构上对其修改,MySQL使用==ALTER ==关键字实现。

==修改表名:==在一个数据库中,表名是唯一的。可以通过SQL语句对已创建的表修改表名,语法如下:

ALTER TABLE<旧表名> RENAME [TO] <新表名>;

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

ALTER TABLE 表名 ADD 字段名 数据类型 [属性];

==修改字段:==数据表中一个字段中包含字段名和数据类型,因此如果实现修改字段,可以包括修改字段名和修改数据存储的类型,语法如下:

ALTER TABLE 表名 CRANGE 原字段名 数据类型 [属性];

==删除字段:==删除字段是将数据表中的某个字段从表中移除,语法如下:

ALTER TABLE 表名 DROP 字段名;

添加主外键: ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段);(添加主键约束)

ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(外键字段)REFERENCES 关联表名(关联字段);(添加外键约束)

DML语句回顾

插入数据记录:在使用数据库之前,先要为数据表中添加数据,在SQL Server 中使用INSERT语句为表插入数据,语法如下:
INSERT INTO 表名 [(字段名列表)] VALUES (值列表);(插入单行数据)
其中:
–》表的字段名是可选的,如果省略,则依次插入所有字段。
–》多个列表和多个值之间用逗号分隔。
–》值列表必须和字段名列表数量相同,且数据类型相符。
–》如果插入的是表中部分数据,字段名列表必须填写。

与SQL Server中不同的是,在MySQL中INSERT 语句支持一次插入多条数据,插入时可指定多个值列表,每个值列表之间用逗号分隔

INSERT INTO 新表(字段名列表)VALUES(值列表1),…,(值列表n);(插入多行数据)

==将查询结果插入到新表:==以下两种句式可以实现将已有数据表中的数据备份到其他表中:

句式1语法:
INSERT INTO 新表(字段1,字段2,…)
SELECT 字段1,字段2,…
FROM 原表;
句式2语法:
SELECT 字段1,字段2,…
INTO 新表
FROM 原表;
以上句式2在MySQL中不支持,可以使用另外替代句式来实现同样的功能,语法如下:
CREATE TABLE 新表 (SELECT 字段1,字段2,…FROM 原表);

==更新数据记录:==对表中的数据进行更新是一类频繁发生的操作,在MySQL中更新数据的语句和SQL Server中相同。语法如下:

UPDATE 表名 SET 字段1=值1,字段2=值2,…字段n=值n(WHERE 条件)

==删除数据记录:==从数据表中删除数据 使用DELETE语句,同样也可以使用WHERE 子句添加删除条件,MySQL中的删除语句和SQL Server中相同,语法如下:

DELETE FROM 表名 [WHERE 条件];
除此之外,也可以使用TRUNCATE语句删除表中所有行:
TRUNCATE TABLE 表名;

数据查询

SQL Server中数据查询与金额SELECT语句,语法如下:
**SELECT<字段名列表>
FROM<表名或视图>
[WHERE<查询条件>]
[GROUP BY<分组的字段名>]
[HAVING<条件>]
**
其中:
–》字段名列表为要查询的字段名,各字段之间用逗号分隔,若查询表中所有字段,则使用" * "号表示。
–》FROM后的表名为要查询的数据的来源,可以单个或多个。
–》WHERE 子句为可选项,指定查询的条件。
–》GROUP BY子句表名查询出来的数据按指定字段进行分组。
–》HAVING子句用于筛选组。
–》ORDER BY子句指定按什么顺序显示查询出来的数据,什么字段的升序(ASC)或降序(DESC)。

LIMIT子句

在MySQL中,查询语法与SQL Server稍有不同,语法如下:
SELECT<字段名列表>
FROM<表名或视图>
[WHERE<查询条件>]
[GROUP BY<分组的字段名>]
[ORDER BY<排序的字段名>[ASC 或 DESC] ]
[LIMIT [ 位置偏移量,]行数];

–》位置偏移量指从结果集中第几条数据开始显示(第1条记录的位置偏移量是0),此参数可选,当省略时从第一条记录开始显示。

–》行数值显示记录的条数。

==数学函数:==在使用SQL语句进行数据操作时,有时也会需要进行数值运算。

在这里插入图片描述

子查询

简单子查询的语法:子查询在WHERE语句中的一般用法如下:
SELECT … FROM 表1 WHERE 字段1 比较运算符 (子查询);
其中,子查询语句必须放置在一对圆括号内:比较运算符包括 >,=,<,>=,<=.
因为 子查询作为WHERE 条件的一部分,所以还可以和UPDATE,INSERT,DELETE一起使用,语法类似于SELECT语句。

IN子查询:使用IN 关键字可以使父查询匹配子查询返回的多个单字段值。

使用=,>等比较运算符,要求子查询只能返回一条或空的记录。当子查询跟随在比较运算符之后时,不允许子查询返回多条记录。

转载地址:https://blog.csdn.net/weixin_46175284/article/details/106223825 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:数据库的设计
下一篇:认识MySqL

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年03月08日 15时00分06秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

mysql获取刚新增的数据库_如何取得刚插入数据库的数据的id mysql 2019-04-21
python将10到1递减_(Python)如何将3个递减列表合并成一个递减列表? 2019-04-21
python脚本怎么用来处理数据_长时间运行数据处理python脚本的程序结构 2019-04-21
python转成c 语言_将Python对象转换为C void类型 2019-04-21
resin mysql_Eclipse+resin+mysql 安装及环境配置 2019-04-21
redis的使用 Java_java中使用redis 2019-04-21
java 数组元素位置_Java – 在数组中获取元素位置 2019-04-21
c 泛型与java泛型_C ++和Java中的“泛型”类型之间有什么区别? 2019-04-21
java 返回实体对象_java 封装返回结果实体类 返回结果以及错误信息 2019-04-21
java web 防止sql注入攻击_JavaWeb防注入知识点(一) 2019-04-21
java ssm 异常分类_SSM项目常见的异常与处理提示(一) 2019-04-21
java定义矩形类_Java定义矩形类 2019-04-21
java变量怎么变常量_Java的常量与变量是什么?怎么学习呀? 2019-04-21
java开发招聘试题_客户化开发招聘试题-Java开发.doc 2019-04-21
java jdk win10 1335_win10下安装java jdk,tomcat 2019-04-21
java list二分查找_java中的ArrayList和LinkedList的二分查找速度比 | 学步园 2019-04-21
php中的变量名称用什么表示,PHP变量,方法,类等名称中的有效字符是什么? 2019-04-21
pic32mx是什么cpu_PIC32MX单片机外设库使用(Ⅰ)- 系统时钟及I/O口基本设置 2019-04-21
用c 在mysql上存图片_C 批量保存图片进 mysql 利用MYSQL_BIND插入longblob 2019-04-21
mysql 1045 28000_mysql报关于用户密码1045(28000),几种处理方法 (zhuan) 2019-04-21