主頁 > 資料庫 > 資料庫學習之七:MySQL 客戶端工具及SQL入門

資料庫學習之七:MySQL 客戶端工具及SQL入門

2020-09-15 08:05:33 資料庫

七、MySQL 客戶端工具及SQL入門

1、課程大綱:

mysql客戶端命令介紹;

mysql獲取幫助的方法細講;

DDL陳述句之管理資料庫;

DDL陳述句之管理表與案例介紹;

DML陳述句之管理表中的資料;

SELECT 檢索資料;

2、mysql介面程式使用及SQL入門

mysql客戶端命令介紹:
? mysql: – 用于資料庫連接管理
- 將 用戶SQL 陳述句發送到服務器
? mysqladmin: – 命令列管理工具
? mysqldump: – 備份資料庫和表的內容

- 用于管理資料庫:
	命令介面自帶命令
	DDL:資料定義語言(create)
	DCL:資料控制語言(grant,revoke)
	DML:資料操作語言(update,delete,insert)
mysql 介面程式:
mysql -uroot -poldboy123 -e "show variables like '%server_id%'"
mysql>:
1,介面自帶的功能
mysql命令:
1.\h或help 或?
顯示介面命令幫助命令,
2.\G
將顯示的內容格式輸出,
3.\T或者tee
日志記錄,需要先:tee /tmp/test.log
所有mysql操作及輸出都記錄在這個檔案里,
4.\c 或者CTRL+c
陳述句后面帶\c,前面的命令不在執行,ctrl+c退出
5.\s 或 status
查看當前資料庫的基本狀態,
6.\. 或 source
用來執行外部的SQL腳本:二進制日志截取,備份出來的sql腳本
7.\ use
use 進入到某個資料庫,
2,服務器端命令(SQL結構化的查詢語言,mysql介面程式只負責接收SQL)
show 系列命令,

2、服務器端命令(SQL)

(1)SQL:結構化的查詢語言,mysql介面程式只負責接收SQL,傳送SQL.

(2)SQL種類:

? DDL:資料庫物件定義語言(create)

? DCL:資料庫控制語言(grant,revoke)

? DML:資料行操作語言(update,delete,insert)

? DQL:資料查詢語言(show,select)

DDL操作:

? 物件:f

? 庫:

? 定義什么?

? 1、庫名字

? 2、庫的基本屬性

? 如何定義?

? create database lufei;

? create shema lf;

? show databases;

mysql> help create database
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification] ...
創建屬性:
create_specification:
字符集:[DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] 
  排序規則:COLLATE [=] collation_name
mysql> create database llf character set utf-8;
mysql> show create database llf;#查看建庫陳述句
drop database llf;洗掉資料庫

help  后面加命令,幫助不熟悉使用的命令,
修改字符集:
ALTER DATABASE [db_name] CHARACTER SET charset_name collation_name
mysql> alter database lf charset utf8mb4;
                          縮寫
mysql> show create database lf;

? 表:

? 表資料

? 表屬性(元資料):表明,列名字,列定義(資料型別,約束,特殊列屬性)、表的索引資訊,

? 定義什么?

? 定義表的屬性?

use lufei;
create table t1(id int,name varchar(20));
mysql> use lufei;
mysql> create table t1(id int ,name varchar(20));
mysql> show tables;
mysql> show create table t1;
mysql> desc t1;
mysql> drop table t1;

修改表的定義:
		修改:
		(1)在表中添加一列
		alter table t1 add age int;
		(2)添加多列
		alter table t1 add bridate datetime, add gender enum('M','F');
		(3)在指定列后添加一列
		alter table t1 add stu_id int after id;
		(4)在表中最前添加一列
		alter table t1 add sid int first;
		(5)洗掉列
		 alter table t1 drop sid;
		(6)修改列名
		alter table t1 change name stu_name varchar(20);
		(7)修改列屬性
		alter table t1 modify stu_id varchar(20);
		(8)修改表名
		rename table t1 to student;
		alter table student rename  as stu;

DML陳述句:資料庫操作語言

? insert

update

? delete

DML陳述句:資料操作語言
	insert 
	use  lufei
	create table t1 (id int ,name varchar(20));
	insert into t1 values(1,'zhang3');
	select * from t1;
	insert into t1 values (2,'li4'),(3,'wang5'),(4,'ma6');
	insert into t1(name) values ('xyz');
	update
	update  t1  set name='zhang33' ;   ----會更新表中所有行的name欄位,比較危險,
	update  t1  set name='zhang55' where id=1;   ----update在使用時一般都會有where條件去限制,
	delete
	delete from t1 ;  --洗掉表中所有行,比較危險,一行一行洗掉表中資料,
	delete from t1   where  id=2;
	DDL
	truncate table t1;  ---在物理上洗掉表資料,速度比較快,

DQL陳述句:(資料庫查詢陳述句)

DQL:
	select陳述句:
SELECT USER,PASSWORD ,HOST  FROM mysql.user;

-- select 基本查詢

DESC world.city
SELECT  id ,NAME   FROM  world.city;
SELECT * FROM world.`city`;
-- select 條件查詢 where
---- 1、查詢中國(CHN)所有的城市資訊
SELECT * FROM world.`city` WHERE countrycode='CHN';
---- 2、查詢中國(CHN)安徽省所有的城市資訊,
SELECT * FROM world.`city` 
WHERE countrycode='CHN'
AND
district='anhui';

---- 3、查詢世界上人口數量在10w-20w城市資訊
SELECT * FROM world.`city` 
WHERE 
population BETWEEN 100000 AND 200000 ;

---- 4、中國或者日本的所有城市資訊
where字句中的IN
SELECT * FROM world.city
WHERE countrycode IN ('CHN','JPN');

---- 5、模糊查詢
SELECT * FROM world.city
WHERE countrycode LIKE 'ch%';

select 排序并限制

按照人口數量排序輸出中國的城市資訊(asc(默認升序),desc(降序))

-- select 排序并限制
---- 按照人口數量排序輸出中國的城市資訊(ASC\DESC)

SELECT * FROM world.`city` WHERE countrycode='CHN' ORDER BY population ASC;
SELECT * FROM world.`city` WHERE countrycode='CHN' ORDER BY population DESC;

---- 按照多列排序人口+省排序
SELECT * FROM world.`city` WHERE countrycode='CHN' ORDER BY id DESC  ;
按照第5列進行降序排序:
SELECT * FROM city
ORDER BY 5 DESC ;

1-20
SELECT * FROM world.`city` WHERE countrycode='CHN' 
ORDER BY 5 DESC LIMIT 20;

顯示11-20行
SELECT * FROM world.`city` WHERE countrycode='CHN' 
ORDER BY 5 DESC LIMIT 10,10 ;

SELECT * FROM world.`city` WHERE countrycode='CHN' 
ORDER BY 5 DESC LIMIT 10 OFFSET 10 ;

表連接查詢(使用where)

傳統的連接寫法(使用where)
---- 中國所有城市資訊+使用語言
		
SELECT NAME ,countrycode ,population FROM city 
WHERE countrycode ='CHN'	
	
SELECT countrycode ,LANGUAGE FROM countrylanguage;

SELECT ci.NAME ,ci.countrycode ,ci.population,cl.language 
FROM 
city AS ci , countrylanguage AS cl
WHERE ci.countrycode ='CHN' 
AND
ci.CountryCode=cl.CountryCode;

SELECT NAME,ci.countrycode ,cl.language ,ci.population
FROM  city ci , countrylanguage cl
WHERE 
ci.countrycode='chn' AND
ci.`CountryCode`=cl.countrycode;

SELECT NAME,countrycode ,LANGUAGE ,population
FROM  city NATURAL  JOIN  countrylanguage 
WHERE population > 10000000
ORDER BY population;

SELECT NAME,countrycode ,LANGUAGE ,population
FROM  city JOIN  countrylanguage 
USING(countrycode);

---- 查詢青島這個城市,所在的國家具體叫什么名字
DESC city
DESC country

SELECT NAME,countrycode FROM city WHERE NAME='qingdao';

SELECT NAME FROM country WHERE CODE='CHN';
--------------------------------
SELECT ci.name ,ci.countrycode,ci.population ,co.name
FROM city AS ci 
JOIN 
country AS co
ON ci.countrycode=co.code
AND
ci.name='qingdao';

group by +聚合函式 (avg(),max(),min(),sum())

group by +聚合函式(avg()、max()、min()、sum())

SELECT countrycode ,SUM(population) FROM city
WHERE countrycode = 'chn'
GROUP BY countrycode;

union 

用來替換  or 、in()

SELECT * FROM world.city
WHERE countrycode IN ('CHN','JPN');
改寫為:

SELECT * FROM world.city
WHERE countrycode ='CHN'
union
SELECT * FROM world.city
WHERE countrycode ='JPN';

字符集

字符集:

charset:字符集
UTF8
UTF8mb4

gbk

collation:排序規則

a-z ,A-Z  大小寫敏感

aA-zZ     小寫不敏感

show charset;
show collation;

資料庫:

服務器端字符集:

控制的是,存到mysql中時,字符集控制

客戶端字符集

控制的是用戶的輸入及顯示
系統字符集

控制的是系統相關的顯示,和一些依賴于作業系統的應用
alter database oldboy CHARACTER SET utf8 collate utf8_general_ci;
alter table t1 CHARACTER SET latin1;

注意:更改字符集時,一定要保證由小往大改,后者必須是前者的嚴格超集,生產中別隨便改,

資料型別及列屬性:

數字型別
字符型別
時間型別
列屬性
create table student(id int not null primary key  AUTO_INCREMENT);
create table student1(id int not null primary key  AUTO_INCREMENT,name varchar(20))charset utf8;
create table teacher(id int not null ,name varchar(20) not null);
create table teacher1(id int not null ,name varchar(20) not null,beizhu varchar(20) not null default "ok");

primary key 主鍵:非空、唯一
unique:唯一

獲取元資料:

information_schema :

資料行之外

元資料(定義資料的資料列屬性,列名字等,狀態)

充當資料庫元資料的中央系統資訊庫:

  • 模式和模式物件
  • 服務器統計資訊(狀態變數,設定,連接)

采用表格式以實作靈活訪問

  • 使用任意select 陳述句

是“虛擬資料庫”

  • 表并非“真實”表(基表),而是“系統視圖”
  • 根據當前用戶的特權動態填充表
mysql> use information_schema 

mysql> show tables;

mysql> desc tables;

mysql> select table_name ,table_schema,engine from world;

顯示資料庫world中表的列的資訊:

mysql> select * from columns where table_schema='world'\G;
mysql> select table_schema,table_name from information_schema.tables where table_schema='world';
+--------------+-----------------+
| table_schema | table_name      |
+--------------+-----------------+
| world        | city            |
| world        | country         |
| world        | countrylanguage |
+--------------+-----------------+
批量拼接陳述句:
----
mysql> select concat('hellow');
+------------------+
| concat('hellow') |
+------------------+
| hellow           |
+------------------+
1 row in set (0.01 sec)
----
實體:
mysql> select concat("mysqldump -uroot -poldboy123 ",table_schema," ",table_name," >>","/backup/",table_schema,"-",table__name,".bak.sql") from information_schema.tables where table_schema='world';
+-----------------------------------------------------------------------------------------------------------------------------+
| concat("mysqldump -uroot -poldboy123 ",table_schema," ",table_name," >>","/backup/",table_schema,"-",table_name,".bak.sql") |
+-----------------------------------------------------------------------------------------------------------------------------+
| mysqldump -uroot -poldboy123 world city >>/backup/world-city.bak.sql                                                        |
| mysqldump -uroot -poldboy123 world country >>/backup/world-country.bak.sql                                                  |
| mysqldump -uroot -poldboy123 world countrylanguage >>/backup/world-countrylanguage.bak.sql                                  |
+-----------------------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)
實體2:
SELECT CONCAT('CREATE TABLE ', TABLE_SCHEMA, '.',
			 TABLE_NAME, '_backup LIKE ', TABLE_SCHEMA, '.',
			 TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES
			 WHERE TABLE_SCHEMA = ‘world’;
linux命令列使用的命令:
[root@centos6-kvm3 data]# mysqlshow -uroot -poldboy123 world
元資料一般查詢陳述句:
show
show databases
show create database oldboy
show tables
show create table t1

SOHW databases:列出所有資料庫
SHOW TABLES:列出默認資料庫中的表
SHOW TABLES FROM <database_name>:列出指定資料庫中的表
SHOW COLUMNS FROM <table_name>:顯示表的列結構
SHOW INDEX FROM <table_name>:顯示表中有關索引和索引列的資訊
SHOW CHARACTER SET:顯示可用的字符集及其默認整理
SHOW COLLATION:顯示每個字符集的整理
SHOW STATUS:列出當前資料庫狀態
SHOW VARIABLES:列出資料庫中的引數定義值

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/44458.html

標籤:MySQL

上一篇:【軟體安裝教程】navicat的安裝與簡單使用

下一篇:資料庫學習之八:mysql 基礎優化-索引管理

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more