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

一、数据库基本操作

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.hqwc.cn/news/27572.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据学习02-Hadoop分布式集群部署

操作系统&#xff1a;centos7 软件环境&#xff1a;jdk8、hadoop-2.8.5 一、创建虚拟机 1.下载VMware,建议支持正版 2.安装到Widows目录下任意位置即可&#xff0c;安装目录自定义。打开VMware&#xff0c;界面如下&#xff1a; 3.创建虚拟机 创建虚拟机—>选择自定义 …

android 下载源码 一路踩坑

python 从 2.0 升级到3.0 从官网下载 pyhon3.0 安装器,然后更改配置 # Setting PATH for Python 3.8# The original version is saved in .bash_profile.pysaveexport PATH"/Library/Frameworks/Python.framework/Versions/3.11/bin:$PATH"alias python"/Libr…

SpringCloud(四)Hystrix服务降级、熔断、监控页面

一、服务熔断 官方文档&#xff1a;https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/1.3.5.RELEASE/single/spring-cloud-netflix.html#_circuit_breaker_hystrix_clients 我们知道&#xff0c;微服务之间是可以进行相互调用的&#xff0c;那么如果出现了…

如何创建 Spring Boot 项目

目录 一、Spring Boot 项目的创建 1. 安装 Spring Boot Helper 插件 2. 创建 Spring Boot 项目 3. 项目目录详解 4. 运行 Spring Boot 项目 二、Spring Boot 的优点 前言 Spring Boot 的意思就是 Spring Boot 脚手架的意思&#xff0c;已经总结完成 Spring 的学习&#x…

js计算数组中每个元素出现的次数

tip&#xff1a;空值合并运算符&#xff08;??&#xff09;是一个逻辑运算符&#xff0c;当左侧的操作数为 null 或者 undefined 时&#xff0c;返回其右侧操作数&#xff0c;否则返回左侧操作数。reduce() 方法对数组中的每个元素按序执行一个提供的 reducer 函数&#xff0…

华为鲲鹏920 aarch64 版本 Ambari HDP 下载地址

声明&#xff1a;为有效缓解各位同行兄弟们的痛&#xff0c;特推出此文 本文能够适配兼容 华为鲲鹏920 aarch64 版本&#xff0c;仅限 CentOS7、openEuler20.03-LTS 操作系统 以下是详细下载地址 1、CentOS7 aarch64版本 CentOS7 aarch64 https://mirrors.huaweicloud.com/…

【HCIA】10.VLAN间通信

VLAN间通信的解决方法 使用路由器的物理接口 路由器三层接口作为网关&#xff0c;转发本网段前往其它网段的流量。路由器三层接口无法处理携带VLAN Tag的数据帧&#xff0c;因此交换机上联路由器的接口需配置为Access。路由器的一个物理接口作为一个VLAN的网关&#xff0c;因此…

考虑充电负荷空间可调度特性的分布式电源与电动汽车充电站联合配置方法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

从源码理解Scala中函数reduceRight的计算过程

水善利万物而不争&#xff0c;处众人之所恶&#xff0c;故几于道&#x1f4a6; 以List集合为例&#xff0c;进行reduceRight()的计算过程分析&#xff0c;总体分为两部分&#xff0c;一部分是看最顶层特质的那个通用的reduceRight方法&#xff0c;另一部分是讲直接混入的特质的…

数据结构顺序表,实现增删改查

一、顺序表结构体定义 #define MAXSIZE 8 //定义常量MAXSIZE&#xff0c;表示数据元素的最大个数为8 typedef int datatype; //重定义int类型&#xff0c;分别后期修改顺序表中存储的数据类型 typedef struct {int len; //顺序表长度datatype data[MAXSIZE…

Mysql 备份与还原

目录 一、数据备份的重要性 二、数据库备份类型 2.1 物理备份 2.&#xff12; 逻辑备份 三、常见的备份方法 3.1 物理冷备 3.2 专用备份工具 mysqldump 或 mysqlhotcopy 3.3 启用二进制日志进行增量备份 3.4 第三方工具备份 四、MySQL完全备份 五、数据库完全备份分类…

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

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