您现在的位置是:网站首页> 编程资料编程资料
MySQL 数据库中数据表超详细的基本操作_Mysql_
2023-05-26
403人已围观
简介 MySQL 数据库中数据表超详细的基本操作_Mysql_
前言:
- 库名、表名、列名等等不能和关键字相同,如果一定要用关键字为名,则可以通过反引号把名字引起来
- 对表进行操作之前,要先选中数据库
MySQL 中支持以下几种注释:
- -- 注释内容:单行注释,要注意 “–” 和注释内容之间需要有空格
- #注释内容:单行注释
- /*注释内容*/:多行注释
注意:字段或列的注释可以用属性 comment 来添加,例如在建表语句中使用
- SQL 中单引号和双引号都能表示字符串
1. 查看当前数据库中的表
语法:
show tables;
示例:

2. 创建表
语法:
create table [if not exists] 表名(列名 列类型, 列名 列类型, ..., 列名 列类型);
示例:

3. 查看指定表结构
语法:
desc 表名;
注意:
desc 是 describe 的缩写,也可以使用 describe 表名 来查看表结构
示例:

4. 删除表
语法:
drop table [if exists] 表名 [, 表名 ...];
示例:

注意:
删表操作也是一个极具风险的操作,甚至要比删库操作还危险。因为一旦删除,程序第一时间就挂了,还能及时抢救。但是删表的话,程序不一定第一时间显示异常,那么不能及时处理则会出现更大的风险。
5. 往表中新增数据
语法:
insert [into] 表名 [(列名1, 列名2, ...,列名n)] values (第一行的:值1, 值2, ...,值n) [, ..., (第n行的:值1, 值2, ...,值n)]
补充:
- 上述语句列名不写的话就代表全列都要进行新增数据
- 每行插入的值要与每行要插入的列名的顺序一一对应
- 如果插入时,某列没有进行插入,这个列就为默认值 NULL
实例1: 全列插入一行

结果为:
id name 1 张三
示例2: 全列插入多行

结果为:
id name 1 张三 2 李四 3 王五
示例3: 指定某些列来插入

结果为:
id name 1 张三 2 李四 3 王五 4 NULL
注意: 一般认为,一条语句,一次插入多个记录,效率要比多个语句,每个语句插入一个记录高的多
我们知道 MySQL 是一个“客户端—服务器”结构的程序。用户在客户端输入的 SQL 都会通过网络传输给服务器,然后由服务器进行具体的操作。下面我们来分析下上述两者的差别
一条语句,一次插入多个记录:

多个语句,每个语句插入一个记录:

又由于计算机对寄存器的访问速度 >>> 对内存的访问速度 >>> 对IO设备(网络上传输数据,对于计算机来讲叫做 IO 操作)的访问的速度。因此,一般认为,一条语句,一次插入多个记录,效率要比多个语句,每个语句插入一个记录高的多
6. 查找表中的数据
语法:
selstc [distinct] {* | 列名1 [, ..., 列名n]} from 表名 [where] [order by 列名1 [ASC | DESC] [, ...,[列名n [ASC | DESC]]] limit 补充:
- 查询结果是一个类似于“表”的结构,但这个表是一个“临时表”,仅仅是在内存中存了一下,在打印完之后就没了,不会持久化存储。
select不会修改磁盘数据,尤其是不会影响到服务器的原始磁盘上的数据
为了方便下面介绍示例,所以已经在数据库中创建了如下的一个数据表:

6.1 全列查询
示例:

注意:
在生产环境中,谨慎使用上述语句,因为返回的数据可能超大的。如果数据很大的话,就可能把服务器的网络带宽吃满,从而导致服务器无法正常工作。
6.2 指定列查询
示例:

注意:
指定列的顺序不需要按照定义表时的顺序查询
6.3 查询字段为表达式
示例:

注意:
- 上述 chinese+math+english 就是一个表达式,结果就是它们的值相加。但是相加的值不受原来的列的数据类型限制
- 表达式是进行列与列之间的运算,与行无关
- 表达式计算不影响原来的数据,查询的结果是一个临时表
6.4 给某个列指定常量
select 时给某个列指定一个常量,此时常量就会作为一个表达式在每行中出现
示例1:

示例2:

6.5 给查询的表达式指定别名(as)
示例:

6.6 去重查询(distinct)
使用关键字 distinct 可以把某列相同的值的记录给去重
示例1: 针对某个列去重

示例2: 针对多个列去重(要求: distinct 要放在所有列的前面,且当每行的每列的值都有其他行的每列的值都相同时,才视为是一个重复的记录)

6.7 对查询结果进行排序(order by)
如果我们的查询操作没有加上 order by,此时查询出来的结果顺序是未定的。可以在查询语句的表名后面加上 order by 要排序的列名/表达式 [asc | desc] 来进行排序
补充:
asc:表示升序(由小到大),不加具体要排序的方式,默认是 ascdesc:表示降序(由大到小),是descending的缩写- 排序时如果有的值是 NULL,则视其为最小值
- 支持对多个列进行排序,按要排序的列的顺序进行优先级排序,排序的列之间用逗号隔开
- 我们知道很多排序的算法,例如:冒泡、选择、插入、希尔、堆排、快排、归并…而这其中归并排序是最适合 MySQL 进行数据排序的,因为 MySQL 的数据是存储在硬盘上的,而对于硬盘的读写操作,开销很大,为了减少读写次数,所以要找到对于遍历次数更少的排序方法。初次之外由于数据量可能很大,内存一下不能存储完全,就可以对每一段进行排序再存入进去。因此归并排序更加适合 MySQL 对数据进行排序
示例1: 对 math 进行升序查询

示例2: 对 math 进行降序查找

示例3: 使用表达式或者别名进行排序

示例4: 对多个列进行综合排序,要求在 math 最高的情况下,再排 chinese 更低的

6.8 条件查询(where)
条件查询适用很广,不限于上述几种用法基础之上,例如 update、delete 等语句也可以使用。它是通过 where 条件表达式 的形式,去进行一个筛选,相当于遍历查询结果,针对每一个记录带入到条件中,将符合条件的记录保留下来,不符合的则淘汰。
条件表达式可以使用:比较运算符或者逻辑运算符
比较运算符:

逻辑运算符:
| 运算符 | 说明 |
|---|---|
| and | 类似于 Java 中的 &&,多个条件都为 true 时,结果才是 true |
| or | 类似于 Java 中的 ||,只要有一个条件为 true,结果就为 true |
| not | 类似于 Java 当中的 ~,条
相关内容点击排行本栏推荐
|
