MySQL安装卸载、idea中Database的使用、常用的sql语句

MySQL安装卸载

MySQL安装

在下面的 资源链接中下载MySQL软件 压缩包(绿色版),这个版本是 MySQL5.7.29的,本教程也只适用于这个绿色版的,如果下载的是安装包那就可能有些地方不一样了,具体哪不一样那咱也不太清楚,所以就需要另外搜索安装教程了咯, (温馨提示:如果下载的是安装包的朋友们安装时记得设置下编码格式为utf-8,否则插入中文会出问题)

这里用到的软件安装包(免安装)以及 vcredist_x64.exe库等(附:MySQL中文手册)都放在了我的资源中可以自行下载

资源链接:

MySQL安装包、中文使用手册.zip

官网下载链接:

https://www.mysql.com/downloads/

解压到没有 中文 和 空格 的目录下, (安装路径不能有中文和空格哦)

配置环境变量:MySQL_HOME、path

计算机 右键--属性--高级系统设置--环境变量--系统变量--找到path编辑--新建

MySQL_HOME:D:\czbk\software\mysql-5.7.29-winx64

注意:路径配置到MySQL解压目录bin目录的上一级

path:%MySQL_HOME%\bin

my.ini配置文件,放入到MySQL解压包下 my.inibin目录同级

在解压包bin目录下打开dos窗口, 注意:以管理员身份运行

win+r进入dos窗口

初始化服务(自动创建data文件夹)

mysqld --initialize-insecure --user=mysql

安装服务

mysqld -install

启动服务测试

    net start mysql

设置账号密码为: root第一次安装时没有密码

mysqladmin -u root -p password "root"

登录数据库,开始操作

mysql -u root -p root

MySQL启动和关闭指令

mysql启动指令:net start mysql

mysql关闭指令:net stop mysql

MySQL安装问题

问题1: 不是内部或外部命令 不能执行

原因:

    1、你要使用管理员身份打开CMD

    2、命令输入错误

问题2:由于找不到MSVCR120.dll,无法执行代码,重新安装程序可能会解决此问题

MySQL安装卸载、idea中Database的使用、常用的sql语句

安装时出现上面的提示,就是系统缺失类库,需要安装vcredist_x64.exe

安装完成之后,继续剩下的步骤即可,(这是一个C++库,上面的我的资源分享中有,可以自行下载)

问题3:如图错误提示

MySQL安装卸载、idea中Database的使用、常用的sql语句

原因:

mysqld初始化data目录的命令已经执行过了,生成了data目录在安装包下

解决:

方式1.删除data目录 重新执行mysqld初始化命令

方式2:继续执行剩下的安装步骤即可 mysqld --initialize-insecure --user=mysql

MySQL卸载

卸载需要注意的地方

去360/软件管家或者控制面板卸载(删除之前先找到下面这两个文件夹)一定要删除这两个文件夹(数据库安装路径和数据存放路径,这两个文件夹在配置文件里面my.ini)

MySQL安装卸载、idea中Database的使用、常用的sql语句

卸载解压安装的 mysql

关闭服务 net stop mysql

删除服务即可 sc delete mysql

删除配置的 MySQL环境变量

删除解压后 mysql文件夹

IDEA中Database的使用

创建MySQL数据库链接,点击左上角的+之后选择 DataSource(选择数据源)之后选择创建MySQL数据源.

MySQL安装卸载、idea中Database的使用、常用的sql语句

导入 MySQL驱动JAR包,找到左边列表 Drivers下的 MySQL

MySQL安装卸载、idea中Database的使用、常用的sql语句

MySQL安装卸载、idea中Database的使用、常用的sql语句

MySQL安装卸载、idea中Database的使用、常用的sql语句

MySQL安装卸载、idea中Database的使用、常用的sql语句

回到刚开始链接信息定义的位置继续输入MySQL服务器的相关信息

MySQL安装卸载、idea中Database的使用、常用的sql语句

如果没有问题点击 Test Connection,如果现实 Success即可成功

MySQL安装卸载、idea中Database的使用、常用的sql语句

连接界面部分说明 显示所有数据库方式/SQL语句编辑区/数据库选择

MySQL安装卸载、idea中Database的使用、常用的sql语句

试MySQL数据库的SQL语句执行能力,通过快捷键 Ctrl + Enter即可执行被淡紫色框选中的SQL语句会在下面弹出执行结果信息

MySQL安装卸载、idea中Database的使用、常用的sql语句

MySQL安装卸载、idea中Database的使用、常用的sql语句

MySQL安装卸载、idea中Database的使用、常用的sql语句

到这个地方基本就可以对数据库进行操作了.

常用的sql语句


-- 注释
-- ------------------------------------DDL语句操作数据库--------------------------
-- 创建数据库: create database 数据库名 [character set 字符编码][collate 校对规则];-- []表示可选
-- 需求: 创建名称为day14_1的数据库,默认编码为utf8
create database day14_1;
-- 需求: 创建名称为day14_2的数据库,指定编码为gbk
create database day14_2 character set gbk;

-- 查看所有数据库: show databases;
-- 查看数据库结构: show create database 数据库名;
-- 需求:查询所有的数据库
show databases ;
-- 需求: 查看day14_1数据库的定义结构
show create database day14_1;
-- 需求: 查看day14_2数据库的定义结构
show create database day14_2;

修改数据库: alter database 数据库名 character set 字符编码;
      注意:1.数据库名不能修改 2.只能修改数据库的编码,是utf8,不是utf-8
-- 需求:把day14_2数据库的编码修改为utf8
alter database day14_2 character set utf8;
show create database day14_2;

删除数据库: drop database 数据库名;
需求: 删除day14_2数据库
drop database day14_2;

其他操作:
  切换数据库:  use 数据库名;
    查看正在使用的数据库: select database();
use test;
select database();
use day14_1;
select database();

--------------------------------DDL语句操作表----------------------------
创建表的语法:
  create table 表名(字段名 字段类型 字段约束,....);
  子类类型: int,bigint,boolean,double/char(长度)/varchar(长度),date,datetime
创建一张用户表表(含有id字段,用户名字段,密码字段. id为主键自动增长)
create table users(
    id int primary key auto_increment,
    username varchar(40) not null,
    password varchar(40)
);

查看所有的表: show tables;
查看表的定义结构: desc  表名;
-- 练习:查看day14_1数据库中所有的表
show tables ;
-- 练习:查看day14_1数据库中users表的结构
desc users;

修改表:
#### 语法
- 增加一列:  alter table 表名 add 字段名 字段类型 [字段约束];
- 修改列的类型约束:alter table 表名 modify 字段名 字段类型 字段约束;
- 修改列的名称:alter table 表名 change 旧列名  新列名 字段类型 字段约束;
- 删除一列: alter table 表名 drop 字段名;
- 修改表名: rename table 旧表名 to 新表名;
#### 练习
create table student(
    id int primary key auto_increment,
    name varchar(40) not null ,
    sex varchar(30)
);
- 给学生表增加一个grade字段
alter table student add grade varchar(30);
desc student;

- 给学生表的sex字段改成字符串类型
alter table student modify sex char(2);

- 给学生表的grade字段修改成class字段
alter table student change grade class varchar(30);
desc student;

- 把class字段删除
alter table student drop class;

- 把学生表修改成老师表(了解)
rename table student to teacher;

语法:  drop table 表名;
-- 练习: 删除teacher表
drop table teacher;

------------------------------DML操作数据-------------------------------

准备数据:
create table product(
    pid int primary key auto_increment,  -- 只有设置了auto_increment id列才可以赋值为null
    pname varchar(40) not null,
    price double,
    num int
);

新增记录:

插入指定列: insert into 表名(列名,列名,...)  values(值,值,...);

 练习: 指定pname,price列插入记录
insert into product(pname,price) values('Mac',9000);

-- 注意:

--  字段名与值的类型、个数、顺序要一一对应。

--  值不要超出列定义的长度。

--  插入的日期和字符串,使用引号括起来(单双引号)。

--  插入特定的列:没有赋值的列,系统自动赋为null(前提是当前列没有设置not null 约束,否则会报错)

插入所有列: insert into 表名 values(值,值,...);

 注意:默认所有列插入,values里面必须给表中每一个字段赋值,一般主键给一个null
-- 练习: 指定所有列插入记录
insert into product values(null,'iPhone',6000,2);
insert into product value(null,'iPhone',6000,2);

批量插入记录
insert into product values(null,'苹果电脑',18000.0,10);
insert into product values(null,'华为5G手机',30000,20);
insert into product values(null,'小米手机',1800,30);
insert into product values(null,'iPhonex',8000,10);
insert into product values(null,'苹果电脑',8000,100);
insert into product values(null,'iPhone7',6000,200);
insert into product values(null,'iPhone6s',4000,1000);
insert into product values(null,'iPhone6',3500,100);
insert into product values(null,'iPhone5s',3000,100);
insert into product values(null,'方便面',4.5,1000);
insert into product values(null,'咖啡',11,200);
insert into product values(null,'矿泉水',3,500);

insert into product values(null,'苹果电脑',18000.0,10),
(null,'华为5G手机',30000,20),
(null,'小米手机',1800,30),
(null,'iPhonex',8000,10),
(null,'苹果电脑',8000,100),
(null,'iPhone7',6000,200),
(null,'iPhone6s',4000,1000),
(null,'iPhone6',3500,100),
(null,'iPhone5s',3000,100),
(null,'方便面',4.5,1000),
(null,'咖啡',11,200),
(null,'矿泉水',3,500);

insert into product values(null,'苹果电脑',8000,3);

- 语法:  update  表名 set 字段名=值,字段名=值,... where 条件; 

- 练习

  - 将所有商品的价格修改为5000元
update product set price = 6000;

  - 将商品名是Mac的价格修改为18000元
update product set price = 18000 where pname = 'Mac';

  - 将商品名是Mac的价格修改为17000,数量修改为5
update product set price = 17000,num=5 where pname = 'Mac';

  - 将商品名是方便面的商品的价格在原有基础上增加2元
update product set price = price + 2 where pname = '方便面';

语法
  方式一:  delete from 表名 where 条件;
  方式二:  truncate table 表名;
- 练习
  - 删除表中名称为'Mac'的记录
delete from product where pname='Mac';
  - 删除价格小于6001的商品记录
delete from product where price < 6001;
  - 删除表中的所有记录
delete from product;
truncate table product;

------------------------------DQL语句操作记录------------------------------
查询所有: select * from 表名;
-- 练习:查询product表中所有的信息
select * from product;

指定字段查询: select 字段名,字段名,... from 表名
-- 练习:查询product表中pname,price字段的值
select pname,price from product;

去重查询:select distinct 字段名 from 表名
-- 练习:去重查询pname字段的值
select distinct pname from product;
-- 注意:去重查询distinct前面不能有其他字段名
select price,distinct pname from product;-- 报错

取别名查询:select 字段名 as 别名,字段名 as 别名 from 表名 as 别名
-- 练习:对pname,price取别名查询
select pname as 商品名称,price as 商品价格 from product as p;
select pname  商品名称,price  商品价格 from product  p;

列运算查询(+,-,*,/等):  select 列运算 from 表名;
-- 练习: 查询每件商品的总金额
select price*num from product;

- 基本条件查询: select  ...  from 表名 where  条件;

条件:  比较运算符: >   >=   <    
-- 练习: 查询price大于4000的商品信息
select * from product where price > 4000;

条件:   between...and...  范围
-- 练习: 查询price在4000到8000之间的商品信息
select * from product where price between 4000 and 8000;

条件:  in(值,值,...)   范围
-- 练习: 查询pid为1,3,5,7,9,11,13的商品信息
select * from product where pid in(1,3,5,7,9,11,13);

  like模糊
       _  :  匹配一个字符
     %:   匹配0个到多个字符(大于等于0个)
-- 练习: 查询商品名称为iPh开头的所有商品信息
select * from product where pname like 'iPh%';

-- 练习: 查询商品名称含有手机的所有商品信息
select * from product where pname like '%手机%';

-- 练习: 查询商品名称为iPh开头,然后iPh后面有4位的所有商品信息
select * from product where pname like 'iPh____';

条件:  逻辑运算符: and,or,not
-- 练习: 查询price在4000到8000之间的商品信息
select * from product where price >= 4000 and price  4000 or price < 1000;

-- 练习: 查询pid不为1,3,5,7,9,11,13的商品信息
select * from product where pid not in(1,3,5,7,9,11,13);

# 创建学生表(有sid,学生姓名,学生性别,学生年龄,分数列,其中sid为主键自动增长)
CREATE TABLE student(
    sid INT PRIMARY KEY auto_increment,
    sname VARCHAR(40),
    sex VARCHAR(10),
    age INT,
    score DOUBLE
);
INSERT INTO student VALUES(null,'zs','男',18,98.5);
INSERT INTO student VALUES(null,'ls','女',18,96.5);
INSERT INTO student VALUES(null,'ww','男',15,50.5);
INSERT INTO student VALUES(null,'zl','女',20,98.5);
INSERT INTO student VALUES(null,'tq','男',18,60.5);
INSERT INTO student VALUES(null,'wb','男',38,98.5);
INSERT INTO student VALUES(null,'小丽','男',18,100);
INSERT INTO student VALUES(null,'小红','女',28,28);
INSERT INTO student VALUES(null,'小强','男',21,95);

方式一: select ... from 表名 order by 字段名 [asc|desc];
方式二: select ... from 表名 order by 字段名 [asc|desc],字段名 [asc|desc];
注意:asc:升序,desc:降序,不指定默认是升序
练习
1. 练习: 以分数降序查询所有的学生
select * from student order by score desc ;

2. 练习: 以分数降序查询所有的学生, 如果分数一致,再以age降序
select * from student order by score desc,age desc ;

语法: SELECT 聚合函数(列名) FROM 表名;
注意:  聚合函数会忽略空值NULL

-- 练习:求出学生表里面的最高分数
select max(score) from student;
-- 练习:求出学生表里面的最低分数
select min(score) from student;
-- 练习:求出学生表里面的分数的总和
select sum(score) from student;-- 726
-- 练习:求出学生表里面的平均分
select avg(score) from student;-- 80.66666666666667
-- 练习:统计学生的总人数
select count(score) from student;-- 9

-- 修改: 把sname为wb的score修改为null
update student set score = null where sname = 'wb';

-- 练习:统计学生的总人数
select count(score) from student;-- 8
select count(*) from student;-- 9

-- 练习:求出学生表里面的分数的总和
select sum(score) from student;-- 627.5
-- 练习:求出学生表里面的平均分
select avg(score) from student;-- 78.4375-----错了,真正的平均分应该是69.7222222222
ifnull(参数1,参数2)
如果不想忽略空值null,就使用ifnull(参数1,参数2)函数,进行判断
如果参数1为null,就取参数2的值,如果参数1不为null,就取参数1的值
select avg(ifnull(score,0)) from student;-- 69.72222222222223

语法: select ... from 表名 [where 条件] [group by 分组字段] [having 条件]
    练习:
    1. 练习:根据性别分组,统计男生的总人数和女生的总人数
select * from student group by sex;
注意事项
**单独分组 没有意义,因为 返回每一组的第一条记录**
**分组的目的一般为了做统计使用, 所以经常和聚合函数一起使用**
select count(*) from student group by sex;
**分组查询如果不查询出分组字段的值,就无法得知结果属于那组**
select sex,count(*) from student group by sex;

    2. 练习根据性别分组, 统计每一组学生的总人数> 5的(分组后筛选)
select sex,count(*) from student group by sex having count(*) > 5;

select sex,count(*) from student where sid in(1,2,3,4,5,6,7) group by sex having count(*) >= 5;

select ... from 表名 limit a,b;
a:从哪里开始查询, 从0开始计数 ,省略a不写,默认就是从0开始
b:查询的数量【固定的,自定义的】
练习:
-- 练习: 查询sid为1到4--->第1页
select * from student limit 0,4;

-- 练习: 查询sid为5到8--->第2页
select * from student limit 4,4;

-- 练习: 查询sid为9到12--->第3页
select * from student limit 8,4;
规律:
select * from student limit (页码-1)*每页显示的条数,每页显示的条数;

create database 数据名;

Original: https://www.cnblogs.com/wren/p/16710695.html
Author: 请叫我阿杰
Title: MySQL安装卸载、idea中Database的使用、常用的sql语句

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/573982/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • php微信自定义分享链接,标题,描述,缩略图配置步骤

    微信公众号开发,自定义分享链接,标题,描述,缩略图接口 1、文件目录结构 2、后台代码: wxshare.php 注意:使用此代码,只需要把wxshare.php文件下面的appi…

    Linux 2023年6月7日
    099
  • 关于飞书事件订阅功能的应用

    此项目源码我也是站在巨人的肩膀上进行一个二次应用,感谢这位大神的共享 附上源码链接–Feishu-Event-Subscribe: 【实验】飞书的事件订阅 主要是通讯录…

    Linux 2023年6月14日
    089
  • NewReplacer使用技巧

    上次写博客至今有段时间了,这些日子,认真过,努力过,职场中不管有哪些让人失意或不快的事,终归到底,是自己不够强大。。。 好吧,新的一年,不磨磨唧唧了,一般处理xss漏洞使用正则匹配…

    Linux 2023年6月6日
    0104
  • Java基础系列–04_数组

    一维数组:(1)数组:存储同一种数据类型的多个元素的容器。(2)特点: 每一个元素都有编号,从0开始,最大编号是数组的长度-1。编号的专业叫法: 索引(3)定义格式A:数据类型[]…

    Linux 2023年6月7日
    097
  • 列表初始化

    C++11将列表初始化(大括号初始化)作为一种通用的初始化方式.可用于所有类型. 数组以前就可以用列表初始化,但 C++11 中的列表初始化新增了一些功能: 初始化数组时,可省略等…

    Linux 2023年6月13日
    081
  • SSH_远程终端

    SSH 远程服务 目的 Windwos 和 Linux 的终端控制系统or传送传送文件, 当然 Linux和Linux 以及 Windwos 和 Windwos 之间的通信都是OK…

    Linux 2023年6月7日
    092
  • 【spring-boot】配置Redis工具类

    如何在spring-boot中使用Redis工具类 修改pom.xml文件 新增spring-boot-starter-data-redis配置 org.springframewo…

    Linux 2023年5月28日
    0108
  • 解决Docker容器iptables不能用

    最近使用frp做跳板远程运维内网的服务器,尽管已经屏蔽了海外IP对vps服务器的访问,但是总觉得直接暴露远程管理的端口在互联网上还是不安全。于是想着用Ocserv做服务端先vpn拨…

    Linux 2023年5月27日
    0106
  • 那些shellcode免杀总结

    首发先知: https://xz.aliyun.com/t/7170 自己还是想把一些shellcode免杀的技巧通过白话文、傻瓜式的文章把技巧讲清楚。希望更多和我一样web狗也能…

    Linux 2023年5月28日
    082
  • RHCSA阶段笔记

    命令终端字段含义介绍 [root@localhost ~]# 解释: root:当前登录系统用户名(root超级管理员) localhost :当前主机名 :当前用户所在目录( 为…

    Linux 2023年6月14日
    096
  • 爱前端公开课学习笔记——JS02 字符串类型,布尔类型

    字符串是用引号包裹的,表示语言文字。 用双引号包裹的都是字符串 console.log(typeof 5); // number console.log(typeof "…

    Linux 2023年6月14日
    074
  • 堆栈

    目录: 9、【剑指Offer学习】【面试题09:用两个栈实现队列】 30、【剑指Offer学习】【面试题30:包含min函数的栈】 31、【剑指Offer学习】【面试题31:栈的压…

    Linux 2023年6月13日
    0115
  • fork创建进程的步骤___Spring-boot-Starter启动器和其加载的过程___redis怎么监视正在执行的命令

    fork创建进程的步骤 我们都知道,在Linux中调用fork()函数,会创建一个子进程,那么在创建这个子进程的过程中,发生了些什么事情? 首先,我们要知道,fork()函数其实是…

    Linux 2023年5月28日
    0120
  • WEB自动化-02-Cypress 安装

    2 Cypress 安装 2.1 安装要求 2.1.1 系统要求 在操作系统满足以下要求时,才能进行安装,具体要求如下所示: MacOS 10.9+(仅支持64位版本) Linux…

    Linux 2023年6月7日
    0108
  • 【河北科技大学数据结构课设】校园导航问题

    文档到我的资源下载 点击这里进入我的资源下载 1. 简单介绍 2. 代码 #include #include #include using namespace std; /*测试使…

    Linux 2023年6月8日
    0121
  • Shell 第二章《流控》

    前言 无论什么编程语言都离不开条件判断(流控)。SHELL也不例外。例如,用户输入的密码不够长时提示用户,你太短了例如,用户输入了备份的目录,如果有目录继续备份,如果没有目录创建目…

    Linux 2023年6月6日
    0155
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球