一. mysql数据库基本层级概念
![](https://img.haomeiwen.com/i16670204/5ceef30fb133313f.png)
二. 登录和退出MySQL服务器
- 连接本地MySQL
mysql -uroot -p
2、连接远程MySQL
mysql -h127.0.0.1 -uroot -p
或者使用:
mysql --host=127.0.0.1 --user=root --password
3、退出:
\q
exit
quit
- 获取帮助
连接好后我们输入 \h 来查看一下命令集:
![](https://img.haomeiwen.com/i16670204/2854947646af69b0.png)
二、SQL分类
1 DDL :用来定义数据库对象:数据库、表、列等;关键字:create drop alter
2 DML:用来对数据库表中的数据进行增删改;关键字:insert delete update
3 DQL:用来查询数据库表中的记录;关键字:select where
4 DCL:定于数据库的访问权限和安全级别及创建用户 关键字:GRANT REVOKE
![](https://img.haomeiwen.com/i16670204/4ab2520ea48dc6db.png)
三、数据库操作(DDL)
1、创建数据库
①、创建数据库 create database 数据库名;
create database db1;
②、防止重复创建 create database if not exists 数据库名;
create database if not exists db1;
③、指定字符集创建 create database 数据库名 character set 字符集名;
create database db3 character set gbk;
④、判断存在否并指定字符集:create database if not exists 数据库名 character set 字符集名;
create database if not exists db4 character set gbk;
2、查询数据库
①、show databases; 显示所有数据库
show databases;
②、查询创建某数据库时使用的语法(主要为了查看字符集)
show create database 数据库名;
show create database mysql;
3、修改数据库
①、修改字符集:alter database 数据库名 character set 字符集名;
alter database db4 character set utf8;
4、删除数据库
①、删除数据库:drop database 数据库名;
drop database db3;
②、先检查有没有再删除:drop database if exists 数据库名;
drop database if exists db3;
5、使用数据库
① 查询当前正在使用的数据库名称:select database();
select database();
②、使用数据库: use 数据库名;
use db1;
四、数据表操作 DDL
1、创建数据表
①、创建表:create table 表名(列名1 数据类型1,列名2 数据类型2,...,列名n 数据类型n);
create table student(id int,name varchar(32),age int,score double(4,1),brithday date,insert_time timestamp);
2、查询数据表
①、查询表集合: show tables;
show tables;
②、查询表结构: desc 表名;
desc student;
3、修改数据表
①、修改表名
alter table 表名 rename to 新表名;
alter table student rename to students;
②、修改表的字符集
alter table 表名 character set 字符集名;
alter table students character set utf8;
③、添加一列
alter table 表名 add 列名 数据类型;
alter table students add sex varchar(10);
④、修改一列
alter table 表名 change 列名 新列名 新数据类型;
alter table students change sex gender varchar(20);
⑤、只修改列的类型
alter table 表名 modify 列名 新数据类型;
alter table students modify gender varchar(10);
⑥、删除列
alter table 表名 dorp 列名;
alter table students drop gender;
4、删除数据表
drop table 表名;
drop table students;
drop table if exists 表名;
drop table if exists students;
五. 数据管理 DML
1、添加数据
①、添加数据
insert into 表名(列名1,列名2.。。。列名n) values (值1,值2,。。。,值n);
insert into stu(id,name,nianling,score,sex) values(1,'范冰冰',18,59,'女');
②、如果给所有列添加值,可以不写列名;
insert into stu values(2,'佟丽娅',24,99,null,null,'优秀','女');
注意:除了数字类型,其他类型需要使用单/双引号 引起来。
2、删除数据
如果MySql运行在safe-updates模式下,该模式会导致非主键条件下无法执行update或者delete命令。输入如下命令退出此模式:
SET SQL_SAFE_UPDATES = 0;
①删除数据
delete from 表名 where 条件;
delete from student where id=1;
②、删除所有数据
delete from 表名;
delete from student;
3、修改数据
①、修改数据
update 表名 set 列名1=值1,列名2=值2,......列名n=值n,where 条件;
update student set age=19 where id=2;
注意:
1、执行此命令同样需要退出SAFE_UPDATES模式
SET SQL_SAFE_UPDATES = 0;
2、如果不加where就会把表里的数据都改了
十一、查询数据 DQL
1、语法
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件限定
order by
排序
limit
分页限定
2、基础查询
〇、查询整张表
select * from student;
①、多个字段查询
select 列名1,列名2 from 表名;
select id,name from student;
②、去除重复
SELECT DISTINCT 列名1,列名2 from 表名;
③、计算列
SELECT 列名1+列名2 from 表名;
![](https://img.haomeiwen.com/i16670204/4e3ce4fb6de3dca5.png)
上面例子中柳青的成绩相加不对,原因处在null上,所以应引入ifnull判断
![](https://img.haomeiwen.com/i16670204/e73344d1f76b2914.png)
附:判断null: ifnull(列名,替换值); 当列名出现null时替换为替换值
④、起别名
select 字段名 as 别名 from 表名; #as也可以用空格代替
![](https://img.haomeiwen.com/i16670204/6644953cf7a98d33.png)
3.条件查询
①、where后跟条件
![](https://img.haomeiwen.com/i16670204/e2d357c1db1b4019.png)
②、运算符
< >= <= = != <>(这个也是不等于)
....(1) and 并且
select id,name from student where age>10 and age <20;
....(2) between 条件1 and 条件2
select id,name from student where age between 10 and 20;
....(3) or 或者
select id,name from student where score>90 or age<10;
....(4) in (22,18,15); #在。。。中
select id,name from student where name in ("西施","貂蝉","王昭君");
....(5) is null //判断是null
select id,name from student where name is null;
....(6) is not null //判断不是null
select id,name from student where name is not null;
注意:null不能用 =来判断 需要用 is来判断
![](https://img.haomeiwen.com/i16670204/92eb05ad24200a76.png)
③、LIKE 模糊查询运算符
占位符:_单个任意字符 %多个任意字符
![](https://img.haomeiwen.com/i16670204/26bc868649680366.png)
![](https://img.haomeiwen.com/i16670204/c9e87f6bd1672af3.png)
4.排序查询
①语法
order by 排序字段1 排序方式1,排序字段2 排序方式2,。。。。
其中排序方式: ASC:升序(默认) DESC:降序
![](https://img.haomeiwen.com/i16670204/3b600c38dd4bfec2.png)
![](https://img.haomeiwen.com/i16670204/8f90ca1b956bc46e.png)
5、聚合函数
将一列数据按照一个整体进行计算 #列的纵向计算
①、count 计算个数
select count(列名) from 表名;
![](https://img.haomeiwen.com/i16670204/554507e19b40631f.png)
②、max 最大值
select max(列名) from 表名;
![](https://img.haomeiwen.com/i16670204/bf5822892636e0d4.png)
③、min
select min(列名) from 表名;
④、sum
select sum(列名) from 表名;
![](https://img.haomeiwen.com/i16670204/8b7baca82fde3145.png)
⑤、avg
select avg(列名) from 表名;
![](https://img.haomeiwen.com/i16670204/af7620fc48829211.png)
注意:聚合函数会排除null
6、分组查询
①、语法
group by 列名;
![](https://img.haomeiwen.com/i16670204/86babb6388ba0753.png)
注意:分组后应该查询 分组或聚合函数才有意义。
②、分组加条件where
![](https://img.haomeiwen.com/i16670204/f6ea48946760b462.png)
③、分组加条件where,完成分组后再加having筛选
![](https://img.haomeiwen.com/i16670204/6693a58609e7a663.png)
where和having的区别:
-where在分组前限定,having再分组后限定
-where后不可以跟聚合函数 having后可以
④、分页查询
limit 开始的索引 ,每页查询的条数;
开始的索引=(当前页码-1)*3
下面的语句代表: 从第一页开始查询一页, 单页3条
![](https://img.haomeiwen.com/i16670204/25c529c0bedaafce.png)
注意:分页操作是一个“方言”,只能用于MySQL。
网友评论