MySQL基本操作

这篇具有很好参考价值的文章主要介绍了MySQL基本操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

创建库、表

创建学生信息库:

mysql> create database students;

创建学生信息表:

mysql> use students;
mysql> create table if not exists students(
    -> id int unsigned primary key auto_increment comment '用户的主键',
    -> sn int not null unique comment '学生的学号',
    -> name varchar(20) not null,
    -> qq varchar(20) unique
    -> );

查看结果:

mysql> desc students;

MySQL基本操作

插入数据

单行数据 + 全列插入:

mysql> insert into students values(100,10000,'蔡徐坤',NULL);
mysql> insert into students values(101,10001,'陈立农',NULL);

多行数据 + 指定列插入:

mysql> insert into students (id,sn,name) values
    -> (102,20001,'范丞丞'),
    -> (103,20002,'黄明昊'),
    -> (104,20003,'林彦俊'),
    -> (105,20004,'朱正廷');

查看插入结果:

mysql> select * from students;

MySQL基本操作

修改(update)

update用于对查询到的结果进行列值更新

目前的qq是NULL,可以修改:

mysql> update students set qq = '11111' where name = '蔡徐坤';
mysql> update students set qq = '22222' where name = '陈立农';
mysql> update students set qq = '33333' where name = '范丞丞';

查看结果:

MySQL基本操作

上述直接修改,接下来也可以在插入时检测自动更新

再次插入,检测到数据冲突自动更新(id冲突):

mysql> insert into students (id,sn,name,qq) values (100,10000,'蔡徐坤',11111) on duplicate key update qq='11112';

结果:冲突代表一次affected,修改代表第二次affected:

Query OK, 2 rows affected (0.00 sec)

MySQL基本操作

这种方法常用于不确定该条目是否存在,但是你又想去修改它的数据。作用其实相当于replace

replace的功能是如果没检测到冲突,就直接插入,如果有冲突,就将该行全部删掉,再重新插入。

查找

SQL查询中各个关键字的执行先后顺序 from > on> join > where > group by > with > having > select

distinct > order by > limit

select

一般不使用全部搜索,因为数据可能会过于庞大:

mysql> select * from students;
  • 通常使用指定列搜索:
mysql> select id,sn,name from students;

MySQL基本操作

也可以调整顺序:

mysql> select id,name,sn from students;

MySQL基本操作

  • 搜索自定义字段,但必须是一个可计算表达式:
mysql> select id,sn+10 from students;

MySQL基本操作

mysql> select id,sn+id from students;

MySQL基本操作

  • 给自定义列起别名
mysql> select id,sn+id id加学号 from students;

MySQL基本操作

  • 去重
mysql> select distinct xxx from students;

where

  • 比较运算符

MySQL基本操作

LIKE:模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符

  • 逻辑运算符
  1. AND----多个条件必须都为 TRUE(1),结果才是 TRUE(1)
  2. OR----任意一个条件为 TRUE(1), 结果为 TRUE(1)
  3. NOT----条件为 TRUE(1),结果为 FALSE(0)

where条件是最先查找的,所以别名不可用于where条件中,因为此时的别名还未生成。

因此where条件中必须是表达式

查找id小于103的字段:

mysql> select id,sn from students where id<103;

MySQL基本操作

id = 10x的字段:

mysql> select id from students where id like '10%';

MySQL基本操作

也可以使用’_'来严格匹配某个字段

多表查询

实际开发中往往数据来自不同的表,所以需要多表查询。多表查询其实也和单表查询一样,不过是在组合出来的新的表里进行单表查询。

多表查询顾名思义就是需要多张表来共同完成。

  • 例如某公司的管理系统中,要求显示雇员名,雇员工资及所在部门的名字。雇员名和雇员工资在EMP表中,而部门名字在DEPT中。

所以我们可以先联表查询:

select * from EMP,DEPT;

这样筛选出来是未匹配好的全部数据,也就是将两个表直接拼接而成,所以我们应该加上条件筛选:

select ename, sal, dname from EMP, DEPT where EMP.deptno = DEPT.deptno;
  • 显示部门号为10的部门名,员工名和工资
select ename, sal,dname from EMP, DEPT where EMP.deptno = DEPT.deptno and DEPT.deptno = 10;
  • 显示各个员工的姓名,工资,及工资级别(在salgrade表中)
select ename, sal, grade from EMP, salgrade where sal between losal and hisal;

子查询

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询

单行子查询
  • 显示SMITH同一部门的员工

为什么叫单行子查询呢,因为筛选的条件只有一行一列。对于本例首先要找smith的部门:

select deptno from EMP where ename='smith';

此时得到的结果就只有一列,后续再进行筛选,所以是单行子查询。

再筛选:

select * from EMP WHERE deptno = (select deptno from EMP where ename='smith');
多行子查询

上面说了单行子查询是因为第一次筛选出来的条件只有一行一列,那么多行子查询就是有多行单列

  • 查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含10自己的

由于10号部门的岗位不止一个,所以可能会有多个相同的岗位,那么就会产生多行子查询。

首先是查询10号部门的岗位:

select distinct job from emp where deptno=10;

这里会产生多条单列的不同岗位的信息,所以后续筛选就叫做多行子查询。

再筛选,凡是符合初筛出来的条件的,再筛选一遍:

  • in关键字
select ename,job,sal,deptno from emp where job in (select distinct job from emp where deptno=10) and deptno!=10;
  • all关键字;显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号
select ename, sal, deptno from EMP where sal > all(select sal from EMP where deptno=30);

为什么不能像下面这样写呢?因为初筛的结果是多条,所以要满足大于所有部门=30的员工的工资这一条件:

select ename, sal, deptno from EMP where sal > (select sal from EMP where deptno=30);

当然这里也可以用max函数来筛选。

  • any关键字;显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门的员工)

这个关键字只需要满足初筛后的一个条件即可返回

select ename, sal, deptno from EMP where sal > any(select sal from EMP where deptno=30);
多列子查询

单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数据的子查询语句

  • 查询和SMITH的部门和岗位完全相同的所有雇员,不含SMITH本人

首先筛选smith的部门和岗位:

select deptno, job from EMP where ename='SMITH'

此时产生单行多列的结果,再次筛选:

select ename from EMP where (deptno, job)=(select deptno, job from EMP where ename='SMITH') and ename != 'SMITH';

自连接

自连接是指在同一张表连接查询,相当于自己的表和自己的表做笛卡尔积

显示员工FORD的上级领导的编号和姓名(mgr是员工领导的编号–empno)

  • 可以使用子查询
select empno,ename from emp where emp.empno=(select mgr from emp where ename='FORD');
  • 自连接

由于此时的员工和领导都在员工表里,所以可以将emp表重命名两份文章来源地址https://www.toymoban.com/news/detail-433470.html

select leader.empno,leader.ename from emp leader, emp worker where leader.empno = worker.mgr and worker.ename='FORD';

到了这里,关于MySQL基本操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 线性表的基本操作(初始化、创建、增、删、查)

    目录 顺序表 顺序表的定义和初始化 顺序表的基本操作 1.求表长 2.判空操作 3.创建顺序表 4.输出操作 5.插入操作 6.删除操作 7.按位查找操作 8.按值查找操作 单链表 单链表的定义 单链表的初始化 求表长 判空操作  尾插法建立单链表 头插法建立单链表 输出操作 前插操作 后插

    2024年02月08日
    浏览(33)
  • mysql 基本操作2

    目录 Update 将小白龙的数学成绩跟新为 80 分 将总成绩后三名的数学成绩+30分 Delete 删除沙悟净的成绩 删除倒数第一名的成绩 Truncate 聚合函数 count 查看员工表里面的人数 查看男女员工的个数 查看男员工占所有员工个数的比例 sum 计算所有员工的工资和 计算各个部门的工资和

    2024年02月11日
    浏览(27)
  • MySQL 基本操作1

    目录 Create insert 插入跟新 1 插入跟新 2 Retrive select where 子句查询 1.查找数学成绩小于 80 的同学。 2.查询数学成绩等于90分的同学。 3.查询总分大于240 的学生 4.查询空值或者非空值 5.查询语文成绩在70~80之间的同学 6.查询英语成绩是99 和 93 和 19 和 30 7.模糊匹配 排序 LIMIT mysql

    2024年02月10日
    浏览(28)
  • 头歌——MySQL 基本操作

    目录 数据库1-MySQL数据定义与操作实战 MySQL数据库 - 初识MySQL MySQL数据库 - 数据库和表的基本操作(一) MySQL数据库 - 数据库和表的基本操作(二) MySQL数据库 - 单表查询(一) MySQL数据库 - 单表查询(二) MySQL数据库 - 单表查询(三) MySQL数据库 - 连接查询 MySQL数据库 - 子查

    2024年02月03日
    浏览(29)
  • MySQL基本操作

    创建学生信息库: 创建学生信息表: 查看结果: 单行数据 + 全列插入: 多行数据 + 指定列插入: 查看插入结果: update用于对查询到的结果进行列值更新 目前的qq是NULL,可以修改: 查看结果: 上述直接修改,接下来也可以在插入时检测自动更新 再次插入,检测到数据冲突自

    2024年02月02日
    浏览(28)
  • [MySQL]基本数据类型及表的基本操作

    哈喽,大家好!我是保护小周ღ,本期为大家带来的是 MySQL 数据库常用的数据类型,数据表的基本操作:创建、删除、修改表,针对修改表的结构进行了讲解,随后是如何向数据表中添加数据,浅浅的提了一下表中数据的查询,更多相关知识敬请期待:保护小周ღ *★,°*:.☆

    2024年02月02日
    浏览(33)
  • MYSQL数据库基本操作-DQL-基本查询

    一.概念 数据库管理系统一个重要功能就是数据查询。数据查询不应是简单返回数据库中存储的数据,还应该根据需要对数据进行筛选以及确定数据以什么样的格式显示。 MySQL提供了功能强大,灵活的语句来实现这些操作。 MySQL数据库使用select语句来查询数据。 二:语法  

    2024年01月25日
    浏览(50)
  • MySQL所有基本操作详解

    首先sql操作中的的是大小写不敏感的,create 和CREATE是一样的。 1.1 查看数据库 语法: 示例: show 和databases 之间有一个或者多个空格 注意是databases而不是database 结尾分号是英文形式,分号在SQL中是表示一行执行+ 代码的,如果语句后面么有分号,那么默认是要一句代码

    2024年02月08日
    浏览(34)
  • 【MySQL】记录的基本操作

    为表中所有字段插入数据 基本语法 INSERT INTO 表名(字段名1,字段名2,…) VALUES (值 1,值 2,…); 示例 为表中指定字段插入数据 基本语法 INSERT INTO 表名(字段名1,字段名2,…) VALUES (值 1,值 2,…); 示例 同时插入多条数据 基本语法 INSERT INTO 表名 [(字段名1,字段名2,…)]VALUES (值 1,值

    2024年02月08日
    浏览(29)
  • 【MySQL】表的基本操作

    数据类型 大小 说明 bit[(M)] M指定位数,默认为1 二进制,M范围从1到64,存储数值范围从0到2^M-1 tinyint 1字节 smallint 2字节 int 4字节 bigint 8字节 float(M,D) 4字节 单精度,M指定长度,D 指定小数位数,会发生精度丢失 double(M,D) 8字节 decimal(M,D) M/D最大值+2 双精度,M指定长度,D表示小

    2023年04月22日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包