MySQL 简洁笔记

limit 是mysql 特有的

Oracle 中使用rownum

常用命令

查询当前使用的数据库
select database(); 
​
查询数据库版本
select version();
​
终止一条sql
\c
​
退出msql
exit
​
查看当前库中的表
show tables;
​
查看其他数据中的表
show tables form <database name>;
​
查看表的创建语句
show create table <table name>;
​
查询表设计
desc <table name>

数据个中 字符 使用单引号'' 避免使用""

实际开发避免使用*

数据库中 null 不是值 不能使用= 只能用 is null 或 is not null 判断

select    5
...
from      1
...
where     2
....
group by  3
....
having    4
....
order by  6
....
limit     7

条件查询

运算符说明
=等于
<> 或 !=不等于
<小于
<=小于等于
>大于
>=大于等于
between...and两个值之间 >= and <=
is null为null (is not null 不为空)
and并且
or
in包含 ,相当于多个 not in
notnot取非 主要在 in 或is 中
like模糊查询 %like%
distinct去重(select distinct 只能这样使用) 去重全部字段或联合去重

%like 不走索引,避免使用

\转义字符 一起使用_

distinct 必须在select 的第一个字段

例如: select distinct deptno,job .....

10-clerk 和 20-clerk 是不重复的

会把字段组合到一起去重

deptnojob
10clerk
10max
20clerk
20max

and 与 or 优先级

运算及优先级不确定时,使用()

number>100 and id= 1 or id =2,
运算  number > 100  and id =1
或 id = 2
两个条件
​
number>100 and (id =1 or id=2)
运算  number >100
后   id =1 or id =2

order by asc 升序 order by desc 降序

多字段排序 按条件顺序,分级处理

select name,sal
from emp
order by sal desc, name asc;
先根据sal 降序排序, 在sal相同时候,在根据 name 升序排序

分组数

分组函数 是对一组数据进行操作的 会自动忽略null

分组函数不能直接使用 where 中

函数写到查询过程中不走索引,函数用在select 中

分组函数 在group by 后执行, 一般都一起使用

count计数
sum求和
avg平均
max最大
min最小

group by 和 having

group by 按照某个字段或者没写字段进行分组

having 对分组之后的数据进行再次过滤

当没有group by 时 整张表作为一组

sql语句中有 group by 分组后 select 只能有 分组后的字段,不能有其他字段

例子 : 查询公司每个岗位的最高工资

select max(sal),job
from emp 
group by job;

列子:找出每个 部门不同的 工作岗位的 最高薪资

select 
    deption,job,max(sal)
from
    emp
group by 
    deption,job;

列子: 查询部门最高 工资 大于3000 的部门

select
    max(sal),deptno
from
    emp
group by
    deptno
having    
    max(sal) > 3000;
    
方式二 效率高
select max(sal),depton from emp where sal>3000 group by deptno; 

连接查询

  • 内连接 inner .. .join ...on //inner 可以省略

    • 等值连接 table1 join table2 on 1.id=2.id

    • 非等值连接 例如: join .. on 1.id between 2 and 4;

    • 自连接 (一张表当两张表)

  • 外连接

    • 左外连接 left .. join .. on

    • 右外连接 right ..join ..on

  • 全连接 (基本不用)

子查询

select ( select)

from ( select)

where( select)

union 查询结果集相加

查询结果 列 的数量必须一致

结果集合成一张新表

select ....from .....
union
select ....from...

limit

通用分页

常用字段类型

类型描述
Char()固定长度
Varchar()可变长
double(10位,2小数点)浮点数
Float()浮点数
int()整型
bigint(长度)长整型
Date日期 年月日
DateTime日期 年月日 时分秒 毫秒
time日期 时分秒
BLOBBinaryLarge Objcet(二进制大对象) 视频等流媒体信息
CLOBCharacterLarge Object(字符大对象) 储存4G的字符串

insert into

insert into table(字段1,字段2.....) values(值1,值2.....) ,(值2.1,值2.2.....)

需要 字段与值 一一对应

update

update table set 字段1 = 值 , 字段2 = 值..... where

没有where 做全表更新

delete

delete from table where 条件

truncate 截断

truncate table name

truncate table emp1;

把表头留下,其他数据删除,不可回滚

约束

  • not null非空

  • unique 唯一约束

  • primary key 主键约束

    • auto_increment 主键自增

  • foreign key 外键约束

  • check 自定义检测约束 (不推荐使用,mysql还不支持)

外键约束 ——不推荐使用

外键约束 foreign key

外键字段 添加有外键约束的字段

外键值 外键字段中的每一个值

foreign key(字段1)  references table(字段2)

表1 作为子表, 字段 外键约束 表2

表1的 外键约束字段的 值,只能和表2 的字段 一样

存储引擎

innoDB 推荐写 表

  • 行锁

  • 事务

  • 服务器崩溃后 自动恢复

  • COMMIT提交 savepoint 和rollback 回滚

  • 表空间 tablespace 存表内容

myISAM 推荐读表

  • 不支持事务

  • 表锁

  • 三个文件储存

    • 格式文件 存储表结构的定义 mytable.frm

    • 数据文件 存储表行的内容 mytable.MYD

    • 索引文件 存储表上索引 mytable.MYI

  • 可以转换为压缩,只读来节省空间

数据库设计三范式

设计表的数据,安装三范式设计不会出现冗余

一,任何一张表都有主键,每个字段的原子性不能在分

二,在一范式的基础上,所有非主键字段,完全依赖主键不能产生部分依赖

三,在二范式基础上,非主键字段不能传递依赖于主键字段

底部

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值