sql入門基礎知識(經典)

2021-01-08 懶人部落

1.資料庫介紹

* 資料庫(DataBase,DB),資料庫用於存放數據的文件系統

* 資料庫軟體系統(DBMS)

* 關係:用二維表描述實體與實體之間聯繫

* 記錄:元組,二維表中一個一行數據

* 欄位:列,屬性,域,二維表中一個一列

* 注意事項:

* 列名必須唯一

* 列沒有順序

* 行沒有順序

2.關係資料庫

* Oracle,oracle公司,資料庫的性能非常好。收費

* DB2,IBM公司,性能不錯。收費

* Sql server ,微軟 IIS

* Mysql,Oracle公司。mysql升級,性能優化

3.Mysql的安裝

* 安裝指定「資料庫文件路徑」 : %mysql%/data

* mysql數據的utf-8編碼為:utf8

* mysql的默認埠:3306

* mysql的超級管理員:root ,安裝只需要給root設置密碼

* %mysql%/my.ini文件

* [mysql]

* default-character-set=utf8 ,默認編碼

* datadir="C:/java/MySQL/MySQL Server 5.5/Data/" ,資料庫文件路徑

4.mysql的登錄

* 前提,必須啟動mysql服務

* windows啟動服務:「運行」 services.msc

* 查詢mysql的命令參數:mysql -? 或 mysql --help

* 設置用戶名

* 格式1:-u用戶名

* 格式2:--user=用戶名

* 設置密碼:

* 格式1:-p密碼

* 格式2:--password=密碼

* 設置主機

* 格式1:-hIP

* 格式2:--host=IP位址

* 設置埠號:

* 格式1:-P埠

* 格式2:--port=埠

* 登錄格式:

* 指定書寫密碼:mysql -uroot -p1234 回車登錄

* 先登錄在書寫密碼:mysql -uroot -p 回車,輸入密碼回車,登錄

5.常用命令

* 顯示所有的資料庫:mysql > show databases;

* 創建資料庫將%mysql%/data創建一個文件夾

* 默認資料庫

* mysql,mysql資料庫的核心資料庫,【不能刪除】

* performance_schema,mysql提供記錄數據的資料庫

* information_schema,視圖,虛擬表

* test,空資料庫

* 使用資料庫:mysql > use 資料庫名稱;

* 對資料庫操作之前必須使用

* 查詢當前資料庫中具有的表:mysql > show tables;

* 確定當前資料庫: mysql > select database();

* 查詢表結構:mysql > desc biaomingc:

* describe

* 查詢資料庫支持的字符集:mysql > show character set;

* 顯示當前系統的環境變量,並且只顯示編碼:mysql > show variables like '%char%';

6.用戶管理

* 創建用戶

* mysql > create user 用戶名稱 [identified by '密碼']

* 用戶名稱的格式:'名稱'@'主機' ,對應user表,'mysql.user'@'mysql.host'

* 主機可以不指定,默認是%,表示所有人都可以訪問

* 創建用戶,就是給mysql資料庫的user表添加記錄

* 查詢用戶表的部分信息

* mysql > select host,user,password from user;

* 例如:

* 添加itcast用戶

* mysql > create user 'itcast'@'192.168.1.100' identified by '1234';

* 修改用戶密碼

* 登錄之後,使用set password進行修改

* mysql > set password for 用戶名稱 = password('1234');

* 刪除用戶l

* 格式:drop user 用戶名稱

* mysql > drop user 'itcast'@'192.168.1.100';

* 設置權限

* 授權格式:grant 權限 on 資料庫.表 用戶名稱 with grant option;

* 權限:all表示所有的權限

* 資料庫.表:*.*所有資料庫的所有表;mysql.*,mysql資料庫的所有表;mysql.user,mysql資料庫的user表

* with grant option:表示當前用戶可以將自己所具有的權限,再次授權給其他人。

* 例如:grant all on *.* to 'demo'@'%' with grant option;

* 取消權限:revoke all privileges ,grant option from 用戶名稱;

* 思考:如果mysql,root用戶的密碼忘記?

* 關閉mysql伺服器(mysqld.ext結束)

* 使用命令啟動mysql伺服器

* cmd > mysqld --console --skip-grant-tables ,可以不使用密碼登錄,之後將可以設置密碼

* 注意:如果set password不能設置,可以使用update

* update user set password = password("1234") where user="root" and host="%"

7.mysql異常

* 伺服器沒有啟動

* ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

* 沒有使用資料庫,及當前資料庫為null

* ERROR 1046 (3D000): No database selected

* 解決辦法:mysql > use 資料庫名;

* 沒有權限

* ERROR 1044 (42000): Access denied for user 'demo'@'%' to database 'mysql'

* 啟動mysql服務:net start mysql

* 發生系統錯誤 3。

* 系統找不到指定的路徑。

* 原因:沒有在添加服務時,將目錄切換到bin目錄下

* win7系統是net無法啟動

* 發生系統錯誤 5。

* 解決辦法:使用超級管理員運行cmd(cmd右鍵)

8.綠色版mysql的安裝

* 解壓mysql-5.5.27-win32.zip

* 複製my-small.ini,並將名稱修改為my.ini

* 通過命令啟動:mysqld --console

* --console 控制臺,將啟動信息列印

* 腳本位置:%mysql%/bin/mysqld.exe

* 需要配置系統環境變量path,任意位置都可以使用腳本

* 將mysql配置成windows系統服務

* 注意:如果要配置系統服務,必須將命令行的目錄切換到%mysql%/bin

* 註冊服務:cmd > mysqld --install

* 移除服務:cmd > mysqld --remove

* 啟動已經成為系統服務服務項(作業系統的命令)

* 啟動服務:cmd > net start mysql

* 停止服務:cmd > net stop mysql

9.sql介紹

* sql : SQL被稱為結構化查詢語言(structured query language)

* SQL分類

* DDL,數據定義語言。(結構)

* 創建:create

* 修改:alter

* 刪除:drop

* DML,數據操縱語言(內容)

* 錄入:insert

* 修改:update

* 刪除:delete

* DQL,數據查詢語言

* 查詢:select

### 資料庫中存放表,表中存放的數據

10.DDL--數據定義語言

* 資料庫(itcast)

* 創建1:mysql > create database 資料庫名稱;

* 創建2:mysql > create database 資料庫名稱 character set 字符集;

* 刪除: mysql > drop database 資料庫名稱;

* 注意:

* 在創建的資料庫目錄中db.opt文件

* default-character-set=latin1 ,資料庫使用的默認編碼為ISO-8859-1,所以不支持中文

* 表(users)

* 注意:先使用資料庫

* 創建:mysql > create table 表名(欄位名稱1 欄位類型1,欄位名稱2 欄位類型2,...);

* 在幫助文檔中可以「data types」

* 創建user表

create table users(

id varchar(32),

username varchar(50),

age int ,

count double(4,1)

);

* 修改表名:alter table 表名 rename 新表名;

* 將表名修改成users

* mysql > alter table user rename users;

* 刪除表: drop table 表名

* 欄位(id,firstname,secondname,age,count)

* 添加 : alter table 表名 add [column] 欄位名稱 欄位類型;

* users表添加一個firstname欄位

* 修改:alter table 表名 change 舊欄位名稱 欄位名稱 欄位類型;

* 將欄位username重新命名為secondname

* 刪除:alter table 表名 drop [column] 欄位名稱

* 類型

* 字符:(java String)

* char(n),定長字符

* varchar(n),變長字符

* 例如:fengjie --> char(10) 將原有數據,再加3個空格 ; varchar(10) 具體數據的長度

* 數字

* int,表示整型

* double(m,n),表示雙精度,m表示所有數字的個數,n表示小數位數。例如:double(5,2), 最大值999.99

* decimal,表示所有的數字

* 約束??

11.DML,數據操縱語言

* 插入數據:insert into 表名[(欄位名稱1,欄位名稱2,...) ] values(值1,值2,。。。);

* 給users表添加一條記錄:u001 張 飛 28 97

* mysql > insert into users values('u001','飛',28,97,'張');

* mysql > insert into users(id,firstname,secondname,age,count) values('u002','張','飛2',85,100);

* mysql > insert into users(id) values('u003');

* 注意:

* 如果使用字符串,數據必須使用引號括起來。建議使用單引號

* 欄位與值必須匹配

* 如果沒有指定欄位,則欄位將使用默認值,默認值null ,不是"null"

* 修改數據: update 表名 set 欄位名稱 = 值 , 欄位名稱2 = 值2 , ... [ where 條件 ]

* 將u003成績修改成20

* mysql > update users set count = 20; # 將所有的程序修改成功20

* mysql > update users set count = 20 where id = 'u003';

* 刪除數據: delete from 表名 [where 條件]

* 刪除u003

* mysql > delete from users where id = 'u003';

* 注意:不要隨意執行 delete from 表名;

12.DQL--數據查詢語言

* 準備數據

* insert into `users`(`id`,`firstname`,`age`,`secondname`,`count`) values ('u001','張',18,'飛',60),('u002','趙',20,'雲',58),('u003','關',22,'羽',80),('u004','劉',25,'備',98),('u006','黃',18,'蓋',NULL),('u005','王',12,'子云',20),('u007','諸葛',24,'亮',100);

* 使用幫助文檔搜索:lock

* 格式:select 欄位1,欄位2,... from 表名 [where 條件]

* 沒有條件查詢

* 查詢所有

* mysql > select * from users;

* mysql > select id,firstname,secondname,age,count from users;

* 查詢部分信息

* mysql > select firstname,secondname from users;

* 查詢用戶編號、姓名,及格(60差值)

* mysql > select id,firstname,secondname ,count from users;

* mysql > select id,firstname,secondname ,count - 60 from users;

* mysql> select id,concat(firstname,secondname) ,count - 60 from users;

* 修改上面查詢顯示欄位名稱,用"姓名"表示姓名,用"及格"表示及格

* 別名:欄位 [as] 別名

* mysql> select id,concat(firstname,secondname) as 姓名 ,count - 60 及格 from users;

* mysql> select id,concat(firstname,secondname) as '姓 名' ,count - 60 '及 格' from users;

* 注意:別名可以不使用引號,但如果別名之間存在空格則必須使用引號

* 帶有條件查詢

* 查詢分數等於60的學生

* mysql > select * from users where count = 60;

* 查詢姓"張"學生

* mysql > select * from users where firstname = '張';

* 查詢年齡大於18的學生

* mysql > select * from users where age > 18;

* 顯示分數在60-80的學生 [60,80]

* mysql > select * from users where count >= 60 and count <= 80;

* mysql > select * from users where count between 60 and 80;

* 查詢編號為u001和u002的學生

* mysql > select * from users where id = 'u001' or id = 'u002';

* mysql > select * from users where id in ('u001','u002');

* 查詢年齡是18或20的學生

* mysql > select * from users where age = 18 or age = 20;

* 查詢名中含有"雲"的學生

* mysql > select * from users where secondname like '%雲%';

* %表示,某一邊字符個數不限定

* 查詢名中第二字還有"雲"的學生

* mysql > select * from users where secondname like '_雲%';

* _表示,一個任意字符

# 添加數據:mysql> update users set secondname='備備雲' where id = 'u004';

* 查詢名中第三字還有"雲"的學生

* mysql > select * from users where secondname like '__雲%';

# 添加數據:mysql> update users set secondname ='%' where id = 'u007';

* 查詢包含%特殊符號

* mysql> select * from users where secondname like '%\%%';

* 注意:可以使用轉義字符\

* 查詢分數小於60 或 大於90分的學生

* mysql> select * from users where count < 60 or count > 90;

* 查詢分數等於60 或者 分數大於90並且年齡大於23

* mysql> select * from users where count = 60 or count > 90 and age > 23;

* mysql> select * from users where count = 60 or ( count > 90 and age > 23 ); #建議使用

* 總結:運算符的優先級, 條件運算符 > and > or

* 查詢沒有考試的學生

* mysql> select * from users where count is null;

* 聚合函數的使用

* 有多少條記錄

* mysql > select count(*) from users;

* mysql > select count(count) from users; # 不計算null值

* mysql > select count(1) from users; # 推薦

* 平均成績

* mysql > select avg(count) from users;

* 注意:

* avg中使用的數字欄位

* 不計算null值

* 數據準確:mysql > select sum(count)/count(1) from users;

* 最高成績

* mysql > select max(count) from users;

* 最小年齡

* mysql > select min(age) from users;

* 班級總成績

* mysql > select sum(count) from users;

* 查詢所有的年齡數

* mysql> select age from users order by age asc ;

* order by用於排序:格式:order by 欄位 asc | desc

* mysql> select distinct age from users order by age asc ;

.

* 分組

* 添加班級欄位(classes)

* mysql> alter table users add column classes varchar(3);

# 添加數據

* update users set classes = '1' where id in ('u001','u002','u003','u004');

* update users set classes = '2' where id in ('u005','u006','u007');

* 查詢1班和2班的平均成績

* 平均成績:select sum(count)/count(1) from users;

* group by進行分組,格式:group by 欄位

* mysql > select sum(count)/count(1) from users group by classes;

* mysql > select sum(count)/count(1) , classes from users group by classes;

* mysql > select sum(count)/count(1) as '平均成績' , classes as '班級' from users group by classes;

* 錯誤數據:mysql > select sum(count)/count(1) as '平均成績' , classes as '班級' ,id from users group by classes;

* 注意:

* 如果使用分組,在select查詢的欄位中,只能使用分組的欄位和聚合函數

* 查詢班級的平均成績為不及格的

select sum(count)/count(1) as avg ,classes from users group by classes having avg <=60

* 分組的條件需要使用having

* mysql > select sum(count)/count(1) , classes from users group by classes having sum(count)/count(1) <=60 ;

* mysql > select sum(count)/count(1) as avg , classes from users group by classes having avg <=60 ;

* 如果不是having

* 錯誤數據:mysql > select sum(count)/count(1) <= 60 , classes from users group by classes ;

+--+----+

| sum(count)/count(1) <= 60 | classes |

+--+----+

| 0 | 1 |

| 1 | 2 |

+--+----+

* 所有的平均成績:select sum(count)/count(1) as avg , classes from users group by classes;

* 虛擬的查詢結果:select * from demo where avg < 60;

* 合併

select * from (select sum(count)/count(1) as avg , classes from users group by classes) as demo where demo.avg < 60;

13.中文處理

* 1.創建資料庫時,指定編號:mysql > create database itcast3 character set UTF8;

* use itcast3;

# 準備表: create table demo(name varchar(30));

# 準備數據:insert into demo values('鳳姐');

* 2.臨時設置編碼:mysql > set names gbk;

* 總結

* 查詢 mysql> show variables like '%char%';

* 1.資料庫必須支持中文 ,character_set_database | utf8

* 2.三個編碼統一,並且需實際客戶端的編碼相同(cmd默認編碼為gbk)

character_set_client | gbk

character_set_connection | gbk

character_set_results | gbk

操作步驟

* 創建資料庫(支持中文)

* 創建表

* 錄入數據

* 查詢

相關焦點

  • 數據分析必備——SQL入門基礎知識
    對於想走數據分析職業道路的小夥伴,不僅僅需要了解統計學的基本知識(參考《數據分析必備——統計學入門基礎知識》),Excel的基礎知識(參考《數據分析必備——Excel基礎知識》),也要學習一些資料庫和SQL的內容哦! SQL的全稱是Structured Query Language(結構化查詢語言),是一種古老而簡潔的程序設計語言。
  • Python基礎知識:pymsql連接資料庫,增刪改查任我行
    接下來我們需要調用cursor.execute()來執行sql語句,connection.commit(),最後調用connection.close()方法關閉資料庫連接。翻閱pymysql的源碼,可以看到connection的實例化所需要的參數。
  • 書法入門基礎—基礎知識
    一、筆墨紙硯:文房四寶-書法基礎入手的同學,應該先從楷書入手。比如小時候學習走路一樣,歷代書法家曾把楷書比作「立」,行書比作「走」,草書比作「跑」,首先就是要先學「站立」也就是我們講的楷書。楷書字體點畫規範,起頓分明,結構方正均勻,出規入矩,法度嚴謹,又便於書寫,是練字的基礎。
  • IT從業人員的成長之路(資料庫基礎知識筆記)
    現在作為IT從業人員需要掌握的知識越來越多,這個行業的技術知識迭代較快,促使你不斷學習進步,以下為小編的「打怪」之路。剛剛步入這個行業的時候從最簡單的網絡入門,掌握二層、三層網絡知識,學習配置交換機、路由器和防火牆等設備,學習各種動態路由協議(RIP和EIGRP工作這麼長時間在工作中沒有遇到,只有考試的時候會用到)OSPF、BGP、ISIS等。
  • 大數據分析工程師入門9-Spark SQL
    本文為《大數據分析師入門課程》系列的第9篇,在本系列的第8篇-Spark基礎中,已經對Spark做了一個入門介紹,在此基礎上本篇拎出Spark SQL,主要站在使用者的角度來進行講解,需要注意的是本文中的例子的代碼均使用Scala語言。
  • 外匯交易入門基礎知識
    今天小編就來講一下外匯交易入門基礎知識,什麼是外匯?外匯商場(或簡稱外匯),望文生義,是指錢銀的生意,也是國際 上增長速度最快的商場之一。外匯商場的日均生意量已超越4萬億美元。 外匯生意每周5天、每天24小時不間斷打開生意。實際上,外匯商場的生意與股票商場十分類似– 低買高賣。
  • 單眼相機入門的基礎知識
    現在很多人都對單眼相機情有獨鍾,不管是家庭拍攝還是自己隨拍都是用單眼相機,有的人使用單眼相機拍攝,但對於單眼相機的使用基礎不清楚,所以有的時候拍下的照片不清晰,那麼接下來我們就來看看單眼相機入門的基礎知識。
  • 《DOTA2》新手入門基礎知識有哪些 新手入門教學
    DOTA2新手入門基礎知識有哪些?每位玩家都是需要從新手進步到熟練的,本次小編帶來了DOTA2新手入門教學,還不知道如何玩DOTA2的萌新不妨進來看看,相信會有所幫助。 DOTA2新手入門基礎知識有哪些?
  • 與日語結緣,從了解日語入門基礎知識開始
    其實,與日語結緣我們也可以從了解日語入門基礎知識開始!今天就跟著第六時限張老師來一起看看日語入門基礎知識有哪些吧。 一、日語五十音圖 學習漢語時,最初需要學習漢語拼音;學習英語時,需要學習音標;學習日語時,亦是如此,我們需要學習第一個日語入門基礎知識——五十音圖
  • 編程入門基礎之 winform(1)
    很多初學編程的朋友,看著密密麻麻的代碼,感覺無從著手 ,學習編程需要掌握的知識點太多了 ,html ,css , javascript , sql , ajax, vue , java, .net , jsp ,spring , mvc . .......等等 。
  • 零基礎小白如何快速入門Python數據分析
    1、python基礎知識2、爬蟲基本知識+sql3、numpy4、,基礎打牢了,後面的知識學習掌握得更快,一張圖告訴你需要掌握哪些基礎知識Python基礎知識學習路線圖因為SQL是入門python的關鍵基礎,同時它也是每個數據分析師必備的技能,主要目的是用SQL來進行增刪改查等操作,對數據進行篩選。可視化工作幾乎是你正式進行數據分析的第一步,通過SQL拿到數據之後,我們需要使用可視化方法探索和發現數據中的模式規律。數據分析界有一句經典名言,字不如表,表不如圖。NumPy:擁有大量的科學計算的核心功能。
  • 音樂入門的基礎知識讓你三分鐘學會方法
    深受廣大愛好者喜愛,三分鐘快速學會音樂基礎知識,讓你快速音樂入門。音樂入門基礎知識一,認識樂譜樂譜是學音樂的最基礎知識,首先我們要學會看樂譜,常用的樂譜分為兩鍾分別是簡譜和五線譜,要想學會音樂入門的基礎知識認識樂譜就要知道一首樂譜是怎麼組成的。整個樂譜組成有調號,拍子,音符,時值,裝飾音,演奏符號、節奏、小節線組成。
  • MySQL備份和遷移sql文件,這個指令基礎又關鍵
    引言 我們把目光投向一切數據的基礎——資料庫。應用程式設計的那麼複雜,最終不過是為了在資料庫內持久化數據。 如果導入的sql文件內,沒有 CREATE DATABASE 選項,你需要先手動創建資料庫,然後導入。這可能會是導出sql文件的時候,你勾選了「--no-create-db」/ "-n" 這個選項。
  • Spark SQL解析過程以及Antlr4入門
    Spark SQL解析過程在Spark 2.0之後,Spark SQL使用Antlr 4來解析SQL表達式,其解析描述文件路徑為spark源碼根路徑\sql\catalyst\src\main\antlr4\org\apache\spark\sql\catalyst
  • 百利好百科:炒外匯入門基礎知識
    近年來,越來越多的投資者進入外匯市場,因為炒外匯交易簡單,可以用保證金以小博大,從而獲得高利益,但我們要清楚,外匯市場是具有一定規則,我們只有遵循炒外匯的規則才能穩步獲利,那初學者外匯入門應該如何遵循炒外匯規則?炒外匯入門有哪些基礎知識?
  • Java資料庫編程教程,掌握MySql基礎知識
    Java資料庫編程教程,掌握MySql基礎知識,需要掌握需求分析、關係型資料庫用來描述實體與實體之間的關係、MySql資料庫伺服器、MySql得安裝和卸載、MySql的sql語句及操作相關的知識。
  • 攝影入門基礎知識
    攝影入門基礎:這裡了解一下攝影的幾個基本術語,專業詞。光圈 快門 焦距 對焦 ISO感光度 景深把這幾個基本的知識框架弄懂了,後面慢慢就好入手了!1·什麼是光圈?就是那個孔,孔越大,穿透進去的光就越多,反之越少。用F(數值)來代表光圈大小。
  • SQL注入漏洞靶場SQLi-Labs通關教程
    其中9個環境,可通過本教程,按步驟實驗,復現學習該sql注入漏洞;攻防實驗地址https://www.anquanlong.com/lab_introduce?lab_id=3實驗目錄0x1 sqli-labs環境介紹0x2 sql注入基礎知識Less-1錯誤型GET單引號字符型注入Less-2錯誤型GET整型注入Less-3錯誤型GET單引號變形字符型注入Less-4錯誤型GET雙引號字符型注入Less-5雙注入GET單引號字符型注入
  • 機器學習必要入門基礎知識教程
    機器學習的基礎知識是什麼,以及在機器學習應用程式中評估風險和其他問題的必要工具是什麼?本文介紹機器學習必要入門基礎知識教程。機器學習的目標是在數據中找到模式並使用這些模式進行預測,它還可以為我們提供一個討論機器學習問題和解決方案的框架方法。
  • 3分鐘短文|MySQL備份和遷移sql文件,這個指令基礎又關鍵
    引言我們把目光投向一切數據的基礎——資料庫。應用程式設計的那麼複雜,最終不過是為了在資料庫內持久化數據。在開發階段,如果需要導入一個SQL文件,裡面存儲了SQL命令,包括建表,數據插入等等操作。如何在命令行中執行呢?