MySQL基础

99 阅读2分钟

一、DDL语言

1.创建数据库

create database test1;(test1为数据库名)

2.删除数据库

drop database test1;

3.创建数据表

create table emp(ename varchar(20), deptno int(2));

4.删除表

drop table emp;

5.修改表

  • 修改表的类型

修改表emp的ename 字段定义,将varchar(10)改为varchar(20)

alter table emp modify ename varchar(20);

  • 增加表的字段

在表emp中新增加字段age,类型为int(3)

alter table emp add column age int(3);

  • 删除表的字段

将字段age删除掉

alter table emp drop column age;

  • 字段改名

将age改名为age1,同时修改字段类型为int(4)

alter table emp change age age1 int(4);

  • 修改字段排列顺序

前面介绍的add和change和modify,add添加的新字段默认是加在表的最后位置,而change和modify默认都不会改变字段的位置

alter table emp add birth date after ename;

  • 更改表名

将表emp改名为emp1

alter table emp rename emp1;

二、DML语句

1.插入数据

insert into emp (ename,hiredate,sal,deptno) values ('zzxl','2000-01-01','2000',1);

等价于 insert into emp values('lisa','2002-01-02','300',2);

2.更新数据

把emp表中ename的名为lisa的薪水sal从3000更改为4000

update emp set sal=4000 where ename='lisa';

同时更新表emp中的字段sal和表dept中的字段deptname

update emp a,dept b set a.sal=a.sal*b.deptno,b.deptname=a.ename where a.deptno=b.deptno;

3.删除记录

delete from emp where ename='dony';

同时删除表emp和dept中deptno为3的记录

delete a,b from emp a,dept b where a.deptno=b.deptno and a.deptno=3;

4.查询记录

  • 聚合操作

面试重点: having和where的区别在于,having是对聚合后的结果进行条件的过滤,而where是在聚合前就对记录进行过滤,如果逻辑允许,尽可能先用where先过滤记录,这样因为结果集减小,将对聚合的效率大大提高,最后再根据逻辑看是否用having进行再过滤。

  • 表连接

内连接和外连接

主要区别:内连接仅仅选出两张表中互相匹配的记录,而外连接会选出其他不匹配的记录。

内连接select ename,deptname from emp,dept where emp.deptno=dept.deptno;

外连接

左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录
select ename,deptname from emp left join dept on emp.deptno=dept.deptno;

右连接:包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录
select ename,deptname from dept right join emp on dept.deptno=emp.deptno;

  • 子查询

select * from emp where deptno in (select deptno from dept);

  • 记录联合

union和union all 的主要区别:UNION ALL是把结果集直接合并在一起,而UNION是把UNION ALL后的结果进行一次DISTINCT,去除重复记录的结果。

三、DCL语句

DCL语句主要是DBA用来管理系统中的对象权限时使用的。