mysql入门教程简书_MySQL入门

目录 :

一 . SQL预备

二 . DQL查询语言

1 . 基础查询

2 . 条件查询

3 . 模糊查询

4 . 排序查询

5 . 常见函数

5.1 单行函数

5.2 分组函数(聚合函数)

6 . 分组查询

7 . 连接查询

7.1 内连接

7.2 外连接

8 . 子查询

8.1 where或having后的子查询

8.2 select后的子查询

8.3 from后的子查询

8.4 exists后的子查询(相关子查询)

9 . 分页查询

10 . 联合查询

三 . DML操作语言

1 . 插入语句

2 . 修改语句

3 . 删除语句

四 . DDL定义语言

1 . 库的创建

2 . 库的修改

3 . 库的删除

4 . 表的创建

4.1 字段类型

4.2 约束

5 . 表的修改

6 . 表的删除

7 . 表的复制

DB : 数据库保存一组有组织的数据容器

SQL : 结构化查询语言

启动服务 net start mysql

停止服务 net stop mysql

登录 mysql -h 主机名 -P 端口号 -u 用户名 -p密码

退出 exit

show databases;

use 库名;

show tables;

show tables from 库名;不换库

select database();

create table 表名(字段1 字段类型,字段2 字段类型);

desc 表名;

select * from 表名;

select version();查看版本

SQL 语法不区分大小写,关键字大写,表名字段名小写

命令以分号结尾

-- 注释

/* 多行注释*/

math?formula=%E4%BA%8C%20.%20DQL%E6%9F%A5%E8%AF%A2%E8%AF%AD%E8%A8%80

1 . 基础查询

select distinct 字段1 as 别名1,字段2 as 别名2 ... from 表名; -- as可省略

select concat(字段1,字段2,字段3) as 别名 from 库名;

select ifnull(字段名, 返回值) as 别名;

2 . 条件查询

条件运算符 > < = >=

逻辑运算符 and or not

3 . 模糊查询

like -- 配合通配符

% -- 任意个字符

_ -- 单个字符

\ -- 转义

escape -- 指定转义

[not] between 区间头 and 区间尾 -- (含首尾,不可交换区间首尾)

in (值1,值2...)

is [not] null

-- 安全等于

4 . 排序查询

order by 排序字段1(可以是表达式,别名) asc | desc (默认asc),排序字段2 [desc]

5 . 常见函数

5.1 单行函数

5.11 字符类

concate() -- 拼接

length() -- 字节长度

upper() -- 转大写

lower() -- 转小写

substr(原字符串,初始索引,截取长度) -- 截子串

instr(原字符串,子串) -- 子串第一次出现索引,无则0

trim() -- 去前后空格

trim(指定字符 from 原字符串) -- 去前后指定字符

lpad(原字符串,总长度,指定填充符) -- 左填充

rpad() -- 右填充

replace(原字符串,要换字符串,替换字符串) -- 替换

5.12 数学类

round(值,精度) -- 四舍五入

ceil() -- 向上取整

floor() -- 向下取整

truncate() -- 截断

mod() -- 模

rand() (0,1] -- 随机数

5.13 日期类

now() -- 当前系统日期+时间

curdate() -- 当前系统日期

curtime() -- 当前系统时间

year() month() monthname() day() hour() minute() second()

-- 年 月 英文月 日 时 分 秒

str_to_date() -- 日期转换

date_format() -- 日期格式化

datediff(被减数日期,减数日期) -- 日期差天数

5.14 系统类

version() -- 当前版本

database() -- 当前库

user() -- 当前用户

password('字符') -- 加密

md5('字符') -- md5加密

5.15 条件分支

if(真值表达式,真执行,假执行) 条件执行

case 条件表达式

when 常量1 then 返回值1

when 常量2 then 返回值2

...

else 返回值n+1

end

case

when 条件1 then 返回值1

when 条件2 then 返回值2

...

else 返回值n+1

end

5.2 分组函数(聚合函数)

sum([distinct] 数值) -- 非空和

avg(数值) -- 非空均值

max(字段) -- 非空最大值

min(字段) -- 非空最小值

count([distinct] 字段) -- 非空计数

count(*|1) -- 快速统计总行数

6 . 分组查询

select 分组函数,分组字段...

where 分组前筛选条件,数据源和字段为原始表

group by 分组字段...

having 分组后筛选条件,数据源为分组后的结果集,字段为select后的字段

order by 排序字段 [desc];

7 . 连接查询(多表查询)

笛卡尔积 : 多表直接查询结果行数为 行1 * 行2 * ...

7.1 内连接

7.11 等值连接

select 别名1.字段1,别名2字段2

from 表1 别名1,表2 别名2(表改了别名,select若带表名则必须用别名)...

where 别名1.字段1=别名2.字段2

and ...

and 筛选条件

group by 分组字段

having 筛选条件

order by 排序字段;

7.12 非等值连接

select 字段1,字段2

from 表1 别名1,表2 别名2

where 别名1.字段11 between 别名2.字段21 and 别名2.字段22

and ...;

7.13 自连接

select 别名1.字段1,别名1.字段2...,别名2.字段1,别名2.字段2...

from 表名 别名1,表名 别名2;

7.15 内连接 inner join (表交集)

select 字段1,字段2...

from 表1 别名1

[inner] join 表2 别名2

on 连接条件1(等值条件|不等值条件)

[inner] join 表3 别名3

on 连接条件2

...

where 筛选条件

group by 分组字段

having 筛选条件

order by 排序字段

...;

7.2外连接(主表并集)

7.21 左连接 left [outer] join

select 字段1,字段2...

from 主表 别名1

left join 从表 别名2

on 连接条件

where 别名2.id is null

...;

7.22 右连接 right [outer] join (交换连接表顺序等同于左连接)

select 字段1,字段2...

from 从表 别名1

right join 主表 别名2

on 连接条件

where 别名1.id is null

...;

7.23 全外连接 full [outer] join (全表并集)

select 字段1,字段2

from 表1 别名1

full join 表2 别名2

on 连接条件

where 别名1.字段1 is null or 别名2.字段2 is null

...;

7.24 交叉连接 cross join (笛卡尔积)

select 字段1,字段2

from 表1 别名1

cross join 表2 别名2;

8 . 子查询

select 仅标量子查询(单行单列)

from 仅表子查询(多行多列)

where | having 标量子查询

列子查询(单列)

行子查询(单行)

exists 表子查询

8.1 where或having后的子查询

8.11 标量子查询(搭配> < = >= <= <>)

select 字段

from 表名

where 字段 > < = >= <= <>(

select 字段 from 表 where 字段=值

)

group by 字段

having 字段 > < = >= <= <> (标量子查询);

8.12 列子查询(搭配in,not in,any,some,all)

select 字段

from 表名

where 字段 [not] in(

select [distinct] 字段

from 表名

where 条件

)

...;

in() 等价于 =any()

not in() 等价于 <>all()

>any() 等价于 >min()

>all() 等价于 >max()

8.13 行子查询

select 字段

from 表名

where (字段1,字段2...) = > < >= <= <> (

select min(字段1),max(字段2)...

from 表名

...

)

...;

8.2 select后的子查询

select 字段2,(

select 字段1 from 表1 where 筛选条件

)

from 表2;

8.3 from后的子查询

select 别名1.*,别名2.字段

from (

select 字段1,字段2

from 表1

group by 分组字段

) 别名1

inner join 表2 别名2

on 表1.字段1 between 字段3 and 字段4

...;

8.4 exists后的子查询(相关子查询)

select exists(select...);

-- 子查询结果存在,查询结果为1

-- 子查询结果不存在,查询结果为0

select 字段

from 表

where exists(select...);

9 . 分页查询

select ...

...

limit offset(起始索引从0开始,0可省略),size(条目个数);

limit (page-1)*size size -- 分页公式

10 . 联合查询

select ...

...

union [all] -- 带all不去重

select ... -- 每个查询列数必须相同,以第一个select字段命名

...

union

...;

1 . 插入语句

insert into 表名(字段1,字段2...)

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

非空字段必须插值,顺序不限,字段名可省略

insert into 表名 select...;

insert into 表名 set 字段1=值1,字段2=值2...;

2 . 修改语句

update 表名 set 字段1=新值1,字段2=新值2... where 筛选条件;

update 表1 别名1

inner | left | right join 表2 别名2

on 连接条件

set 字段1=值1,字段2=值2...

where 筛选条件;

3 . 删除语句

delete from 表名 where 筛选条件;

delete [别名1] , [别名2]

from 表1 别名1

inner | left | right join表2 别名2

on 连接条件

where 筛选条件;

delete无法删除自增长断点,有返回值,可以回滚,truncate相反

truncate table 表名;

1 . 库的创建

create database if not exists 库名;

2 . 库的修改

rename database 库名 to 新库名;

alter database 库名 character set 字符集;

3 . 库的删除

drop database if exists 库名;

4 . 表的创建

create table 表名(字段名1 字段类型 [长度] [约束],...);

4.1 字段类型

4.11 整型

unsigned -- 设置无符号类型 , 默认有符号长度11

zerofill -- 不够长度填充0

4.12 浮点型

float(M,D) , double(M,D)

dec(M,D) , decimal(M,D)默认(10,0)

-- M有效数字长度 , 小数部位长度 , 均可省略

4.13 字符型

char(字符数) , varchar(字符数) , text , blob

4.14 枚举型

enum(枚举列表) -- 任选一个插入

set(集合列表) -- 任选任意个插入

4.15 日期和时间类型

date -- 只保存日期

datetime -- 范围大

timestamp -- 时间戳,受时区影响

time -- 只保存时间

year -- 只保存年

4.2 约束

待补充

5 . 表的修改

5.1 修改表字段名

alter table 表名 change [column] 旧字段 新字段 新字段类型;

5.2修改表类型或约束

alter table 表名 modify column 字段 字段类型或约束;

5.3添加新字段

alter table 表名 add column 新字段 字段类型;

5.4删除字段

alter table 表名 drop column 字段名;

5.5修改表名

alter table 表名 rename to 新表名;

6 . 表的删除

drop table if exists 表名;

7 . 表的复制

7.1 仅复制表结构

create table 新表名 like 原表名;

7.2 表的结构和数据都复制

create 新表名 select 字段 from 原表名where...;

7.3 复制表的部分字段

create table 新表名 select 字段 from 原表名 where 0;

一 . SQL预备 ↩

二 . DQL查询语言 ↩

三 . DML操作语言 ↩

四 . DDL定义语言 ↩

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值