关于mysql语句单表多表的整理

一.单表的一些操作语句

1.插入数据

insert into 表名 (字段1,字段2,字段3) values(值1,值2,值3); 注意:两个括号

yo
举个例子(上面表为user):insert into user (name,pwd) values("腾飞","789");
则结果:
在这里插入图片描述

当然也可以insert into user (name) values("腾飞飞");不过注意一些非空,类型不匹配等约束

一个细节,当你想要插入一条数据时,并且希望为该表的每一个字段都赋值,那么你可以不用在表名后列举所有字段名

insert into user (id,name,pwd) values(99,"飞飞飞","222");
insert into user values(88,"飞飞飞2","2222");

以上两条语句是等效的

2修改数据

update 表名 set 字段1=值1,字段2=值2 where id=值;

一般都会加where 不然update user set name="hu",pwd="333";
在这里插入图片描述

update user set name="hu",pwd="333444" where id=88;

在这里插入图片描述
3.删除数据

delete from 表名 where [condition];

一般都会有where 不然整张表数据全删

delete from  user where id=99;
delete from  user where name="huu";

以上两条语句都会根据条件去删除数据
4.查询数据

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

最常用查询所有 select * from user;
当然还有复杂一点点的查询
(1)where子句 可以使用>,<,=,!=,&&,||*

 select * from user where id>5;
 select * from user where id<5;
 select * from user where id=5;
 select * from user where id!=5;
 select * from user where id!=5&&name="hu2";
 select * from user where id=5||name="hu2";

***(2)like子句***模糊匹配
百分号 %:匹配任意多个字符 (%a 以a结尾 前面任意多个字符都可查询)
下划线 _:匹配固定一个字符 (%a 以a结尾 前面只能一个字符可查询 几个_就是几个字符)

 select * from user where name like "%a";
 select * from user where name like "___a";

(3)in子句
in 关键字也是使用在 where 子句的条件表达式中,它限制的是一个集合,只要字段的值在集合中即符合条件

 select * from user where name in ("hu1a","hu2b");

也可以使用 not in 反向限制

select * from user where name not in ("hu1a","hu2b");

(4)order by

select (字段或*)  from 表名 where 条件  order by 字段(可多个)desc(或者asc);

常用的: select * from user order by id desc; select name from user order by id desc;

当字段非数字时 每个数据库都预定义了很多的排序规则,一般数据的实现都默认使用 utf8_general_ci 排序规则、

(5)group by
用于将查询返回的结果集进行一个分组
较常用

 select * from user group by name;
 select avg(salary) from user group by name;

(6)having
基于返回的结果进行筛选 where子句结束后进行

 select avg(salary) as "平均工资" from user group by name having 平均工资>15;

他是基于select avg(salary) as “平均工资” from user group by name;返回的结果来进行筛选

SELECT column1, column2
FROM table
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2
记住这个模板,各个子句在 SQL 语句中的位置,可以不出现,但不得越位,否则就会报语法错误

二.多表的一些操作语句

(1)首先分为交叉连接,外连接,内连接
举个例子:
student表
在这里插入图片描述
在这里插入图片描述
交叉连接:

select * from department  cross join student; 
select * from department,student;
select * from department,student where department.id=student.depatId;

此方法资源消耗较大 一般使用内连接代替

内连接

select * from student  inner join department on department.id=student.departId;

交叉是where 内连接是on 前者是返回结果集后where再进行判断 后者在笛卡尔积(两张表合并时)过程中,只有符合条件才能合并生成新的数据行

外连接

select * from department  right join student on department.id=student.departId;
select * from student  left join department on department.id=student.departId;
select * from student  full join department;

分别为右外连接,左外连接,全外连接
区别:左就以左为基准,左表中字段即使是null ,也显示,全外没有基准,全部显示
相比内连接也就是可以显示null

当然也可以

select * from student s left join department d on d.id=s.departId;
一个意思
先讲这么多 累人

ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;  
这个修改表的字符集和校对规则

//偷懒的方式
SHOW CREATE DATABASE 数据库名  查看创建数据库语句
SHOW CREATE TABLE 表名      查看创建表的语句
DESC 表名  显示表的信息

例子:
show create table ks_blog
CREATE TABLE ks_blog (
id int(10) NOT NULL AUTO_INCREMENT COMMENT ‘自增id’,
bid varchar(200) NOT NULL COMMENT ‘博客id’,
title varchar(200) NOT NULL COMMENT ‘博客标题’,
content longtext NOT NULL COMMENT ‘博客内容’,
sort int(1) NOT NULL DEFAULT ‘0’ COMMENT ‘排序 0 普通 1 置顶’,
views int(10) NOT NULL DEFAULT ‘0’ COMMENT ‘浏览量’,
author_id varchar(200) NOT NULL COMMENT ‘作者id’,
author_name varchar(200) NOT NULL COMMENT ‘作者名’,
author_avatar varchar(500) NOT NULL COMMENT ‘作者头像’,
category_id int(10) NOT NULL COMMENT ‘问题分类id’,
category_name varchar(50) NOT NULL COMMENT ‘问题分类名称’,
gmt_create datetime NOT NULL COMMENT ‘创建时间’,
gmt_update datetime NOT NULL COMMENT ‘修改时间’,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

//增加外键约束

如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表,外键是用来实现参照完整性的

Alter Table 表名
constraint 外键名字 foreign key (添加外键的列名)references 参考表的名称(参考表中的列名)
例如 :有一个department 部门表 中有 depId 部门id为主键
还有一个user员工表 主键为id 增加一个depId外键
ALTER TABLE USER CONSTRAINT FK_depId FOREIGN KEY (depId) REFERENCES department(depId)

//DDL(数据定义语言,Data Definition Language)
建库、建表、设置约束等
//DML (数据操纵语言,Data Manipulation Language )
主要指数据的增删查改: Select\delete\update\insert\

潜龙勿用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值