MySQL基礎學習1

MySQL基礎學習1

一、MySQL 軟件安裝及數據庫基礎

1、Windows安裝MySQL
https://www.runoob.com/mysql/mysql-install.html
出現問題:
1、剛開始是密碼一直錯誤,網上的解決辦法是在my.ini中加入skip-grant-tables;
2、但是在my.ini中加入skip-grant-tables後無法啓動mysql。

解決辦法:
https://blog.csdn.net/qq_36675754/article/details/81381341
https://blog.csdn.net/q283614346/article/details/90732968
新版本不能直接在在my.ini中加入skip-grant-tables!

2、數據庫基礎知識

數據庫定義:根據定義,數據庫只是一個結構化的數據集合。
關係型數據庫:數據本質上相互關聯,例如,產品屬於產品類別並與多個標籤相關聯。這就是爲什麼要使用關係數據庫。
二維表:在關係數據庫中,我們使用表對產品,類別,標籤等數據進行建模。 表包含列和行。它就像一個電子表格(Excel)。
表可以涉及的使用有:一對一,一對多,多對一關係等關係。

3、.MySQL數據庫管理系統
SQL代表結構化查詢語言(Structured Query Language)。SQL是用於訪問數據庫的標準化語言。

SQL包含三個部分:

數據定義語言包含定義數據庫及其對象的語句,例如表,視圖,觸發器,存儲過程等。數據操作語言包含允許您更新和查詢數據的語句。
數據控制語言允許授予用戶權限訪問數據庫中特定數據的權限。

4、Navicat不能連接的問題及解決辦法
在這裏插入圖片描述

http://www.360kuai.com/pc/9960745cf77c510fb?cota=4&kuai_so=1&tj_url=xz&sign=360_57c3bbd1&refer_scene=so_1

或者https://blog.csdn.net/tiny_lxf/article/details/83066281

grant all privileges on . to root@”xxx.xxx.xxx.xxx” identified by “密碼”;

或者 ​GRANT ALL PRIVILEGES ON . TO ‘root’@’xxx.xxx.xxx.xxx’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;

這相當於是給IP-xxx.xxx.xxx.xxx賦予了所有的權限,包括遠程訪問權限。

然後再輸入
flush privileges;

遠程連接,出現語法錯誤如下:
在這裏插入圖片描述

解決辦法如下:https://q.cnblogs.com/q/DetailPage/106432/
https://faceghost.com/article/49231

5出現問題:\ibdata1 must be writable
解決辦法:https://blog.csdn.net/u012465296/article/details/71157286

二、1.2 MySQL 基礎 (一)- 查詢語句

1、導入數據庫
(1)路徑要用正斜槓“/” ;
在這裏插入圖片描述
這裏犯了個小問題:把文件yiibaidb.sql放在了個文件夾yiibaidb中,結果寫路徑的時候只寫到了文件夾,沒有寫文件,所以一直讀取不到。

如下圖,這就可以了。
在這裏插入圖片描述

3、SQL代碼規範
如下是大佬的總結,紀錄在此,多多溫習:
https://zhuanlan.zhihu.com/p/27466166
https://www.sqlstyle.guide/

作業一:查找重複的電子郵箱

代碼如下:

創建表
CREATE TABLE email (ID INT NOT NULL PRIMARY KEY,Email VARCHAR(255));

插入數據
INSERT INTO email VALUES('1','[email protected]');
INSERT INTO email VALUES('2','[email protected]');
INSERT INTO email VALUES('3','[email protected]');

查找
select Email from Person group by Email having count(Email)>1;

結果如下:
在這裏插入圖片描述

作業二:查找大國

創建表
CREATE TABLE World (name VARCHAR(50) NOT NULL,continent VARCHAR(50) NOT NULL,area INT NOT NULL,population INT NOT NULL,gdp INT NOT NULL);

插入數據
INSERT INTO World
  VALUES('Afghanistan','Asia',652230,25500100,20343000);
INSERT INTO World 
  VALUES('Albania','Europe',28748,2831741,12960000);
INSERT INTO World 
  VALUES('Algeria','Africa',2381741,37100000,188681000);
INSERT INTO World
  VALUES('Andorra','Europe',468,78115,3712000);
INSERT INTO World
  VALUES('Angola','Africa',1246700,20609294,100990000);

查找

select * from world

select name, population, area  from world

where population>=25000000 and gdp>=20000000

or area>3000000

查找結構結果出現重複:
在這裏插入圖片描述
選擇時用group by分組,解決上述問題:
在這裏插入圖片描述

查找代碼修正
select *  from world group by name

注意:
group by後面不可以跟and或or;
and 和or 一般用於where後面,用於條件之間判斷的謂詞;
group by 有一個原則: select 後面的所有列中,沒有使用聚合函數的列,必須出現在 group by 後面;
 group by 對應的列如果如果需要加條件,一般用having。

在這裏插入圖片描述

參考鏈接:

MySQL基礎知識學習:
https://blog.csdn.net/weixin_41675201/article/details/87996194
group by和having的注意事項:
https://wenda.so.com/q/1461182111722989
https://www.cnblogs.com/xizhongshui/p/5864581.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章