常用的MySQL命令——入门必看笔记

管理员
2023-04-12 / 0 评论 / 63 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年05月12日,已超过288天没有更新,若内容或图片失效,请留言反馈。

分享一期MySQL学习笔记,全手打哦

1.开启MySQL服务:

net start 数据库服务名

2、 停止MySQL服务:

net stop 数据库服务名

3.命令行登录MySQL服务的几种方式
(1).先输入密码(-u和-p后面没有空格,前面有空格)

MySQL  –u用户名  -p密码

(2).后输入密码

MySQL  –u用户名  -p

(3).带主机地址登录(127.0.0.1和localhost都是本机地址)

MySQL  -h主机地址  -u用户名  -p密码

(4).带主机地址登录

MySQL --host=主机地址 --user=用户名 --password=密码

退出服务:输入exit或者quit
4.MySQL查看数据库列表

show databases;

5.MySQL创建数据库的几种方式
(1).直接创建数据库:

create database 数据库名称;

(2).MySQL判断数据库是否存在再创建:

create database if not exists 数据库名;

(3).判断数据库是否存在再创建数据库,并设置数据库的字符集

create database if not exists 数据库名character set utf8;

6.MySQL查看数据库的创建信息

show create database 数据库名;

7.MySQL修改数据库的字符集编码

alter database 数据库名character set utf8;

8.MySQL判断数据库是否存在再删除数据库

drop database if exists 数据库名;

9.MySQL使用数据库(切换数据库)创建表之前必须要指定使用的数据库

USE 数据库名;

10.MySQL判断数据表不存在再创建数据表

CREATE TABLE IF NOT exists 表名(
    字段名1  数据类型(长度), 
    字段名2  数据类型(长度),
    字段名n  数据类型(长度)); 

11.MySQL查询当前使用的数据库

Select database();

12.MySQL查看数据表列表

show tables;

13.MySQL判断数据表如果存在再删除数据表

drop table if exists 表名;

14.MySQL判断数据表如果存在再删除多张表

drop table if exists 表名1, 表名2;

15.MySQL查看数据表的创建信息

show create table 表名;

16.MySQL查看数据库引擎

show engines;

查看mysql的版本号

select version();

17.MySQL查看数据表的结构:desc是简写的

(1).desc 表名;
(2).describe 表名;

18.MySQL修改表名

(1).alter table 原表名 rename to 新表名;
(2).alter table 原表名 rename 新表名;

19.MySQL删除表字段

alter table 数据表名 drop 字段名;

20.MySQL添加字段的方法
(1).不指定位置(默认添加到表的最后一个位置)

alter  table  数据表名  add  字段名  数据类型(长度);

(2).添加字段到表的第一个位置

alter  table  数据表名  add  字段名  数据类型(长度)  first ;

(3).添加字段1到字段2的后面

alter  table  数据表名  add  字段1  数据类型(长度)  after  字段2 ;

21.MySQL修改字段名

alter table 数据表名 change 原字段名 新字段名 数据类型(长度);

22.MySQL修改字段数据类型

alter table 数据表名 modify 字段名 数据类型(长度);

23.修改字段类型并将字段设置为表的第一个字段

alter table 数据表名 modify 字段名 数据类型(长度) first;

24.修改字段类型并将字段移动到指定字段后面

alter table 数据表名 modify 字段名 数据类型(长度) after 指定字段;

25.MySQL复制数据表
语法1:将表结构所有都复制过来

create table 新表名 select * from 被复制的表名;

语法2:只复制表结构的指定列

create table 新表名 select 字段名1,字段名2... from 被复制的表名;

语法3:将表结构所有都复制过来

create table 新表名 like 被复制的表名;

26.MySQL创建数据表时添加约束

create  table  if  not  exists 表名(
    字段名  数据类型(长度)  primary key,         #添加主键
    字段名  数据类型(长度)  unique,          #添加唯一约束
    字段名  数据类型(长度)  not null,          #非空约束
    字段名  数据类型(长度)  default ‘值’,         #默认约束
    字段名  数据类型(长度)  unique not null,  #可以同时添加多个约束
    primary  key(字段名),  #在字段列表末尾添加主键(跟前面的方式二选一)
    unique(字段名), #在字段列表末尾添加唯一约束(跟前面的方式二选一)
    foreign  key(字段名)  references  主表名(主表的主键));

创建表时添加约束的注意事项:
1、主键约束是非空且唯一的(两种写法:直接添加到主键字段的末尾、添加到字段列表的末尾)
2、唯一约束不可以和默认约束一起使用(两种写法:直接添加到字段的末尾、添加到字段列表的末尾)
3、非空约束可以和唯一约束、默认约束一起使用(一种写法:直接跟在字段的末尾)
4、默认约束的值直接跟在default后面,值是数字不用加引号,是字符或中文要加英文的单引号(一种写法:添加到字段的末尾)
5、外键约束的字段数据类型需要跟关联的主键字段的数据类型一致,需要指定关联的数据表和字段(这个字段必须是主键),可以不指定约束名称,MySQL会自动按照规则添加约束名称(一种写法:添加到字段列表的末尾)给已创建的数据表添加约束、删除约束

27.MySQL主键约束:添加主键约束
手动添加了约束名称

alter  table  表名  add  constraint 约束名  primary key(字段名);

没有添加约束名称,系统会字段指定约束名称

alter  table  表名  add  primary key(字段名);

MySQL删除主键约束

alter  table  表名  drop  primary key;

28.MySQL外键约束:添加外键约束
指定约束名

Alter table 表名 add constraint 约束名 foreign key(外键字段名) references主表(主表的主键字段);

不指定约束名

alter table 表名 add foreign key(外键字段名) references 主表(主表的主键字段);

29.MySQL唯一约束:添加唯一约束
指定约束名

alter  table  表名  add  constraint 约束名 unique(字段名);

不指定约束名

alter  table  表名 add  unique(字段名);

MySQL删除唯一约束
关键词index

alter  table  表名 drop  index  约束名;

关键词key

alter  table  表名 drop  key  约束名;

注意:如果创建约束(主键、唯一约束)时没有指定约束名称,通过查看表的创建语句查看约束名

30.MySQL查看表的创建语句

Show create table 表名;

31.MySQL非空约束:添加非空约束

alter table 表名 modify 字段名 数据类型(长度) not null;

MySQL删除非空约束

alter table 表名 modify 字段名 数据类型(长度);

32.默认约束:添加默认约束

alter table 表名 modify 字段名 数据类型(长度) default 值;

MySQL删除默认约束

alter table 表名 modify 字段名 数据类型(长度);

33.MySQL添加数据:
(1).添加指定字段的数据
一次添加一条数据

Insert  into 表名(字段1,字段2,字段n) values(值1,值2,值n);

一次添加多条数据

Insert  into 表名(字段1,字段2,字段n)    values(值1,值2,值n),
(值1,值2,...,值n),
(值1,值2,...,值n);

(2).MySQL不指定字段添加数据
一次添加一条数据

insert  into 表名  values(值1,值2,值n);

一次添加多条数据

Insert  into 表名  values(值1,值2,值n),(值1,值2,值n),(值1,值2,值n);

注意:
1、如果添加指定字段的值,那么后面的值要跟前面的字段一一对应(值的位置,值的个数,值的数据类型)
2、如果不指定字段,就必须添加所有字段的值,并且字段和值要一一对应(值的位置,值的个数,值的类型)
34.MySQL修改数据

语法:

1、update 表名 set 字段1=值1,字段2=值,字段n=值n;
2、update 表名 set 字段1=值1,字段2=值,字段n=值n where 条件;

注意:
1、语法后面不跟where条件的话,就会把所有数据对应字段的值都修改了
2、如果修改的是主表主键的值,并且该值已经被外键引用,就不可以修改,如果该值没有被引用,就可以修改
3、若修改的是外键,修改之后的值必须是主表主键的值,否则就报错
4、如果where条件有多个,要用and连接

35.MySQL删除数据
语法:

1、delete from 表名;
2、delete from 表名 where 条件;
3、truncate table 表名;

注意:
1、语法后面不跟where条件的话,就会把所有数据都删除(切记切记)
2、where后面的条件如果有多个,就用and连接,不能使用‘,’隔开
3、如果删除的是主表的数据,已经被引用的那条数据就不能删除,没有被引用的数据可以删除
4、delete是一条一条数据删除的,如果要删除所有数据,效率较低
5、truncate是直接删除表,然后创建一张空表,但是要注意,这个不能用于删除主表(不管它的值是已经被引用)

36.MySQL简单查询数据
不带条件查询指定字段的数据

select 字段1,字段2,字段n  from  表名;

MySQL不带条件查询所有字段的数据

select * from 表名;

MySQL带条件查询指定字段的数据

select 字段1,字段2,字段n  from  表名  where 条件; 

注意:
1、给字段起别名,直接在查询的字段后面添加:as '别名'
2、*是通配符,表示所有字段

36.MySQL排序

select 字段1,字段2,字段n  from  表名 where 条件 order by 字段1 排序规则1,字段2 排序规则2...;

37.MySQL分页

select 字段列表  from  表名 where 条件 limit 开始的索引,展示的行数;

38.MySQL排序、分页一起使用

select 字段列表  from  表名 where 条件order by 字段 排序规则 limit 开始的索引,展示的行数;

注意:
1、排序规则有两个:升序ASC、降序DESC
2、可以对多个字段进行排序:order by 字段1 排序规则
3、where条件可以省略的
4、索引是从0开始算的,实际的数据是(索引+1)
5、如果limit后面只跟一位数字,表示的是展示的行数,开始的索引默认为0
6、limit后面跟的两位数字,如果展示的行数多余索引后面数据的行数,那么只会展示索引后面的数据

38.MySQL all:查询字段的所有值,包括重复的

select all 字段列表 from 表名 where 条件;

MySQL distinct:查询字段所有值,但是去除重复

select distinct 字段列表 from 表名 where 条件;

条件查询内的运算符
(1)关系运算符:>、<、>=、<=、!=、<>、=
(2)范围运算符:字段 between...and... 在....到....之间(结果是包含了两头的值)字段 not between...and... 不在....到....之间
查询范围的时候,小的值写在前面,大的值写在后面
(3)列表运算符:字段 in(值1,值2,值3...)
查询在值列表内对应的数据(括号内的值为“或”的关系)
字段 not in(值1,值2,值3...) 查询不在值列表内对应的数据(括号内的值为“与”的关系)
(4)空值判断:字段 is null 当某字段为空的时候字段 is not null 当某字段不为空时空值只能通过is进行判断,不能直接使用等号
(5)模糊匹配运算符:字段 like '匹配规则' 字段包含匹配规则的数据字段 not like '匹配规则' 字段包含不匹配规则的数据匹配规则:% 占位(0或者多个)任意字符,下划线,占1个任意字符
39.MySQL单表统计查询
MySQL统计个数:count

select count(字段名) from 表名;

MySQL求和:sum

select sum(字段名) from 表名;

MySQL求平均数:avg

select avg(字段名) from表名;

MySQL求最大值:max

select max(字段名) from 表名;

MySQL最小值:min

select min(字段名) from 表名;

40.MySQL分组查询

select 字段名 from 表名 group by 分组字段名;
select 字段名from 表名 where 条件 group by 分组字段名 having 分组后条件;

如果要分别统计每个员工的数据,就要使用主键进行分组时,字段也可以使用*代替

根据字段进行统计(结果是排除了null值的),当统计所有数据的个数或者已经使用条件排除不需要的数据
分组查询(子句查询):group by 字段 对数据进行分组(根据字段进行)
1、需要对字段使用聚合函数进行统计时,要么先通过字段进行分组,要么带条件,然后统计,查询的结果包含分组字段和聚合函数
2、分组是放在where条件之后的,其他子查询语句之前
having语句:分组之后的条件(条件要跟分组字段相关)
having后也可以跟多个条件,可以结合||、or、and、&&、in使用
注意:
where条件在分组之前,having条件在分组之后(并且跟分组字段相关)

综合语法:

select 字段列表,聚合函数 from 表名 where 条件 group by 分组字段 having 条件 order by 排序字段 排序规则 limit 开始索引,查询的行数;

41.MySQL交叉连接:

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

查询多张表的数据
不带条件,会产生笛卡尔积
笛卡尔积:有A、B两张表,将A和B表的结果进行交叉
A:A1、A2、A3 三行数据
B:B1、B2 两行数据
结果:A1B1、A1B2、A2B1、A2B2、A3B1、A3B2
注意:
1、查询多个表,多个表有相同字段的就需要在相同字段前面加上表名,用法:表名.字段名
2、查询多张表时,可以对查询的表起别名,但是条件和查询字段那里就不能直接使用表名,只能使用别名了
3、如果查询多张表,表与表之间是可以使用多个inner join连接的,但是on只能有一个
42.MySQL交叉链接 不带条件,会产生笛卡尔积

select 字段名 from 表名1,表名2;  
select 字段名 from 表名1 cross join 表名2;

MySQL内连接 inner是可以省略的,on表示条件(跟where是一样的)

select 字段名 from 表名1 inner join 表名2 where 表名1.字段名=表名2.字段名;
select 字段名 from 表名1 inner join 表名2  on 表名1.字段名=表名2.字段名;

如果只查询两个表的部分字段,就需要在查询结果的字段前面加上表名
用法:表名.字段名

Select表名1.字段名, 表名1.字段名, 表名1.字段名n ,表名1.join_表名2,表名2.字段名 from 表名1,表名2 where 表名1.字段名=表名2字段名;

MySQL外连接:
MySQL左外连接

    select 字段名 from 表1 left outer join 表2 on 条件;

MySQL右外连接

    select 字段名 from 表1 right outer join 表2 on 条件;

注意:
1、outer可以省略不写
2、外连接要注意左右的主次关系
3、查询多个表,多个表有相同字段的就需要在相同字段前面加上表名
用法:表名.字段名
43.MySQL子查询
第一步:

select 第一步字段名 from 表名1 where 查询条件(字段名) in('值1','值2','值n');

第二步:将上一步查询出来的结果带入到语句中

select * from 表名2 where 第一步字段名 in(上一步查询出来的值);

总结以上语句:第二步括号内的值来自于第一步,就可以将括号内的值替换为第一步的语句内容

select * from 表名2 where 第一步字段名 in(select 第一步字段名 from 表名1 where 查询条件(字段名) in('值1','值2','值3'));

将一个查询语句嵌套在另一个查询语句内

in子查询: in子查询语句得到的结果是单列多行的结果
比较子查询: >、>=、<、<=、=、!=、<>
比较子查询语句得到的结果是单行单列的结果
exists子查询:判断是否存在该记录,如果存在就返回

exists判断子查询的结果是否存在,如果存在就返回

MySQL子查询的条件是依赖于外部查询的值

select * from 表名1 where exists(select * from 表名2 where 表名1.字段名=表名2字段名);

MySQL子查询在增删改语句中的应用
43.MySQL增

insert into 表名1(字段列表) select 字段名 from 表2;

44.MySQL改

update 表名 set 字段名=(返回单行单列结果的子查询) where 条件;
update 表名 set 字段名=值 where 条件是带返回单个字段结果的子查询;

45.MySQL删

delete from 表名 where 字段名=(返回单个字段的子查询);

46.MySQL集合查询
集合查询就是将多个查询结果合并在一起
union:将多个结果合并起来,并去除重复值
union all:将多个结果合并起来,不去除重复值
MySQL集合去除重复值查询

select 查询字段 from 表名 where 条件 union select 查询字段 from 表名 where 条件;

MySQL集合不去除重复值查询

select 查询字段 from 表名 where 条件 union all select 查询字段 from 表名 where 条件;

47.MySQL视图
创建视图语法:[]内容表示可选

    create [or replace] view 视图名[(列1,,列2,...,列n)]
    as
    select语句
    with check option;

注意:
1、or replace:如果已存在视图(视图名已经存在了),替换原有的视图,可选项
2、列1-列n:用于声明视图内的字段名(将查询的结果字段名起别名),可选项
3、as:不可省略
4、select语句:将查询的结果封装在视图里
5、with check option:限制通过该视图修改的记录要符合select语句中指定的选择条件,可选项
*视图也是一张虚拟表,所以查询视图的时候就用查询数据的select语句
如简写创建视图:查询所有女生的信息

create view 视图名
as
select语句;

MySQL查询视图数据:

select 字段列表 from 视图名 where 条件;

MySQL查看视图结构

describe 视图名;

MySQL查看视图的基本信息

show table status like '视图名';

MySQL查看视图的创建信息

show create view 视图名;

MySQL修改视图语句

Alter view 视图名 as
Sql语句;

MySQL删除视图

Drop 视图名;

48.MySQL函数创建

  Create procedure 函数名(in | out | inout 参数名 参数类型)
  Begin
  Select语句
  End;

MySQL函数调用

  Call 函数名(参数);

MySQL函数创建

 create PROCEDURE 函数名(in 参数名 参数类型,out 返回参数名 参数类型)
 begin
  select 字段 from 表名 where 条件 into 返回参数名;
 end;

MySQL调用带参函数

 call 函数名('参数名',@返回参数名);
 select @返回参数名;

MySQL重置自动增长的值

ALTER TABLE 要重置的表名 AUTO_INCREMENT = value;

MySQL笔记的分享就到这里,如果你发现文章当中出现描述错误或者代码错误,请务必留言
如果你觉得笔记不错,请联系我获取word版本

0

打赏

评论 (0)

取消