值得收藏的MySQL基础总结

文章目录

  • 服务的启动和停止
  • 数据库的相关操作
  • 数据库表的相关操作
  • 表中数据的相关操作
  • 排序和分页
  • 分组查询
  • 联表查询

服务的启动和停止

  • 停止数据库服务,在DOS下以管理员身份运行
    net stop mysql
  • 开启数据库服务,在DOS下以管理员身份运行
    net start mysql

数据库的相关操作

  • 连接数据库
    mysql -uroot -p输入密码即可
  • 修改密码,把你自己的密码填到最后一个单引号内即可
    alter user 'root'@'localhost' identified by 'root';
  • 创建数据库
    create database 数据库名;
  • 创建数据库,判断不存在再创建
    create database if not exists 数据库名;
  • 显示所有数据库,其中四个是默认的
    show databases;
  • 使用数据库
    use 数据库名;
  • 删除数据库
    drop database 数据库名;
  • 删除数据库,判断存在再删除
    drop database if exists 数据库名;

数据库表的相关操作

  • 创建数据库表
	create table 表名 (
	 	  列名1 数据类型1,
	      列命2 数据类型2,
	      ...
	      列名n 数据类型n,
	      primary key 列名(主键)
	 );
  • 查看数据库中所有表
    show tables;
  • 查看数据库表结构
    desc 表名;
  • 删除表
    drop table 表名;
  • 修改数据库表名
    alter table 表名 rename to 新表名;
  • 添加列
    alter table 表名 add 列名 数据类型;
  • 删除列
    alter table 表名 drop 列名;

表中数据的相关操作

  • 添加数据
  • insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);列命和值要相对应。
  • insert into 表名 values(值1,值2,...值n);这里的值要包含表里的所有列。
  • 删除数据
  • delete from 表名 where 条件;,删除满足条件的数据。
  • delete from 表名;,如果不写条件,则默认删除表里的所有数据。
  • 修改数据
  • update 表名 set 列名1 = 值1, 列名2 = 值2,... where 条件;,这里是修改满足条件的数据。
  • update 表名 set 列名1 = 值1, 列名2 = 值2,...;,如果是不加条件,则修改所有的数据。
  • 查询数据
  • select 列命 from 表名,查询某列的数据。
  • select * from 表名,查询所有列的数据。
  • select distinct 列命 from 表名,查询去重后的数据。
  • 条件语句(where)
    为了演示的方便,这里查询出来的结果都用 * 来代替。-
  • select * from 表名 where 条件1 and 条件2,查询同时满足条件1和条件2的数据。
  • select * from 表名 where 条件1 or 条件2,查询满足条件1或条件2的数据。
  • select * from 表名 where not 条件1,查询不满足条件1的数据。
    值得收藏的MySQL基础总结_第1张图片
  • select * from 表名 where 列名 is null;,查询某列为空的数据。
  • select * from 表名 where 列名 is not null;,查询某列非空的数据。
  • select * from 表名 where 列名 between 值1 and 值2;,查询某列在值1和值2之间的数据。
  • select * from 表名 where 列名 like 'hello%';,查询所有以hello开头的数据,like结合%使用,其中%代表0到任意个字符。
  • select * from 表名 where 列名 like 'hello_';,查询所有以hello开头并且后面只跟一个字符的数据,like结合_使用,_代表1个字符。
  • select * from 表名 where 列名in (值1,值2,...);,查询某列在某区域内的数据。

排序和分页

排序关键词是order by,其默认是升序,如果想要降序,只需加上desc,其语法就是order by后面加上要排序的字段。

  • select * from 表名 order by 列名;,通过该列进行升序排序。
  • select * from 表名 order by 列名 desc;,通过该列进行降序排序。
  • select * from 表名 limit offset,pagesize;,查询索引从offset(第一个数据索引是0)开始,每页显示pagesize个元素。
  • select* from user limit 0,10;,查询出的用户表数据,从第1个用户开始显示,每页显示10个。
  • select* from user limit 10,10;,查询出的用户表数据,从第10个用户开始显示,每页显示10个。
  • 第一页 0,10
  • 第二页 10,10
  • 第三页 20,10
  • 第n页 (n-1) * 10,10

分组查询

分组查询的关键字是group by,还可以与聚合函数(count(),sum(),max()等)搭配使用,下面通过一个user表进行演示。

  • select 字段名 from 表名 group by 字段名
  • select 字段名 count(字段名) from 表名 group by 字段名
    在这里插入图片描述
    select user_type from user group by user_type;
    在这里插入图片描述
    select user_type,count(user_type) from user group by user_type;
    在这里插入图片描述

联表查询

联表查询的关键字是join,如果需要判断条件的话是join on(on后面加判断条件),这两个一般是成对出现的,这里以两个表的连接进行讲解,首先给出两个表,分别是student学生表和result成绩表。
值得收藏的MySQL基础总结_第2张图片
在这里插入图片描述
首先我们进行讲解内连接(inner join也叫join),也是最常用的一种联表查询,所谓inner join,也就是当我们查询学生的姓名和成绩时,我们需要用到student学生表和result成绩表,而inner join查出的结果就是,学生表中有该学生而且成绩表中对应的有该学生的成绩,满足这一条件的会被查出来。
在这里插入图片描述
下面进行演示查询学生的姓名和成绩,我们会看到,姓名和成绩都是相对应的,没有出现学生没成绩,也没有出现成绩没学生。
在这里插入图片描述
外连接包括左外连接和右外连接,也称为左连接和右连接。所谓的左连接(left join),也就是在内连接的基础上,又把左表中所有的信息打印出来了。
在这里插入图片描述
还是以查询学生姓名和成绩为例,左连接会把没有成绩的姓名打印出来(前提时student表在前,也就是在左),下面进行演示。
在这里插入图片描述
右连接(right join)跟左连接差不多,就是在内连接的基础上把右边表的信息打印出来了。
在这里插入图片描述
还是以查询学生姓名和成绩为例,右连接会把没有姓名的成绩打印出来(前提时result表在后,也就是在右),下面进行演示。
在这里插入图片描述

你可能感兴趣的:(MySQL)