Mysql视频学习记录

87 阅读3分钟

1.语句分类

DQL:数据查询语言(带有select关键字的都是查询语句)

DML:数据操作语言(对表中数据进行增删查的)

  • insert增
  • delete删
  • update改

DDL:数据定义语言(对表结构的操作)

  • create新建
  • drop删除
  • alter修改

TCL:事务控制语言

  • commit事务提交
  • rollback事务回滚

DCL:数据控制语言

  • grant授权
  • revoke取消授权

语句执行顺序与书写顺序

  • from select
  • where from
  • group by where
  • having group by
  • select having
  • order by order by

2.DQL语句

  1. desc 表名; 查看表结构
  2. select database(); 查看当前数据库
  3. select 列名 as 别名 from 表;也可省略 as 使用空格:select 列名 别名 from 表;

如果别名里有空格则select 列名 '别 名' from 表;单引号括起来

  1. SELECT DISTINCT university FROM user_profile;distinct 去重 或者分组去重

SELECT university FROM user_profile GROUP BY university;

  1. order by 字段 排序方式; 按指定字段排序,默认升序。降序字段后加desc。升序asc。

可以设置多个排序条件,前面都符合时按后面的,逗号分隔。

  1. case when 情况 than 怎么做 when ... than .... Else 剩余情况处理 end;

类似于 if else 循环 当查到一个符合条件后面的不在比较

2.1.连接

  1. 内连接(查询出所有符合条件的)
select *

from 

    stu u(别名)

inner(可省略) join (内连接)

    sc c(别名)

on 

    u.s_id=c.s_id(连接条件)

where

    (筛选条件)

on条件为等值时叫做内连接之等值连接,此外还有非等值连接,如:

u.year between year.start and year.end;求出学生的入学年份在年级表里对应的年级。

此外内连接还可以自连接,即一张表看做两张表

SELECT

    a.ename as '员工',b.ename as'领导'

FROM

    emp a

inner join

    emp b

ON 

    a.mgr =  b.empno;

查询一张员工表里的领导关系
  1. 外连接(查询出要求的表的全部,左连接显示左表全部,右同理,二者可相互转换)
select * 

from 

    stu 

left join

    sc 

on 

    stu.s_id=sc.s_id;

这里部分stu对应的sc为空,但也显示出来

  1. 多表连接
SELECT

    ......

FROM

    a

JOIN

    b

ON

    a和b连接条件

JOIN

    c

ON

    a和c连接条件

JOIN可内外连接混合使用

.0

3.DDL与DML

  1. create创建表
create table 表名(

    字段 类型,

    字段 类型,

    字段 类型

    );
  1. insert插入数据
insert into 表名(字段1,字段2.....) 

values(值1,值2....)

字段和后面的值数量和数据类型对应

4.视图

视图的创建

create view 视图名 as select....;

删除视图

drop view 视图名;

视图的创建as后面只能跟DQL语句。

可以对视图进行增删改查(CRUD),会影响到原表数据。表连接的视图也可以。

5.DBA命令

创建用户

create user 用户名 identifide by '密码';



数据导出

CMD命令行下

mysqldump 数据库名 (导出指定表时,空格加表名)>目录\数据库名.sql -u用户名 -p密码

数据导入

1.登录数据库  2.创建数据库  3.使用数据库

source 目录\sql文件

6.范式

  1. 任何一个表都要有主键,每个字段原子性不可再分。
  2. 1的基础上,非主键字段完全依赖主键,无部分依赖。

部分依赖即依赖部分符合主键

  1. 2的基础上,非主键字段直接依赖主键,无传递依赖。

实际开发中可以拿冗余换速度。