下面总结了一些 MySQL 语法及基础内容
MySQL 基础
SQL 语言共分为四大类:
- 数据查询语言 DQL:SELECT、FROM、WHERE
- 数据操纵语言 DML:INSERT、UPDATE、DELETE
- 数据定义语言 DDL:CREATE TABLE/VIEW/INDEX 等
- 数据控制语言 DCL:GRANT、REVOKE
DDL 操作
创建数据库
create database 数据库名;
查看数据库
show databases;
选择数据库
use 数据库名;
删除数据库
drop database 数据库名;
创建表
create table 表名(字段 类型,字段 类型);
查看表定义
desc 表名
查看表
show 表名
删除表
drop table 表名
删除字段
alter table 表名 drop 字段名
添加字段
alter table 表名 add 字段名 字段类型 [指定位置]
[指定位置]
省略是末尾,first
首,after 字段
某个字段之后
修改字段类型
alter table 表名 modify 字段名 字段类型
修改字段名
alter table 表名 change 原字段名 新字段名 字段类型
修改字段默认值
alter table 表名 alter 字段名 set default 新默认值
修改表名
alter table 表名 rename to 新表名
DML 操作
插入记录
insert into 表名(字段,字段,字段) values(数据,数据,数据)
指定字段
insert into 表名 values(数据,数据,数据)
不指定字段,数据需要一一对应
更新记录
update 表名 set 字段=数据,字段=数据 [where 语句]
删除记录
delete from 表名 [where 语句]
DQL 操作
where 子句
where 条件 or 条件 and 条件
条件运算符
=、!=、>、<、>=、<=
+、-、*、/、%
is null
is not null
between 1 and 5 在指定闭区间范围内
in(1,2,4,5) 集合中匹配
like 通配符匹配
rlike 正则表达式匹配
查看记录
select 字段 from 表名,表名 [where 语句][limit 语句]
排序
order by 字段 [asc/desc], 字段 [asc/desc]
asc 升序,desc 降序
限制记录数
limit n
前 n 行
limit n,m
第 n+1 行开始 m 条
limit n,-1
第 n+1 行到结尾
连接
[select 语句] inner join 表名 on 条件
内连接,显示相交部分
[select 语句] leftjoin 表名 on 条件
左连接,左边全显示,右边显示相交
[select 语句] right join 表名 on 条件
右连接,右边全显示,左边显示相交
[select 语句] union[ALL|DISTINCT] [select 语句]
全连接,ALL 不去重,DISTINCT 去重,默认去重
子查询
where 条件 (select 语句)
DCL 操作
添加权限
回收权限
略
MySQL 数据类型
数据类型名 | 数据类型 | 字节 |
---|---|---|
tinyint | 整型 | 1 |
smallint | 整型 | 2 |
mediumint | 整型 | 3 |
int、integer | 整型 | 4 |
bigint | 整型 | 8 |
float | 浮点型 | 4 |
double | 浮点型 | 8 |
bit | 位类型 | 1~8,位 1~64 |
date | 日期 | 4 |
datetime | 日期时间 | 8 |
timestamp | 时间戳 | 4 |
time | 时间 | 3 |
year | 年 | 1 |
char(m) | 字符串 | m 属于 0~255;定长;英文 1 字节,中文 2 字节;效率相对高 |
varchar(m) | 字符串 | m 属于 0~65535;可变长;中英文都 2 字节;效率相对低 |
binary(m) | 字符串 | 0~m 字节的定长字符串 |
enum(‘w’,‘t’,‘f’) | 枚举类型 | 成员个数相关,1 字节成员个数 0~255,只能选一个值 |
set(‘w’,‘t’,‘f’) | 集合类型 | 每 8 成员占 1 字节,最多 64 成员,能选多个值 |
一些修饰符
unsigned:无符号
zerofill:填充 0
auto_increment:自增
常用函数
coutn(字段)
记录数
sum(字段)
max(字段)
min(字段)
upper(str)
lower(str)
abs(x)
cell(x)
大于 x 的最小整数值
floor
小于 x 的最大整数值
rand()
随机 0~1
时间相关有许多,下举点例子
now()
当前时间
hour(time)
返回小时值
下为部分选择语句
case [expr] when [value] then result1 when [value] then result2 end