数据库、数据表的基本操作及查询数据

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 数据库、数据表的基本操作及查询数据数据库的基本操作创建数据库 CREATE DATABASE database_namedatabase_name为要创建的数据库的名称删除数据库 DROP DATABASE database_namedatabase_name为要删除的数据库的名称数据库存储引擎数据库存储引擎是数据库底层软件组成,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据操作。

数据库、数据表的基本操作及查询数据
数据库的基本操作
创建数据库 CREATE DATABASE database_name
database_name为要创建的数据库的名称
删除数据库 DROP DATABASE database_name
database_name为要删除的数据库的名称
数据库存储引擎
数据库存储引擎是数据库底层软件组成,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据操作。
MySQL的核心就是存储引擎。

存储引擎比较

功能 MyISAM Memory InnoDB Archive
存储限制 256TB RAM 64TB None
支持事务 No No Yes No
支持全文索引 Yes No No No
支持数索引 Yes Yes Yes No
支持哈希索引 No Yes No No
支持数据缓存 No N/A Yes No
支持外键 No No Yes No

数据表的基本操作
创建数据表
创建表的语法形式
SQL CREATE TABLE<表名> ( 字段名1 数据类型 [列级别约束条件] [默认值], 字段名2 数据类型 [列级别约束条件] [默认值], …… [表级别约束条件] );
使用主键约束

主键约束要求主键列的数据唯一,并且不允许为空。他能唯一地标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。

单字段主键
在定义列的同时指定主键。 字段名 数据类型 PRIMARY KEY [默认值]
在定义完所有列之后指定主键。 [CONSTRAINT <约束名>] PRIMARY KEY [字段名]
多字段联合主键
主键由多个字段联合组合而成。 PRIMARY KEY [字段1、字段2...]
其位置放置在定义完所有的主键之后
使用外键约束
外键用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或多个外键。
[CONSTRAINT<外键名>] FOREIGN KEY 字段1[,字段2...] REFERENCES<主表名> 主键列1[,主键列2...]
使用非空约束
非空约束指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。 字段名 数据类型 NOT NULL
使用唯一性约束
唯一性约束要求该列唯一,允许为空,但只能出现一个空值。
唯一约束可以确保一列或者几列不出现重复值。
在定义完列之后直接指定唯一约束。字段名 数据类型 UNIQUE
在定义完所有列之后指定唯一约束。[CONSTRAINT<约束名>] UNIQUE(<字段名>)
使用默认约束
默认约束指定某列的默认值。 字段名 数据类型 DEFAULT 默认值
设置表的属性值自动增加
在数据库应用中,可以通过为表的主键添加 AUTO_INCREMENT关键字来实现:当每新增加一条记录,使该主键自动加一。一个表只能有一个字段使用 AUTO_INCREMENT约束,且该字段必须为主键的一部分。其约束的字段可以是任何整数类型。
字段名 数据类型 AUTO_INCREMENT

查看数据表结构
查看表基本结构语句
DESCRIBE 表名; 或者简写为 DESC 表名;
查看表详细结构语句
SHOW CREATE TABLE <表名/G>;
如果不加 /G参数,显示的结果可能非常混乱,加上参数 /G后,可使显示结果更加直观,易于查看。
修改数据表
修改表名
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
修改字段的数据类型
ALTER TABLE <表名> MODIFY <字段名> <数据类型>;
修改字段名
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
添加字段
ALTER TABLE <表名> ADD <新字段名> <新数据类型> [约束条件] [FIRST|AFTER 已存在字段名];
删除字段
ALTER TABLE <表名> DROP <字段名>;
修改字段的排列位置
ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>;
更改表的存储引擎
ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>;
删除表的外键约束
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;
删除数据表
DROP TABLE [IF EXISTS] 表1,表2...表n;

查询数据
基本查询语句
SELECT

{*|<字段列表>}
[
    FROM <表1>,<表2>...
    [WHERE <表达式>]
    [GROUP BY <group by definition>]
    [HAVING <expression>[{<operator><expression>}...]]
    [ORDER BY <order by definition>]
    [LIMIT [offset,] <row count>]
]

SELECT [字段1,字段2,...,字段n]
FROM [表或视图]
WHERE [查询条件];
单表查询
查询所有字段
SELECT * FROM 表名;
查询指定字段
SELECT 字段名1[,字段名2,...,字段名n] FROM 表名;
查询指定记录
在 SELECT语句中,通过 WHERE子句可以对数据进行过滤。
SELECT 字段名1[,字段名2,...,字段名n] FROM 表名 WHERE 查询条件;
带 IN关键字的查询
IN操作符用来查询满足指定范围内的条件的记录,使用 IN操作符,将所有检索条件用括号括起来,检索条件之间用逗号隔开,只要满足条件范围内的一个值即为匹配项。
在 IN关键字前面加上 NOT即可使得查询的结果正好相反。
带 BETWEEN AND的范围查询
BETWEEN AND用来查询某个范围内的值,该操作符需要有两个参数,即范围的开始值和结束。如果字段值满足指定的范围查询条件,则这些记录被返回。
同样,在BETWEEN AND关键字前面加上 NOT即可使得查询的结果正好相反。
带 LIKE的字符匹配查询
LIKE关键字即是使用通配符来进行匹配查找。通配符是一种在SQL的 WHERE条件子句中拥有特殊意思的字符,可以和 LIKE一起使用的通配符有 %和 _。
百分号通配符 %,匹配任意长度的字符,甚至包括零字符。
下划线通配符 _ ,一次只能匹配任意一个字符。
查询空值
空值不同于0,也不同于空字符串。空值一般表示数据未知、不适用或将在以后添加数据。
在 SELECT语句中使用 IS NULL子句,可以查询某字段内容为空记录。
带 AND的多条件查询
AND主要用于 WHERE子句中,用来链接两个甚至多个查询条件,表示所有的条件都需要满足才会返回值。
带 OR的多条件查询
OR也主要用于 WHERE子句中,用来链接两个甚至多个查询条件,表示所有的条件仅需满足其中之一项便会返回值。
查询结果不重复
在 SELECT语句中,使用 DISTINCT关键字来指示MySQL消除重复的记录。
SELECT DISTINCT 字段名 FROM 表名;
对查询结果排序
用 ORDER BY语句来对查询的结果进行排序。
在后面添加 DESC表示降序排序
在后面添加 ASC或默认,表示升序排序
分组查询
在MySQL中使用 GROUP BY来对数据进行分组
[GROUP BY 字段] [HAVING <条件表达式>] [WITH ROLLUP]
HAVING 关键字用来过滤数据,因为 WHERE不能和 GROUP BY混用
WITH ROLLUP关键字是在所有查询出的记录之后增加一条记录,该记录计算查询出的所有记录的总和,即统计记录数量。但是ROLLUP和能够与 GROUP BY同时使用的ORDER BY不能同时使用。
使用 LIMIT限制查询结果的数量
LIMIT [位置偏移量,] 行数
使用集合函数查询
AVG() 返回某列的平均值
COUNT() 返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列值的和
连接查询
内连接查询
在内连接查询中,只有满足条件的记录才能出现在结果关系中。两个表之间的关系通过 (INNER) JOIN指定。 使用这种语法的时候,连接的条件使用 ON子句给出,而不是用 WHERE。
外连接查询
LEFT JOIN左连接
返回包括左表中的所有记录和右表中连接字段相等的记录。
RIGHT JOIN右连接
返回包括右表中的所有记录和左表中连接字段相等的记录。
复合条件连接查询
复合条件连接查询是在连接查询的过程中,通过添加过滤条件,限制查询的结果,使查询的结果更加准确。
子查询
子查询指一个查询语句嵌套在另一个查询语句内部的查询。

带 ANY、SOME关键字的子查询
ANY和 SOME关键字是同义词,表示满足其中任一条件,它们允许创建一个表达式对子查询的返回值列表进行比较,只要满足内层子查询中的任何一个比较条件,就返回一个结果作为外层查询的条件。
带 ALL关键字的子查询
使用 ALL时,需要同时满足所有内层查询的条件。
带 EXISTS关键字的子查询
EXISTS关键字后面的参数是一个任一的子查询,系统对子查询进行运算以判断它是否返回行,如果至少返回一行,那么 EXISTS的结果为 true,此时外层查询语句将进行查询;如果子查询没有返回任何行,那么 EXISTS的结果为 false,此时外层语句不进行查询。
带 IN关键字的子查询
使用 IN关键字进行子查询时,内层查询语句仅仅返回一个数据列,这个数据列里的值将提供给外层查询语句进行比较操作。当外层查询语句内只要有一个内层查询语句返回的数据列中的数据时,则判断为满足条件,外层查询语句将进行查询。
带比较运算符的子查询
子查询可以使用如 '<','<=','=','>','>=','!='等比较运算符。
合并查询结果
利用 UNION关键字,可以给出多条 SELECT语句,并将他们的结果组合成单个结果集。合并时,两个表对应的列数和数据类型必须相同。各个 SELECT语句之间使用 UNION或 UNION ALL关键字分割。 UNION不适用关键字 ALL,执行的时候删除重复的记录,所有返回的行都是唯一的;使用关键字 ALL的作用时不删除重复行也不对结果进行自动排序。

为表和字段取别名
为表取别名
表名 [AS] 表别名
为字段取别名
列名 [AS] 列别名
使用正则表达式查询
MYSQL中使用 REGEXP关键字指定正则表达式的字符匹配模式。

正则表达式常用字符匹配列表

选项 说明
^ 匹配文本的开始字符
$ 匹配文本的结束字符
. 匹配任何单子符
* 匹配零个或多个在他前面的字符
+ 匹配前面的字符1次或多次
<字符串> 匹配保护指定的字符串的文本
[字符集合] 匹配字符集合中的任何一个字符
[^] 匹配不在括号中的任何字符
字符串{n,} 匹配前面的字符串至少n次
字符串{n,m} 匹配前面的字符串至少n次,至多m次

原文地址https://www.cnblogs.com/danjinglc/p/10637332.html

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
14天前
|
关系型数据库 MySQL 数据库
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
|
24天前
|
存储 Oracle 关系型数据库
Dataphin常见问题之想要周期执行任务如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
28天前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
1月前
|
存储 关系型数据库 MySQL
如何处理爬取到的数据,例如存储到数据库或文件中?
【2月更文挑战第23天】【2月更文挑战第73篇】如何处理爬取到的数据,例如存储到数据库或文件中?
|
27天前
|
SQL Java 数据库连接
从来没想到我们会扒拉nohup文件去找我们想要的数据,然后往数据库中添加。。。...
从来没想到我们会扒拉nohup文件去找我们想要的数据,然后往数据库中添加。。。...
17 0
|
7天前
|
人工智能 Cloud Native 算法
数据之势丨AI时代,云原生数据库的最新发展趋势与进展
AI与云数据库的深度结合是数据库发展的必然趋势,基于AI能力的加持,云数据库未来可以实现更快速的查询和决策,帮助企业更好地利用海量数据进行业务创新和决策优化。
数据之势丨AI时代,云原生数据库的最新发展趋势与进展
|
15天前
|
缓存 监控 数据库
优化数据库查询性能的八大技巧
在今天的互联网时代,数据库是许多应用程序的核心组件之一。优化数据库查询性能是提升应用程序整体性能的关键。本文介绍了八种有效的技巧,帮助开发人员提高数据库查询性能,从而提升应用程序的响应速度和用户体验。
|
27天前
|
安全 Java 数据库连接
jdbc实现批量给多个表中更新数据(解析Excel表数据插入到数据库中)
jdbc实现批量给多个表中更新数据(解析Excel表数据插入到数据库中)
153 0
|
29天前
|
SQL 存储 关系型数据库
【C/C++ 应用开发 数据库】入门 Qt数据库编程:从基本操作到高级技巧
【C/C++ 应用开发 数据库】入门 Qt数据库编程:从基本操作到高级技巧
70 0
|
1月前
|
SQL 存储 关系型数据库
sql数据库查询语句大全
sql数据库查询语句大全