sql简单总结

sql分类

  1. DDL(Data Definition Languages-数据定义语言):create, drop, alter
  2. DML(Data Manipulation Language-数据操纵语言):select, delete, update, insert
  3. DCL(Data Control Language-数据控制语言):grant, revoke

 

一:DDL

1.创建数据库(create,drop)

  • 展示用:show database test,切换用 use test;
  • 用命令链接到数据库:mysql -u root -p
  • 创建test数据库:create database test;
  • 删除test数据库:drop database test;

 

2.创建表(create,drop,alter)

  • 查看数据库中的表:show tables;展示表详情:desc user
  • 创建表user:create table user( name varchar(10),age int(2),psd varchar(20));
  • 删除表user:drop table user;
  • 修改表user的psd 类型为varchar(50):alter table user psd modify varchar(50);
  • 增加字段:alter table user add column sex varchar(5);
  • 删除字段:alter table user drop column sex;
  • 字段改名:alter table user change age age1 varchar(10);名字改为age1,类型改varchar(10)
  • 新增birth加到name后:alert table user add birth string after name;
  • 修改age加到最前面:alter table user modify age int(3) first;
  • 更改表名为user1:alter table user rename user1;

 

二.DML(表:user-name,age,psd,salary-name,money)

 

1.插入数据:

插入记录:insert into user (name,psd,age)values (“张三” ,”123456”,30);

也可不指定字段,按顺序插入:insert into user values (“李四” ,”123456”,30,”95.12.16”);

也可一次插入多条:insert into user values(“hqq” ,”123”,15,”95.12.16”),(“joye” ,”123”,30,”95.12.16”)

 

2.修改数据

把hqq薪水改10000:update salary set money=10000 where name=”hqq”

也可以同时改多个表

 

3.删除数据

删除李四记录:delete from user where name=”李四”;

同时删多个表:delete u,s from user u,salary s where u.name=”hqq” and s.name=”joye”;

 

4.查询数据

查询全部:select * from user;

查询name 去重:select distinct name from user;

排序:select * from salary order by money,name;

 

Limit查询:(默认偏移量为0)

查询前5条记录:select * from salary order by money limit 5;

从第二条开始的5条记录: select * from salary order by money limit 1,5;

 

聚合查询:

聚合函数有:sum,avg,min,max,count

Group by:分类聚合字段,比如按照部门分类统计员工人数

Having:表示对分类后的结果再进行条件判断

With rollup:是可选语法,表名是否对分类聚合后的结果进行汇总

 

统计公司总人数:select count(1) from emp;

统计各部门人数:select deptname,count(1) from emp group by deptname;

统计部门人数大于1的:select deptname,count(1) from emp group by deptname having count(1)>1;

统计所有员工工资总和,最低,最高:select sum(salary),max(salary),min(salary) from emp;

即统计各部门人数,又统计总人数:select deptname,count(1) from emp group by deptname with rollup;

 

连接查询:

内连接

隐式

显式:join或inner join

 

外连接

左外连接:left join或left outer join   

右外连接:right join 或 right outer join 

全连接:full join 或 full outer join

 

交叉连接:(笛卡尔积)

隐式:内连接隐式去掉(改变)where 后面的条件

显式:cross join

 

注意:那么现在来说说join on和where区别

1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须 返回左边表的记录)了,条件不为真的就全部过滤掉。

 

子查询:(常用关键字:in,not in,exists,not exists,=,!=等)

如果子查询结果唯一,可以用=代替in

某些时候子查询可以转换为表联合,即内连接那种方式,达到优化效果

 

记录联合:(union,union all)

注意两个select查询的结果列数、类型尽量一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值