MySQL命令大全详解(为了方便阅读,很多地方使用小写)

MySQL命令大全详解(为了方便阅读,很多地方使用小写)

MySQL中的关键字建议使用大写!

DDL语句:create alter drop show

数据库操作(databases):

  • create database 数据库名;

    create database test; // 创建test数据库
    create database test character set utf8; // 并设置编码格式
    

    image-20201203140752868

  • 查询数据库

show databases; 查询数据库所有的库

image-20201203141149537

  • show create database 数据库名:查看某个数据库创建时定义的信息

image-20201203141347968

  • drop database 数据库名;删除指定的数据库操作 可以干掉数据库

image-20201203141538085

  • select database(); 查看正在使用的数据库 这里请注意 是database() 不是databases

image-20201203141825797

  • use 数据库名; 使用指定的数据库

image-20201203142013702

的表操作(table);

  • create table 表名(字段名1 类型(长度) 【约束】,字段名2 类型(长度) 【约束】,…);
CREATE TABLE category (
    cid VARCHAR(32) PRIMARY KEY, // primary key   主键约束的意思   主键标记的列不能为空    不能有重复的值 且唯一
    cname VARCHAR(50));

image-20201203142807634

  • show tables; 查看当前使用的数据库中所有的表

image-20201203142945824

  • desc 表名; 查看具体某个表的表结构

image-20201203143148552

  • drop table 表名;删除某个指定的表

image-20201203143256540

  • alter table 表名 add 列名 数据类型(长度) 【约束】; 给表数据增加一列

image-20201203143748599

注意 : desc 是SQL关键字,所以你要想用这个关键字作为列名必须转移,也就是在列名上加 `` 进行转移,注意这不是单引号 而是 ` 请详见下图

image-20201203144714604

  • alter table 表名 modify 列名 数据类型(长度) 约束; 修改列的 数据类型、长度、及约束;

image-20201203145009385

  • alter table 表名 change 旧表名 新表明 数据类型(长度) 约束; 修改列名

image-20201203145147927

  • alter table 表名 drop 列名; 删除表中的某列

image-20201203145359134

  • rename table 旧表名 to 新表明; 修改表名

image-20201203145642183

  • insert into table 表名(表中字段1,表中字段2,…) values (值1,值2,…); 向表中添加一行数据
注意:

值与字段必须对应,个数相同,类型相同

值的数据大小必须在字段的长度范围内

除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)

如果要插入空值,可以不写字段,或者插入 null。
  • update 表名 set 字段名=值,字段名=值,… where 条件; 对表中已有的数据进行更新

image-20201203150113695

  • delete from 表名 where 条件; 删除表中部分符合条件的数据
delete from 表名 where 条件;	// 删除表中符合条件的部分数据
delete from 表名;	// 删除整个表(逐条删除)
truncate from 表名;	// 先整表摧毁,再重新创建一个新的与原来表格式相同的表    -->这个快!!!

image-20201203150516359

SQL约束

  • 主键约束:primary key
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。
主键的意义与作用
主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。
一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。
// 对于已经建好的有主键的表可以进行修改
alter table product modify 主键列名 主键类型 not null auto_increment;//修改主键为非空,自增

创建表的时候声明主键:

image-20201203151208837

  • auto_increment:自动增长列

image-20201203151431118

当向表中添加(insert into)新的数据的时候,可以不为自增列添加,也可以添加null值 ,自增列会自动递增赋值

image-20201203151855333

  • not null; 非空约束 意思就是这列值不能为null

image-20201203152055135

  • 外键约束:alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);
// 外键约束:在定义某个表的某个列为外键的时候一定要确保  主表已经存在,因为要创建联系,所以没有与主表的列之间的联系是无法创建外键约束的

image-20201203163545554

查询语句(select)

image-20201203152501678

  • select * from 表名;查询整个表

image-20201203153253146

  • select pname,price from product; select 列名1,列名2 from 表名–> 就是从表名的所有列中 把 列名1 和列名2 的列单独查询并显示出来

image-20201203153601680

  • as ;就是给名字很长 或 之后学的 子查询 的一个简洁一些的名字 也叫别名 很实用

image-20201203154129221

  • distinct ; 用于去掉重复的值 放在要查询的列名前即可

image-20201203154318683

  • (+ - * / 。。。)运算结果表达式使用

image-20201203154449423

  • 运算符的使用:

image-20201203154618716

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RxOx5gop-1607000524642)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201203154641799.png)]

image-20201203154703406

image-20201203154730368

image-20201203154754379

在此 不 一 一 举例;

  • select * from 表名 order by 排序字段 asc|desc; 根据表中的某列进行排序查询展示,asc是升序,desc是倒叙

image-20201203155218308

聚合查询

count():统计指定列不为NULL的记录行数; SELECT COUNT(*) FROM product;
sum():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;SELECT SUM(price) FROM product WHERE c_id = 1;
max():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;SELECT MAX(price),MIN(price) FROM product;
min():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;SELECT MAX(price),MIN(price) FROM product;
avg():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;SELECT AVG(price) FROM product WHERE c_id = 2;

分组查询

select * from 表名 group by 字段名 having 条件; group by 就是根据表的某个字段的值,对该字段的值进行分组,having是在分组后执行的,分组后的筛选,不建议使用,分组已经吃掉很大内存了,再筛选,内存负担过重,不建议这样使用。(小数据量还可以考虑)。

where 和 having的区别;

// having是在分组后对数据进行过滤
// where是在分组前对数据进行过滤
// having后面可以使用分组函数(统计函数)
// where后面不可以使用分组函数
// 问题 : having 它会将你的分组数据再次筛选 --> 分组其实已经很浪费数据库性能 --> 在分组之后还要条件筛选(非常浪费数据库性能)
// having --> 被禁止使用的

多表查询

一对多关系:

在多的表中创建外键与一的表中的主键关联

这样关联之后,不能够再向多的表中添加一表中主键没有的数据

也不能删除一的表中,已经被多的表中外键引用了的数据,都会报错,如果要单独操作,需要先删除外简约束

多对多关系

准备:

image-20201203165339003

image-20201203165627257

image-20201203165822958

  • 设置外键:
  • 设置外键1:image-20201203170337680

设置外键2:image-20201203170823529

这之后最好再给中间表设置一个 联合 主键

联合主键:image-20201203171225763

  • 向联合表中添加数据:image-20201203171335348

  • 向角色表中添加数据:image-20201203171437873

  • 向中间表添加数据(数据存在):image-20201203171522771

  • 删除中间表的数据:image-20201203171616571

  • 向中间表添加数据(数据不存在) – 执行异常:image-20201203171652809

  • 删除用户表或者角色表数据 – 执行异常:image-20201203171728922

    链接查询
    内连接
  • 隐式内连接(不推荐使用):select * from A,B where 条件;image-20201203172638493

  • 显示内连接:select * from A inner join B on 条件; (推荐写法)image-20201203172702424

外连接:(使用的关键字 outer join – outer可以省略)
  • 左外连接:select * from A left outer join B on 条件;image-20201203172908408

  • 右外连接:right outer join(了解)image-20201203173019586

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值