mysql 2 -- 数据库基本操作、数据表的操作、mysql查询操作

news2024/11/25 10:54:54

一、数据库基本操作

1、数据库的登录及退出

连接数据库:

mysql -u用户名 -h主机地址(省略代表本机) -p 密码(格式为'123...';

在这里插入图片描述

注:

刚下载安装的时候需要通过管理员进入

退出数据库,以下三种方式都可以:

exit
quit
ctrl+d

示例:

mysql>
mysql> exit
Bye
stu@stu-virtual-machine:~$

2、查看所有数据库

命令:show databases;
要注意所有sql语句结尾都有 分号

示例:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| testdb |
| testlg |
+--------------------+
6 rows in set (0.01 sec)
mysql>

3、显示数据库版本

命令:select version();

示例:

mysql> select version();
+-------------------------+
| version() |
+-------------------------+
| 8.0.25-0ubuntu0.20.04.1 |
+-------------------------+
1 row in set (0.00 sec)
mysql>

4、显示时间

命令: select now();

示例:

mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2021-06-29 21:29:49 |
+---------------------+
1 row in set (0.00 sec)
mysql>

5、创建数据库

命令:

create database 数据库名
create database 数据库名 charset=utf8;

示例:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> create database testdb charset=utf8;
Query OK, 1 row affected, 1 warning (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| testdb |
+--------------------+
5 rows in set (0.00 sec)
mysql>

6、查看创建数据库的语句

命令: show create database 数据库名

示例:

mysql> show create database testdb;
+----------+--------------------------------------------------------------------
---------
| Database | Create Database
|
+----------+--------------------------------------------------------------------
---------
| testdb | CREATE DATABASE `testdb` /*!40100 DEFAULT CHARACTER SET utf8 */
+----------+--------------------------------------------------------------------
---------
1 row in set (0.00 sec)
mysql>

7、查看当前使用的数据库

命令 :select database();
如下图为null代表没有选择使用的数据库。

mysql> select database();
+------------+
| database() |
+------------+
| NULL |
+------------+
1 row in set (0.00 sec)
mysql>

如果选择了某个数据库,则显示如下:

mysql> select database();
+------------+
| database() |
+------------+
| testdb |
+------------+
1 row in set (0.00 sec)
mysql>

8、查看当前用户

查看当前登录的是哪个用户
命令:select user();

示例:

mysql> select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

9、使用某个数据库

登录到mysql后,里面创建有很多数据库,
选择要使用的某一个数据库: use 数据库名;

mysql> use testdb;
Database changed
mysql>

10、删除数据库

命令: drop database 数据库名;

示例:

mysql> drop database testdb;
Query OK, 0 rows affected (0.00 sec)
mysql>

二、数据表的操作

1、查看当前数据库中所有表

命令: show tables;

示例:

mysql> show tables;
Empty set (0.00 sec)
mysql>

2、创建表

创建表时,需要指定各个字段的类型,常见类型如下:
数值类型(部分):
在这里插入图片描述
字符串类型(部分):
在这里插入图片描述

日期时间类型
在这里插入图片描述
约束

主键 primary key : 物理上存储的顺序
非空 not null : 此字段不允许填写空值
唯一unique: 此字段的值不允许重复
默认default: 当不填写此值时,会使用默认值。如果填写时,以填写的值为准
外键foreign key : 对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则写成功,如果不存在则写失败。 虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增加,修改,删除,查询)时,都会降低数据库的性能。
auto_increment 表示自动增长

创建表的命令 : create table 数据库表名字 ( 字段 类型 约束 [, 字段,类型 约束] ); 中括弧中的可以省
未使用约束 示例:

create table student1(id int, name varchar(30)); 

对id 字段使用约束 示例:

create table student2(id int primary key not null auto_increment, name varchar(30));

执行以上示例,创建 student1,student2表。

mysql> create table student1(id int, name varchar(30));
Query OK, 0 rows affected (0.04 sec)
mysql> create table student2(id int primary key not null auto_increment, name
varchar(30));
Query OK, 0 rows affected (0.03 sec)
mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| student1 |
| student2 |
+------------------+
2 rows in set (0.00 sec)
mysql>

创建一个students的表

mysql> create table students(
-> id int unsigned not null auto_increment primary key,
-> name varchar(30),
-> age tinyint unsigned default 0,
-> high decimal(5,2),
-> gender enum("男","女") default "男",
-> cls_id int unsigned
-> );
Query OK, 0 rows affected (0.02 sec)
mysql>

3、查看表结构

查看表结构也就是的各个字段的信息。

mysql> desc student1;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(30) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
mysql>
mysql> desc student2;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(30) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)
mysql>
mysql> desc students;
+--------+-------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------------+------+-----+---------+----------------+
| id | int unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(30) | YES | | NULL | |
| age | tinyint unsigned | YES | | 0 | |
| high | decimal(5,2) | YES | | NULL | |
| gender | enum('男','女') | YES | || |
| cls_id | int unsigned | YES | | NULL | |
+--------+-------------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

4、查看创建表的语句

语句: show create table 表名;

mysql> show create table student1;
+----------+---------------------------------------------------------------------
--------
| Table | Create Table
+----------+---------------------------------------------------------------------
--------
| student1 | CREATE TABLE `student1` (
`id` int DEFAULT NULL,
`name` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 |
+----------+---------------------------------------------------------------------
--------
1 row in set (0.05 sec)
#另一种查看方式以\G结尾,格式更好一些
mysql> show create table test1\G
*************************** 1. row ***************************
Table: test1
Create Table: CREATE TABLE `test1` (
`id` int unsigned DEFAULT NULL,
`username` varchar(20) DEFAULT NULL,
KEY `in_id` (`id`),
KEY `in_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3
1 row in set (0.00 sec)
mysql>

5、向表中插入,更新,删除数据

(1)插入数据

命令: insert into 表名values(字段1的值,字段2的值...);

mysql> insert into students values(1,"小明",23,162.22,"男",1001);
Query OK, 1 row affected (0.00 sec)

另一种方式:可以调整字段顺序,也可以省略一些可能的字段

mysql> insert into students(name,id) values("小明",101);

(2)更新数据

使用update 更新记录,示例如下:

mysql> select * from student;
+------+--------+
| id | name |
+------+--------+
| 101 | 小明 |
| 102 | 小张 |
+------+--------+
2 rows in set (0.00 sec)
mysql> update student set name='小李' where id=102;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from student;
+------+--------+
| id | name |
+------+--------+
| 101 | 小明 |
| 102 | 小李 |
+------+--------+
2 rows in set (0.00 sec)
mysql>

(3)删除数据

使用delete删除表中的行,可以删除指定行,也可以删除所有行

mysql> select * from student;
+------+--------+
| id | name |
+------+--------+
| 102 | 小李 |
| 101 | 小明 |
+------+--------+
2 rows in set (0.00 sec)
mysql> delete student from student where id=101;
Query OK, 1 row affected (0.00 sec)
mysql> select * from student;mysql> select * from students;
+----+--------+------+--------+--------+--------+
| id | name | age | high | gender | cls_id |
+----+--------+------+--------+--------+--------+
| 1 | 小明 | 23 | 162.22 || 1001 |
+----+--------+------+--------+--------+--------+
1 row in set (0.00 sec)
mysql>
+------+--------+
| id | name |
+------+--------+
| 102 | 小李 |
+------+--------+
1 row in set (0.00 sec)
mysql>

6、查看表中数据

命令: select * from 表名;

mysql> select * from students;
+----+--------+------+--------+--------+--------+
| id | name | age | high | gender | cls_id |
+----+--------+------+--------+--------+--------+
| 1 | 小明 | 23 | 162.22 || 1001 |
+----+--------+------+--------+--------+--------+
1 row in set (0.00 sec)
mysql>

也可以指定查询某几个字段: select id, name from students;

mysql> select id, name from students;
+----+--------+
| id | name |
+----+--------+
| 1 | 小明 |
+----+--------+
1 row in set (0.00 sec)
mysql>

mysql中注释使用

mysql> -- select id, name from students;
mysql>

7、修改表名字

修改表的名字,使用 alter table 原表名 rename [to] 新表名; 其中to可以省略

ysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| student1 |
| student2 |
+------------------+
2 rows in set (0.00 sec)
mysql> alter table student1 rename student4;
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| student2 |
| student4 |
+------------------+
2 rows in set (0.01 sec)
mysql>

8、修改表字段信息

1)修改表–添加字段

命令:alter table 表名 add 列名 类型;

示例:

alter table students add birthday datetime;
mysql> alter table students add birthday datetime;
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql>

2)修改字段-- 重新命名

命令:alter table 表名 change 原字段名 新字段名 类型及约束;
示例:

alter table students change birthday birth datetime;

3)修改字段-- 不改名字

命令:alter table 表名 modify 列名 类型及约束;
示例:

alter table students modify birth date not null;

4)修改表–删除字段

命令:alter table 表名 drop 列名;
示例:

alter table students drop birth;

5)修改字段排列位置

命令:ALTER TABLE 表名 MODIFY 属性名1 数据类型 FIRST | AFTER 属性名2;

6)修改表的存储引擎:

常见引擎:MyISAM, InnoDB

示例:

mysql> alter table student3 engine=myisam;
Query OK, 5 rows affected (0.03 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql>

9 、删除表

命令:drop table 表名;

示例:

drop table students;

三、mysql查询操作

1 、基本查询

查询所有字段

select * from 表名;

查询指定字段

select 列1, 列2... from 表名;
select 表名.字段 ... from 表名;

使用as给字段起别名

select 字段 as 名字 ... from 表名;

使用as给表起别名

select 别名.字段 .... from 表名 as 别名;

消除重复行

命令:select 行名 from 表名;

示例:

distinct 字段
mysql> select addr from student ;
+--------+
| addr |
+--------+
| 成都 |
| 西安 |
| 沈阳 |
| 西安 |
| 西安 |
+--------+
5 rows in set (0.00 sec)
mysql> select distinct addr from student ;
+--------+
| addr |
+--------+
| 成都 |
| 西安 |
| 沈阳 |
+--------+
3 rows in set (0.00 sec)
mysql>

2 、条件

比较运算:

命令:select ... from 表名 where ...

大于 > , 小于 < , 大于等于 >=, 小于等于 <=, 相等 = , 不相等 !=

示例:

#查询年龄大于18岁的学生信息
select * from student where age > 18;
#查询年龄为18的所有学生,注意等号只有一个
select * from student where age = 18;

逻辑运算: and, or , not

示例:

#查询年龄在1824岁之间的所有学生
select * from student where age > 18 and age < 24;
#查询18岁以上的所有女性
select * from student where age > 18 and gender = "女";
#查询年龄在18岁以上,或者 身高在180及以上的学生
select * from student where age > 18 or height >= 180;
#不在 18岁以上,并且是男生
select *from student where not age > 18 and gender = "男";
#不在 18岁以上的男生 这个范围的学生
select * from student where not (age > 18 and gender = "男");

模糊查询

命令:like : % 替换一个或多个, _ 替换一个

#查询姓名中以 “小” 开始的名字
select name from student where name like "小%";
#查询姓名中 含有“小”字,的所有名字
select name from student where name like "%小%";
#查询有两个字的名字
select name from student where name like "__";
#查询名字至少有2个字的名字
select name from student where name like "__%";

范围查询

in, not int, 不连续范围
between … and … , not between … and … 连续范围
空判断: is null
判非空: is not null

示例:

#查询年龄为18,20,24的学生信息
select name,age from student where age = 18 or age=20 or age = 34 ;
select name,age from student where age in (18,20,24);
#查询年龄不是18,20,24的学生信息
select name ,age from student where age not in (18,20,24);
#查询年龄在1824岁之间的所有学生信息
select name, age from student where age between 18 and 24;
#查询年龄不在1824岁之间的
select * from student where age not between 18 and 24;
#查询学生住址为空的学生
select * from student where addr is null;

3 、排序

命令:order by 字段;
默认是升序 从小到大 asc, 需要降序从大到小 ,加上 desc 可以对多个字段进行判断

#查询年龄在18岁以上的学生,年龄安从小到大
select * from student where age > 18 order by age;
#查询年龄在18岁以上的学生,年龄安从大到小
select * from student where age > 18 order by age desc;
#查询年龄在1824之间的学生,按照年龄从小到大,身高从高到低排序
select * from student where (age between 18 and 34 ) order by age asc, height
desc;

4 、聚合函数

count() 总数, max() 最大值, min() 最小值, sum()求和, avg() 平均值, round()四舍五入

#查询男生有多少人
select count(*) from student where gender='男';
#查询最大年龄
select max(age) from student;
#查询年龄最小值
select min(age) from student;
#计算所有人的年龄总和
select sum(age) from student;
#计算平均年龄
select avg(age) from student;
或 select sum(age) / count(*) from student;
#算平均年龄,设置平均年龄的小数位数
select round(sum(age) / count(*),2) from student;

5 、分组查询

命令:group by 分组;

#安装性别分组
select * from student group by gender;
#计算男生和女生的人数
select gender, count(*) from student group by gender;
#计算每个性别中,年龄最大的
select gender,max(age) from student group by gender;
#查看性别分组中,每个组的人名
select gender,group_concat(name) from student group by gender;

having 在分组后进行筛选
6 、分页
7 、连接查询
8 、自关联
9 、子查询

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/765923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring:表达式语言

Spring EL 概述使用概述 Spring 表达式(Spring EL) 是一种功能强大的表达式语言,以 #{ 表达式 } 作为定界符,用于在运行时对对象进行访问和操作。通过使用 Spring 表达式达到简化开发、减少逻辑或配置的编写的目的。 使用 Spring EL 主要可以引用 bean ,调用其属性和方…

苹果手机备忘录如何导入新手机?手机备忘录怎么转移?

一般来说&#xff0c;大多数手机用户更换手机的频率是3—5年&#xff0c;在一部手机使用了几年之后&#xff0c;就会出现内存不足、系统卡顿、电池续航时间较短等问题&#xff0c;这时候就需要更换新的手机了。有不少苹果手机用户在更换新手机的时候&#xff0c;都很发愁一个问…

Hugging News #0717: 开源大模型榜单更新、音频 Transformers 课程完成发布!

每一周&#xff0c;我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新&#xff0c;包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等&#xff0c;我们将其称之为「Hugging News」。本期 Hugging News 有哪些有趣的消息&#xff0…

TypeScript 学习笔记(六):索引签名类型、映射类型

一、索引签名类型 1. 索引类型查询操作符 keyof keyof可以用于获取某种类型的所有键&#xff0c;其返回类型是联合类型。 interface Info {name: string;age: number; } let infoProp: keyof Info; infoProp "name"; infoProp "age"; infoProp "…

知识普及:Boc-Hynic,133081-25-1,6-叔丁氧羰肼基-3-吡啶甲酸,

&#xff08;文章资料汇总来源于&#xff1a;陕西新研博美生物科技有限公司小编MISSwu&#xff09;​ Boc-Hynic&#xff0c;6-[2-(tert-Butoxycarbonyl)hydrazinyl]nicotinic acid&#xff0c;6-[2-(叔丁氧羰基)肼基]烟酸&#xff0c;6-叔丁氧羰肼基-3-吡啶甲酸 ------------…

追梦之旅【数据结构篇】——C语言手撕八大经典排序

追梦之旅【数据结构篇】——C语言手撕八大经典排序&#x1f60e; 前言&#x1f64c;排序的认识排序的稳定性&#xff1a;排序的时间复杂度和空间复杂度以及如何选择适合的排序&#xff1a; 优化版选择排序冒泡排序普通版冒泡排序升级版冒泡排序 直接插入排序希尔排序堆排序快速…

ChatGPT变现五个思路

一、前言 ChatGPT是一款AI聊天机器人&#xff0c;发布于2022年11月。凭借着在广泛的知识领域为消费者问题做出清晰、详尽解答的出色能力&#xff0c;其一经推出就引发全球轰动&#xff0c;自然也得到零售行业的高度关注。例如&#xff0c;消费者只要询问ChatGPT如何布置一个梦…

将Spring Boot项目打包部署到阿里云linux服务器

首先 你要保证自己的服务器上有java环境 如果没有可以参考我的文章 linux服务器中安装java JDK1.8版本 然后 我们打开我们的Spring Boot项目 双击 package 生命周期进行打包 打包完成之后 我们找到 target 下面会有一个jar包 然后 我们右键它 如下图操作 系统就会帮你打开它所…

javascript 导出表格的excel

一个php网站的表格,需要增加导出excel的功能, 因对web开发不甚了解,开始想着用php导出, 搜索一番发现比较复杂,而且我的表格里已经有数据了, 如果导出又要去库中获取一次,不是负担加倍, 可否把现有表格数据,直接导出来? 答案是肯定的,用js在前端导出 开源js组件…

三个属性让你学会书写横向滑动窗口!内附代码和详解!

先说结论&#xff1a; 父组件添加&#xff1a; display: flex; overflow-x: auto; 子组件添加&#xff1a; flex-shrink: 0; 下面进行详细讲述。 在书写滑动页面之前&#xff0c;最好了解一下flex布局的基本原理和常用属性&#xff0c;以下链接介绍较详细&#xff0c;图文并…

ROS1 ROS2学习

ROS1 ROS2学习 安装 ROSROS1ROS2 命令行界面ROS2 功能包相关指令ROS 命令行工具ROS1 CLI工具ROS2 CLI工具 ROS 通信核心概念节点 - Node节点相关的CLI 话题 - Topic编写发布者程序流程&#xff1a;编写订阅者程序流程&#xff1a;话题相关的CLI 服务 - Service编写客户端程序流…

CVE-2013-4547

CVE-2013-4547 一、环境搭建二、漏洞原理三、漏洞复现 一、环境搭建 如下介绍kali搭建的教程 cd ~/vulhub/nginx/CVE-2013-4547 // 进入指定环境 docker-compose build // 进行环境编译 docker-compose up -d // 启动环境docker-compose ps使用这条命令查看当前正在运…

v-for复习

 在真实开发中&#xff0c;我们往往会从服务器拿到一组数据&#xff0c;并且需要对其进行渲染。  这个时候我们可以使用 v-for 来完成&#xff1b;  v-for 类似于 JavaScript 的 for 循环&#xff0c;可以用于遍历一组数据&#xff1b; 1.v-for 基本使用  v-for 的基本…

水雨情自动监测系统-水雨情监测设备

近年来&#xff0c;暴雨及极端天气越来越频发&#xff0c;造成了洪涝与积水灾害给各地排水相关部门带来了巨大的压力&#xff0c;也给公众的生命财产损失带来了巨大的风险。为降低洪涝造成的损失&#xff0c;我们不仅要加强排水基础建设&#xff0c;还要提升实时监测手段&#…

一、音频基础-音频分析的重要工具(语谱图)

文章目录 1. 傅里叶转换2. 语谱图3. 应用1. 傅里叶转换 通过前面的描述可以知道,声音的本质就是各种声波,那么任意某一个时刻,都不可能是只有一个频率的波,而且声波也不可能是我们理解的标准的正弦波: 而一般我们对声音进行处理时,需要分析出频率当中的有哪些频率,然…

EasyPlayer流媒体视频播放器宽屏模式的开发与实现

EasyPlayer流媒体视频播放器可支持H.264与H.265编码格式&#xff0c;性能稳定、播放流畅&#xff0c;能支持RTSP、RTMP、HLS、FLV、WebRTC等格式的视频流播放&#xff0c;并且已实现网页端实时录像、在iOS上实现低延时直播等功能。 EasyPlayer.js播放器目前可支持全屏播放&…

mybatis-plus Integer类型null值无法修改的问题

我们来看一条数据&#xff0c; 我现在要更新这个数据&#xff0c;除了id&#xff0c;全部设为null. 我们来看下数据库&#xff1a; 这个age很明显没有设置成null. 这是因为这个age是Integer类型的&#xff0c;而且我们使用的是mybatis的原生方法&#xff0c; 解决方案&#xf…

抖音seo源码/抖音seo优化矩阵系统代开发源代码搭建

抖音seo源码/抖音seo源码代开发/抖音seo技术搭建系统应用代码编程&#xff1a; 抖音seo源码&#xff0c;抖音seo矩阵系统底层框架上支持了从ai视频混剪&#xff0c;视频批量原创产出&#xff0c;云端直播数字人视频制作&#xff0c;账号矩阵&#xff0c;视频一键分发&#xff…

【学会动态规划】不同路径 II(6)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…

v-model绑定的数据与接收到的数据类型不一致引发的bug

在使用v-model的过程中 当页面渲染需要的数据类型与data中定义的数据类型不一致时&#xff0c;页面是不会进行响应式对应渲染的、 如:1:绑定的是string的时候&#xff0c;在定义时是number类型 也会导致页面不更新 2:列表下拉框的选中的数据若定义的是number的话&#xff0c;传…