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不能連接的問題及解決辦法
或者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