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.ini和bin目錄同級
在解壓包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,無法執行代碼,重新安裝程式可能會解決此問題

安裝時出現上面的提示,就是系統缺失類別庫,需要安裝vcredist_x64.exe
安裝完成之后,繼續剩下的步驟即可,(這是一個C++庫,上面的我的資源分享中有,可以自行下載)
問題3:如圖錯誤提示

原因:
mysqld初始化data目錄的命令已經執行過了,生成了data目錄在安裝包下
解決:
方式1.洗掉data目錄 重新執行mysqld初始化命令
方式2:繼續執行剩下的安裝步驟即可` mysqld --initialize-insecure --user=mysql`
MySQL卸載
卸載需要注意的地方
去360/軟體管家或者控制面板卸載(洗掉之前先找到下面這兩個檔案夾)一定要洗掉這兩個檔案夾(資料庫安裝路徑和資料存放路徑,這兩個檔案夾在組態檔里面my.ini)

卸載解壓安裝的mysql
關閉服務 net stop mysql
洗掉服務即可 sc delete mysql
洗掉配置的MySQL環境變數
洗掉解壓后mysql檔案夾
IDEA中Database的使用
創建MySQL資料庫鏈接,點擊左上角的+之后選擇DataSource(選擇資料源)之后選擇創建MySQL資料源.

匯入MySQL驅動JAR包,找到左邊串列Drivers下的MySQL




回到剛開始鏈接資訊定義的位置繼續輸入MySQL服務器的相關資訊

如果沒有問題點擊Test Connection,如果現實Success即可成功

連接界面部分說明 顯示所有資料庫方式/SQL陳述句編輯區/資料庫選擇

試MySQL資料庫的SQL陳述句執行能力,通過快捷鍵Ctrl + Enter即可執行被淡紫色框選中的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 <= 8000;
-- 練習: 查詢price大于4000或者小于1000之間的商品資訊
select * from product where 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 資料名;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/509651.html
標籤:MySQL
