与MySQL记不住的语法的爱恨情仇

一、数据库基础

1.数据库的操作

显示当前数据库

show databases;

创建数据库creat databases [if not exists] 表名; 
使用数据库use 表名;
删除数据库

drop databases [if exists] 表名; 

 

2.常用数据类型

整型

浮点

bit[(M)]M指定位数默认1, boolean 默认为1只存0,1
tinyint1字节,Byte
smallint2字节,Short
int4字节,Integer
bigint8字节,Long
float(M,D)4字节,M长度D小数位数,Flaot
double(M,D)8字节,M长度D小数位数,Double
decimal(M,D)M/D最大值+2 M长度D小数位数 BigDecimal

numeric(M,D)

M/D最大值+2 M长度D小数位数 BigDecimal

字符

串类

varchar(size)0-65535字节 可变长度字符串 String
text0-65535字节 长文本数据 String
mediumtext

0-16777215字节 中等长度文本数据 String

blob0-65535字节 二进制形式的长文本数据 byte[]

日期

类型

datetime8字节 1000-9999年 不进行时区检索转换
timestamp4字节 1970-2038年 自动检索时区并转换

 

3.表的操作

查看表结构

desc 表名;

创建表

creat table 表名(

    field1 datatype[comment 字段说明],

    field2 datatype

);

删除表drop table [if exists] 表名;

 

二、CRUD 基础

1.表内的增删查改CRUD

插入数据 creatinsert [into] 表名 [(列名1,列名2)] values (数据1),(数据2),(数据3);
查询数据 retrieveselect [distinct] * from 表名 [where ...][order by...][limit...]
全列查询     select *from 表名;
指定列查询select  列名1,列名2,列名3  from 表名 ;
查询字段为表达式select (列名1+列名2+列名3) from 表名;
别名select 列名1 [as] 别名 from 表名;
去重 distinctselect distinct 列名 from 表名;
排序 order by

select 列名 1,列名2 from 表名 order by 列名1 asc/desc

列1比列2优先级高 先按照列1排列 列1相等的情况下按照列2排列

条件查询 whereselet 列名1 from 表名 where...
分页查询 limit

select ... from 表名 limit s,n;

 从s开始筛选n条结果

select...from 表名 limit n;

从0开始筛选n条结果

select...from 表名 limit n offset s;

从s开始筛选n条结果

修改数据

updat

updat 表名 set 列名 = ...

删除数据

delete

delete from 表名 [where...] [ order by ...][limit...]

 

2.条件查询:WHERE

比较

运算符

>   >=  <  <= 大于 大于等于 小于小于等于
=等于 null不安全
<=>等于 null安全
!= <>不等于

between A and B

范围匹配 日期默认格式:yyyy-mm-dd hh:mm:ss
in(option,...)若是option中任意一个则true
is null是null
is not null不是null
like模糊匹配   %表示多个任意字符  _表示一个任意字符

合并

运算符

and

于   and 优先级高于 or

or
not

 

三、CRUD 进阶

1.数据库约束

not null指示某列不能存储null值eg: id int not null:
unique保证某列每一行必须有唯一值eg: sn int uniqu
default规定 给未赋初值的列为默认值eg:name varchar(20)default ‘MIKE’
primary key主键约束 非空不重复eg:id int primary key auto_increment;
foreign key 外键约束 保证一个表中的数据匹配另一个表的值得参照完整性

eg:foreign key  (字段名) references 主表(列)

check保证列中的值符合指定条件

 

2.表的设计

一对一

使用外键

一对多

使用外键在“1”的一方

多对多

使用外键,找出联系俩表的表,构造俩个一对多

3.新增

insert into 表名1(列名1,列名2)select 列名1,列名2 from 表名2;将表2的列1 列2复制到表1的列1列2

4.查询

4.1聚合函数

count([distinct] expr)返回查询到数据的数量
sum([distinct] expr)返回查询到数据的总和,非数字无意义
avg([distinct] expr)返回查询到数据的平均数,非数字无意义
max([distinct] expr)返回查询到数据的最大值,非数字无意义
min([distinct] expr)返回查询到数据的最小值,非数字无意义

 

4.2聚合查询

group by 

select ...from 表名 group by 列名1;     

在表中按照列名1分组查询
havingselect ...from 表名 group by 列名1 having 条件; group by 查询之后使用条件过滤不能用where应该用having

 

4.3联合查询

内连接

select 字段 from 表1 别名1 [inner] join 表2 别名2 on 连接条件;

外连接

select 字段 from 表1 别名1 [inner] left join 表2 别名2 on 连接条件; 左表全显示

select 字段 from 表1 别名1 [inner] join right 表2 别名2 on 连接条件; 右表全显示

自连接 
子查询嵌套查询 [not] in 
[not] exists
合并查询union  取俩个查询结果的并集  去重
union all 取俩个查询结果的并集 不去重

 

基础语法完了,一定要多练多背!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值