MySQL数据库复习

复习常用MySql知识

目录

复习常用MySql知识

1.MySQL数据库基础知识

1.创建MySQL数据库之后自带的数据库(不要误删)

2.操作数据库知识

1.创建数据库

2.删除数据库

3.查看有多少数据库

4.使用数据库

5.查看数据库有多少表

3.数据表类型(存储引擎)

4.列类型

数值类型

数据字段属性

5.SQL分类

6.DDL:数据定义语言

1.创建表:create table 表名(列 类型) engine=引擎 default charset=字符集

2.查看表结构 desc

3.删除表(drop、truncate、delete)

4.修改列类型(modify)

5.增加列(add column)

6.删除列(drop column)

7.修改列名(change)

8.修改表名(to)

9.修改表字符集(character set)

7.DML:数据操作语言

1.添加数据 insert into

2.修改数据 update ... set

3.删除数据

8.DQL:数据查询语言

1.select 语法

2.AS 子句作为别名

3.distinct 去重复,记录

4.逻辑操作符

5.比较操作符

6.连接查询

7.排序 order by

8.分组

9.分页(limit)

 


 

1.MySQL数据库基础知识


1.创建MySQL数据库之后自带的数据库(不要误删)

  • information_schema
  • mysql
  • performance_schema
  • sys

2.操作数据库知识

1.创建数据库

create database 数据库名;

2.删除数据库

drop database 数据库名;

3.查看有多少数据库

show databases;

4.使用数据库

use 数据库名;

5.查看数据库有多少表

show tables;

3.数据表类型(存储引擎)

  • MYISAM:不支持事物,不支持外键,访问速度快
  • INNODB:具有提交,回滚和崩溃恢复能力的事物安全
  • MEMORY:存储在内存里面,访问速度快(临时的)

4.列类型

  • 数值类型

数值类型说明存储需求
数值类型
tinyint非常小的数据

1字节

int标准整数

4字节

double双精度浮点数8字节
字符串类型
char[M]固定长字符串,检索快但费空间0<=M<=255M字符
varchar[M]可变字符串0<=M<=65535可变长度
text文本串2的16次——1字节
日期和时间型数值类型
dateYYYY-MM-DD,日期格式1000-01-01——9999-12-31
timeHh:mm:ss,时间格式-838:59:59——838:59:59
datetimeYY-MM-DD hh:mm:ss1000-01-01 00:00:00 至9999-12-31 23:59:59
timestampYYYYMMDDhhmmss格式表示时间戳

197010101000000——2037年某个时刻

yearYYYY格式的年份值1901——2155
  • 数据字段属性

名称说明使用
UnSigned无符号:声明该数据列不允许负数 
ZEROFILL0填充的:不足位数的用0来填充,如int(3),5则为005 
Auto_InCrement

自动增长的,每添加一条数据,自动在上一个记录上加1(默认)

通常用于设置主键,且为整数类型

可以定义起始值和步长

当前表设置步长(AUTO_INCREMENT=100):只影响当前表

 
NULL和NOT NULL

默认为NULL,即没有插入该列的数值

如果设置为NOT NULL,则该列必须有值

 
DEFAULT默认的:用于设置默认值 
-- 创建学生表(列,字段)
-- 学号(id int)创建主键、不为空、自增长、注释
-- 名字(name varchar(30))不为空、默认、注释
-- 登录密码(pwd varchar(20) 不为空、默认、注释
-- 姓名(name varchar(30)) 不为空、默认、注释
-- 密码(pad varchar(20)) 不为空、默认、注释
-- 性别(sex varchar(2))不为空、默认、注释
-- 出生日期(birthday datetime) 默认、注释
-- 家庭住址(addiress varchar(100))默认、注释
-- 表引擎为 INNODB  字符集  utf8

CREATE TABLE xs(
id INT(4) PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
pwd VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
sex VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
birthday DATETIME DEFAULT NULL COMMENT '出生日期',
addiress VARCHAR(100) DEFAULT NULL COMMENT '地址'
) ENGINE=INNODB DEFAULT CHARSET=utf8

5.SQL分类

  • DDL:数据定义语言——用来定义数据库对象,创建库、表、列等
  • DML:数据操作语言——用来操作数据库表中的记录
  • DQL:数据查询语言——用来查询数据
  • DCL:数据控制语言——用来定义访问权限和安全级别

6.DDL:数据定义语言

1.创建表:create table 表名(列 类型) engine=引擎 default charset=字符集

-- 1.普通创建表
create table 表名(
    列1 数据类型,
    列2 数据类型,
    列3 数据类型
) engine=引擎 default charset=字符集

-- 2.加上约束创建表
create table 表名(
    列1 数据类型 约束,
    列2 数据类型 约束,
    列3 数据类型 约束
) engine=引擎 default charset=字符集

2.查看表结构 desc

-- 1.查看表结构
desc 表名

-- 2.详细查看表结构(可以看到存储引擎)
show create table 表名

3.删除表(drop、truncate、delete)

-- 1.删除表(彻底删除表,删除内容和定义,释放空间)
drop table 表名

-- 2.删除表(删除内容,释放空间但不删除定义自增列重新开始)
truncate table 表名

-- 3.删除表(删除内容不删除定义,不释放空间)
delete table 表名

4.修改列类型(modify)

-- 修改列类型
alter table 表名 modify 列名 列类型

5.增加列(add column)

-- 增加列
alter table 表名 add column 列名 列类型

6.删除列(drop column)

-- 删除列
alter table 表名 drop column 列名

7.修改列名(change)

-- 修改列名
alter tabel 表名 change 原列名 新列名 数据类型

8.修改表名(to)

-- 修改表名
rename table 原表名 to 新表名

9.修改表字符集(character set)

-- 修改表字符集
alter table 表名 character set 字符集

7.DML:数据操作语言

  用于操作数据对象中所包含的数据

1.添加数据 insert into

-- 添加一条数据 insert into
insert into 表名 (列1,列2,列3) values(值1,值2,值3)

2.修改数据 update ... set

-- 1.修改一条数据
update 表名 set 列名=值 where id=1

-- 2.修改多条数据
update 表名 set 列名1=值1,列名2=值2 where id=1

3.删除数据

-- 删除数据
delect from 表名 where id=1
-- 注:如果where没有条件,将删除整个表

8.DQL:数据查询语言

1.select 语法

servlet * from 表名

2.AS 子句作为别名

servlet 列1 AS 别名 from 表名

3.distinct 去重复,记录

servlet distinct 列 from 表

4.逻辑操作符

and&&
or||
not!

 

 

 

 

5.比较操作符

 is nulla is null若操作符为null,则为真true 
is not nulla is not null若操作符不为null,则为真true 
betweena between b and c若a在b和c之间为真 
ina in (a1,a2.a3,a4)若a等于a1,a2.a3,a4之间某一个为真true 
likea like b若a匹配b则为真(%,_) 
a like %b 
a like  

注:数值数据类型的记录之间才能进行算术运算

相同数据类型的数据之间才能进行比较

 

6.连接查询

内连接 inner join ... on

-- 内连接
select * from 表1 inner join 表2
on 表1.id = 表2.id

外连接

左外连接 left outer join ... on

以左表为主表

-- 左外连接
select * from 表1 left outer join 表2
on 表1.id = 表2.id
where 条件

右外连接 right outer join ... on

以右表为主表

-- 右外连接
select * from 表1 right outer join 表2
on 表1.id = 表2.id
where 条件

7.排序 order by

升序:asc

降序:desc

-- 1.一列排序
select * from 表
order by 列 asc

-- 2.多列排序
select * from 表
order by 列1 asc ,列2 desc 

8.分组

-- 1.根据gender字段来分组
-- 2.当group by 单独使用时,只显示出每组的第一条记录
-- 3.所以group by 单独使用时的实际意义不大

-- 1.分组 单独使用gender by
select 列1 from 表名
group by 列1

-- 2.group by + group_concat()
select 列1,group_concat(列2)
from 表名
group by 列1

-- 3.group by + 聚合函数
select sum(列1)
from 表名
group by 列1

-- 4.group by + having
select 列1,列2
from 表名
group by 列1
having 列2=1

-- 5.书写顺序
select--from--where--froup by--having--order by--limait

-- 6.执行顺序
form--where--group by--having--select--irder by--limit

注:having 和 where 不一样

where条件表达式:作用于表或者视图,是表和视图的查询条件

having条件表达式:作用于分组后的记录,用于选择符合条件的组

9.分页(limit)

思考:从哪一行开始查,总共要查几行

-- 1.分页
-- limit 从哪一行开始查,一共要查几行
-- 从第一个数据开始,一共要查5行
select * from 表
limit 0,5

-- 2.分页思路
int curPage = 1;-- 当前页
int pageSize = 3;-- 每页多少条数据

-- 当前页为1第一页从0开始 (1-1)*3=0
-- 当前页为2第二页从3开始 (2-1)*3=3
-- 当前页为3第二页从6开始 (3-1)*3=6
-- 当前页为4第二页从9开始 (4-1)*3=9

select * from 表名
limit (curPage-1)*pageSize,pageSize

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值