目录
登陆参数:
mysql -u用户名 -p密码 -h 要连接的mysql服务器的ip地址(默认127.0.0.1) -p端口号(默认3306)
不区分大小写,建议大写
注释格式:
-- 单行注释 或 #注释内容
/* 多行注释 */
DDL :数据定义语言,定义数据库对象和表,列等
DML:数据操作语言,对表中数据进行增删改
DQL:数据查询语言,对表中数据查询
DCL:数据控制语言,对数据库进行权限控制
MySQL自带的四个数据库:
|information_schema |#试图
| mysql |#核心信息 权限等
| performance_schema |#性能相关信息
| sys |系统信息
数据库基本命令:
show databases;#查询数据库列表
create database 名称;#不能创建相同名称的数据库
create database if not exists 名称;#如果不存在该名称的数据库则创建。反之则不创建
drop database 名称;#删除对应的数据库
drop database if exists 名称;#如果存在该名称的数据库则删除。反之则不删除
select database();#查看当前使用的数据库
use 名称;#使用该数据库
DDL--操作表:
show tables;#查询当前数据库下所有表名称
desc 表名称;#查询表结构
create table 表名(
字段名1 数据类型1,
字段名2 数据类型2,
。。。。
字段名n 数据类型n
);
注意:最后一行末尾,不能加逗号。
例:create table tb_user(
-> id int,
-> name varchar(20),#mysql中字符串类型为varchar
-> password varchar(32)
-> );
常用数据类型:
类型 大小 描述 使用
int或integer 4bytes 大整数值 age int;
double 8bytes 双精度浮点数 score double(总长度,小数位数);
date 3 日期值(只有年月日)brithday date;
char 0-255bytes 定长字符串 name char(10)10个字符空间,存储性能高,浪费空间
varchar 0-65535bytes 变长字符串 name char(20)2个字符空间,存储性能差,节约空间
如果name为“张三”
命令格式
drop table if exists 名称;#如果该表存在,就删除
alter table 表名 rename to 新的表名;#修改表名
alter table 表名 add 列名 数据类型;#添加一列
alter table 表名 modify 列名 新数据类型;#修改数据类型
alter table 表名 change 列名 新列名 新数据类型;#修改表名和数据类型
alter table 表名 drop 列名;#删除列
DML:增删改数据
1.增
insert into 表名(列名1,列名2。。) values(值1,值2,值3);#给指定列添加数据
insert into 表名 values(值1,值2。。);#给全部列添加数据(不建议)
insert into 表名(列名1,列名2。。。)values(值1,值2。。。),(值1,值2.。。。)。。;#批量添加数据
insert into 表名 values(值1,值2,值3.。。),(值1,值2,值3.。)。。。;#批量添加数据(不建议)
2.改
update 表名 set 列名1=值1,列名2=值2,。。。[where 条件];#[]表示可写可不写,如果不写条件,则默认表中改列所有数据都被修改。
3.删
delete from 表名 [where 条件];#如果不写条件,则默认表中所有数据都被删除。
DQL:查询数据
1.基础查询:
select 字段列表 [as 别名] from 表名;#查询该表中的字段列表数据,并用别名显示
select * from 表名; #查询该表所有数据(不建议使用)
select distinct 字段列表 from 表名;#查询该表中的字段列表数据,并在显示的时候去除重复
2.条件查询
格式:select 字段列表 from 表名 whre 条件列表
条件:符号 功能
> 大于
< 小于
>= 大于等于
<= 小于等于
= 等于
<>或!= 不等于
between..and.. 在某个范围内(都包含)
in(..) 多选。
like 占位符 模糊查询_单个字符%多个字符
is null 是null
is not null 不是null
and或&& 并且
or或|| 或者
not或! 不是
3.排序查询
格式:select 字段列表 from 表明 order by 排序字段名1 [排序方式],排序字段2 [排序方式]。。。;
方式:asc 升序排列(默认值)
desc 降序排列
注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序
4.分组排序 group by
聚合函数:
概念:将一列作为一个整体,进行纵向计算
聚合函数分类:函数 功能 取值
count() 统计数量 1.* 2.主键
max() 最大值
min() 最小值
sum() 求和
avg() 平均值
格式:select 聚合函数名(列名) from 表;
注意:null值不参与所有聚合函数运算
5.分组查询:
格式:select 字段列表 from 表名[where 条件] group 分组字段名 [having 条件];
注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无意义
where和having 区别:
1.执行时机不一样:where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤
2.可判断的条件不一样:where不能对聚合函数进行判断,having 可以。
执行顺序:where>聚合函数>having
6.分页查询 limit
select 字段列表 from 表名 limit 起始索引,显示的条目;
分页公式:起始索引=(当前页码-1)*显示的条目
tips:分页查询limit是Mysql数据库的方言
Oracle分页查询使用rownumber
SQL server分页查询使用top
总结:select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组后条件 order by 排序字段 limit 分页限定;