一、MySQL基础学习

1、MySQL启动

管理员的身份运行cmd

net start mysql80	#80指的是安装的时候指定的注册到Windows中的系统服务的系统名称
net stop mysql80

2、MySQL客户端连接

  • 方式一:MySQL自带的客户端命令行
    在这里插入图片描述

  • 方式二:Windows系统自带的命令行工具执行指令

mysql -u root -p	#输入密码即可在cmd命令行窗口使用mysql

注意: 使用这种方式时,需要配置PATH环境变量
添加环境变量:
在这里插入图片描述
在这里插入图片描述

3、SQL

3.1、SQL语句分类

在这里插入图片描述

3.2、DDL(数据库定义语言)

3.2.1、操作数据库

--创建库
create database 库名;
--创建库时判断库是否存在,不存在则创建
create database if not exists 库名;
--查看所有数据库
show databases;
--使用指定数据库
use 库名;
--查看当前指定数据库包含的数据表
show tables;
--查看数据库的结构定义信息
show create database 库名;
--删除数据库
drop database 库名;
--修改数据库的字符集为utf8
alter database 库名 character set utf8;

3.2.2、操作数据表

--创建表
create table 表名 (
        字段1 字段1类型[comment 字段1注释],
        字段2 字段2类型[comment 字段2注释],
        字段3 字段3类型[comment 字段3注释],
        ......
        字段n 字段n类型[comment 字段n注释]
)[comment 表注释];
-- 查看表结构
desc 表名;
-- 查看创建表的SQL语句
show create table 表名;
-- 修改表名
alter table 表名 rename to 新的表名;
--添加一个新的字段
alter table 表名 add 字段; 字段类型;
--修改字段名
alter table 表名 rename column 字段名 to 新的字段名;
--修改字段类型(注意类型修改前后数据是否兼容)
alter table 表名 modify column 字段名 新的字段类型;
--删除一个字段
alter table 表名 drop 字段名;
--删除表
drop table 表名;
--删除表时判断表是否存在,若存在则删除
drop table if exists 表名;
  • 数据类型:数值类型、字符串类型、日期时间类型
    • 数值类型
      在这里插入图片描述
      eg:age TINYINT UNSIGNED,score DOUBLE(4,1)小数一共4位,保留一位小数;

    • 字符串类型
      在这里插入图片描述

    • 日期时间类型
      在这里插入图片描述

3.3、DML(数据库操作语言)

3.3.1、增加 insert into

-- 写全所有列名
insert into 表名(列名1,列名2,...列名n) values(1,2,...值n);
-- 不写列名(所有列全部添加)
insert into 表名 values(1,2,...值n);
-- 插入部分数据
insert into 表名(列名1,列名2) values(1,2);

在这里插入图片描述

3.3.2、删除 delete

-- 删除表中数据
delete from 表名 where 列名  =;
-- 删除表中所有数据
delete from 表名;
-- 删除表中所有数据(高效 先删除表,然后再创建一张一样的表。)
truncate table 表名;

3.3.3、修改 update

-- 不带条件的修改(会修改所有行,更新整张表)
update 表名 set 字段名1=1,字段名2=2;
-- 带条件的修改
update 表名 set 字段名1=1,字段名2=2 where 列名=;

举例:
在这里插入图片描述
在这里插入图片描述

3.4、DQL(数据库查询语言)

在这里插入图片描述

3.4.1、基本查询

--查询多个字段
select 字段1,字段2,字段3…… from 表名;
select * from 表名;

--设置别名
select 字段1 [as 别名1],字段2 [as 别名2]…… from 表名;
#select workadderss as '工作地址' from emp;
#select workadderss '工作地址' from emp;

--去除重复记录
select distinct 字段列表 from 表名;
#select distinct workadderss '工作地址' from emp;

3.4.2、条件查询

select 字段列表 from 表名 where 条件列表;

在这里插入图片描述

BETWEEN…AND (在什么之间)和 IN( 集合):

-- 查询年龄大于等于20 小于等于30				
SELECT * FROM student WHERE age >= 20 &&  age <=30;
SELECT * FROM student WHERE age >= 20 AND  age <=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;
				
-- 查询年龄22岁,18岁,25岁的信息
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
SELECT * FROM student WHERE age IN (22,18,25);

is not null(不为null值) 与 like(模糊查询)、distinct(去除重复值)

-- 查询英语成绩不为null
SELECT * FROM student WHERE english  IS NOT NULL;
	
 _:单个任意字符
 %:多个任意字符
-- 查询姓马的有哪些? like
SELECT * FROM student WHERE NAME LIKE '马%';
-- 查询姓名第二个字是化的人			
SELECT * FROM student WHERE NAME LIKE "_化%";				
-- 查询姓名是3个字的人
SELECT * FROM student WHERE NAME LIKE '___';					
-- 查询姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE '%德%';
 
-- 关键词 DISTINCT 用于返回唯一不同的值。
-- 语法:SELECT DISTINCT 列名称 FROM 表名称
SELECT DISTINCT NAME FROM  student ;

3.4.3、聚合函数

将一列数据作为一个整体,进行纵向计算。
在这里插入图片描述
注意:null值不参与所有聚合函数运算

select 聚合函数(字表列段) from 表名;

# 聚合函数
# 统计企业的员工数量
select count(*) from emp;
select count(*) from emp

# 统计该企业员工的平均年龄
select avg(age) from emp;

# 统计该企业员工的最大年龄
select max(age) from emp;

# 统计该企业员工的最小年龄
select min(age) from emp;

# 统计西安地区员工的年龄之和
select sum(age) from emp where workadderss = '西安';

3.4.5、分组查询

select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过来条件];

# 分组查询
# 根据性别分组,统计男性员工和女性员工的数量
select gender,count(*) from emp group by gender;

# 根据性别分组,统计男性员工和女性员工的平均年龄
select gender,avg(age) from emp group by gender;

# 查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
select workadderss ,count(*) from emp where age < 45 group by workadderss having count(*) > 3;

在这里插入图片描述
在这里插入图片描述

where和having的区别:

  • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
  • 判断条件不同:where不能对聚合函数进行判断,而having可以。

注意:

  • 执行顺序:where > 聚合函数 > having。
  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

3.4.6、排序查询

select 字段列表 from 表名 order by 字段1 排序方式,字段2 排序方式2;

在这里插入图片描述

3.4.7、分页查询

select 字段列表 from 表名 limit 起始索引,查询记录数;

# 分页查询
# 查询第1页员工数据,每页展示10条记录
select * from emp limit 0,10;

select * from emp limit 10;

# 查询第2页员工数据,每页展示10条记录 ------>(页码 - 1)* 页展示记录数
select * from emp limit 10, 10;

注意:

  • 起始索引从0开始,起始索引 = (查询页码 - 1)*每页显示记录数。
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是limit。
  • 如果查询的第一页数据,起始索引可以省略,直接简写为limit 10。

3.5、DCL(数据库控制语言)

3.5.1、管理用户

---查询用户
use mysql;
select * from user;
---添加用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
---删除用户
DROP USER '用户名'@'主机名';

3.5.2、权限管理

-- 查询权限
SHOW GRANTS FOR '用户名'@'主机名';
SHOW GRANTS FOR 'lisi'@'%';

-- 授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
-- 给张三用户授予所有权限,在任意数据库任意表上
GRANT ALL ON *.* TO 'zhangsan'@'localhost';

-- 撤销权限:
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
REVOKE UPDATE ON db3.`account` FROM 'lisi'@'%';

相关推荐

  1. MySQL基础

    2024-03-16 17:52:02       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-16 17:52:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-16 17:52:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-16 17:52:02       82 阅读
  4. Python语言-面向对象

    2024-03-16 17:52:02       91 阅读

热门阅读

  1. 国金证券春招算法岗面试

    2024-03-16 17:52:02       40 阅读
  2. ubuntu图形界面卡住了,通过以下几种方法解决

    2024-03-16 17:52:02       42 阅读
  3. Ubuntu22.04挂载ntfs硬盘

    2024-03-16 17:52:02       46 阅读
  4. EasyExcel导入导出

    2024-03-16 17:52:02       53 阅读
  5. Lua使用三目运算符取值

    2024-03-16 17:52:02       42 阅读
  6. MT1069 圆切平面

    2024-03-16 17:52:02       36 阅读
  7. Redis 哨兵模式

    2024-03-16 17:52:02       46 阅读
  8. 大数据开发(Hive面试真题-卷二)

    2024-03-16 17:52:02       43 阅读