mysql数据库的一些操作

文章详细介绍了如何在MySQL中进行数据库和表的操作,包括查看、创建、删除数据库,创建、删除表,插入、查询、更新和删除数据。此外,还深入讲解了如何执行内关联、左外关联和右外关联查询,以实现不同表之间的数据联合处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进入服务器中的mysql容器

在这里插入图片描述

# sql语句不敏感,不区分大小写,sql语句可以分行写,以;结束
# 查看有多少个数据库
show databases;

# 使用数据库
use mysqltest;

# 查看当前正在用的数据库
select database();

# 创建数据库
CREATE DATABASE test charset utf8;

# 删除数据库
drop test;

# 创建数据库
CREATE DATABASE mysql;

# 在使用某个库后,查看该数据库的表有哪些
show tables;

# 创建student表
CREATE TABLE student(
	id int,
	name VARCHAR(10),
	age int
);

# 删除表
drop TABLE student;

# 在数据库中建表
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

# 插入数据库数据
INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES ("学习 PHP", "菜鸟教程", NOW());
INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES ("学习 MySQL", "菜鸟教程", NOW());
INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES ("学习 python", "菜鸟教程", NOW());

# 在student表中插入数据
INSERT into student(id) VALUES(1), (2), (3);
INSERT into student(id, name, age) VALUES(4, '周杰伦', 31), (5, '林俊杰', 33);
# 当插入的数据是全列的表名,可以省略student括号中的表名
INSERT into student VALUES(6, '张学友', 31), (5, '黎明', 33);

# 查找数据
SELECT * from runoob_tbl WHERE BINARY runoob_author='菜鸟教程';

# 更新数据
UPDATE runoob_tbl SET runoob_title='学习 C++' WHERE runoob_id=3;

# 删除数据
DELETE FROM runoob_tbl WHERE runoob_id=3;

# 分组聚合
SELECT gender, AVG(age), SUM(age), MIN(age), MAX(age), COUNT(*) FROM student GROUP BY gender;

# 排序分页
SELECT * FROM student WHERE age > 20 ORDER BY age asc; # 查询完age大于20的后,按照age从小到大排序,不写asc也可以,默认这个 
SELECT * FROM student WHERE age > 20 ORDER BY age DESC; # 查询完age大于20的后,按照age从大到小排序
SELECT * FROM student LIMIT 10, 5; # 查询完数据后,从11开始,显示后面的5条数据

关联查询

1、创建一个mysqltest的数据库,并见表插入数据

use mysqltest;
CREATE TABLE student(id int,name VARCHAR(255),address VARCHAR(255), class_id INT);
INSERT INTO student(id, name, address, class_id) VALUES(1, '周杰伦', '北京', 1);
INSERT INTO student(id, name, address, class_id) VALUES(2, '张学友', '上海', 2);
INSERT INTO student(id, name, address, class_id) VALUES(3, '林俊杰', '广州', 3);
INSERT INTO student(id, name, address, class_id) VALUES(4, '刘德华', '深圳', 3);
INSERT INTO student(id, name, address, class_id) VALUES(5, '蔡依林', '北京', 2);
INSERT INTO student(id, name, address, class_id) VALUES(6, '萧亚轩', '杭州', 1);
INSERT INTO student(id, name, address, class_id) VALUES(7, '王力宏', '广州', 3);

CREATE TABLE class(id int,name VARCHAR(255));
INSERT INTO class(id, name) VALUES(1, '理科1班');
INSERT INTO class(id, name) VALUES(2, '文科1班');
INSERT INTO class(id, name) VALUES(3, '理科2班');

2、FROM多表查询(会产生笛卡尔积,效率不高)

SELECT * FROM student, class;
# 使用where
SELECT student.*, class.name FROM student, class WHERE student.class_id = class.id;

SELECT s.*, c.name FROM student AS s, class AS c WHERE s.class_id = c.id;

3、内关联(双向奔赴:取两者的交集)

SELECT * FROM student AS s INNER JOIN class AS c ON s.class_id = c.id; # INNER可以省略
SELECT s.*, c.name FROM student AS s INNER JOIN class AS c ON s.class_id = c.id; # INNER可以省略

INSERT INTO student(id, name, address, class_id) VALUES(8, '方文山', '广州', 6);
INSERT INTO class(id, name) VALUES(5, '文科2班');

4、左外关联(以student表中的数据为主)

SELECT * FROM student AS s LEFT JOIN class AS c ON s.class_id = c.id; # OUTER可以省略

在这里插入图片描述
5、右外关联(以class表中的数据为主)

SELECT * FROM student AS s RIGHT JOIN class AS c ON s.class_id = c.id; # OUTER可以省略

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值