mysql資料庫一些語句(mysql資料庫語句查詢)

  • 1、15個MySQL常用基本SQL語句
  • 2、備份MYSQL資料庫SQL語句怎麼寫
  • 3、mysql資料庫執行sql語句怎麼寫
  • 4、求MySQL資料庫語句 計算某一列的和

在學習SQL語句之前,首先需要區分幾個概念,我們常說的資料庫是指資料庫軟體,例如MySQL、Oracle、SQL Server等,而本文提到的資料庫是指資料庫軟體中的一個個用於存儲數據的容器。

在MySQL中,資料庫稱為database,數據表稱為table,一個資料庫軟體中有多個資料庫(databases),每個資料庫中又可以有多個數據表(tables),最終,數據是存儲在數據表中。

資料庫和數據表之間的關係可以用下面這個圖來表示,對於一個資料庫來說,有多個數據表。

在正式開始寫SQL語句之前,需要說明兩點。

這裡通過MySQL Workbench來寫SQL代碼,在Workbench中,執行一條SQL語句的方式有兩種。

了解了這之後,接下來介紹一些常見的命令,分兩部分:資料庫常用命令和數據表常用命令。

1、查看有哪些資料庫

2、創建資料庫

創建一個名為Testdb的資料庫。

3、創建資料庫並指定編碼格式

有些時候,為了防止中文亂碼,創建資料庫的時候需要指定編碼格式。

4、使用某個資料庫

使用mydb這個資料庫,或者進入mydb這個資料庫。

5、刪除資料庫

刪除Testdb這個資料庫。

1、查看有哪些數據表

進入某個資料庫之後,想查看有哪些數據表,SQL語句為:

mydb是一個新建的資料庫,所以自然是沒有數據表。

2、創建數據表

建表SQL語句格式為:

說明: 每個欄位以逗號分隔,最後一個欄位不加逗號。

例如,給定一個學員信息表,如下表所示。

根據以上表格,建表SQL語句如下。

以上語句中,primary key表示主鍵,意思是這個欄位作為記錄的唯一標識,就像每個人的身份證號,都是唯一確定的。

3、查看錶結構

查看錶結構的SQL命令為:

執行該命令會顯示錶stuinfo的基本結構,例如有哪些欄位,每個欄位是什麼類型,誰是主鍵等。

4、修改數據表

修改數據表通過drop子句進行,比如,建完表後,想增加一個欄位,SQL語句的格式為:

想在指定位置增加一個欄位,例如,在某個欄位後增加一個欄位,SQL語句的格式為:

如果在某個欄位之前增加欄位,用before即可。

例如,在欄位age後增加一個欄位major(專業),SQL語句為:

執行這個命令,再通過describe查看錶結構,會發現表中多了一個欄位major。

如果要刪除major這個欄位,通過drop子句,SQL語句為:

5、重命名表

重命名表通過alter+rename來實現,SQL語句格式為:

這裡為了不影響之前創建的表,我們創建一個新表,SQL語句如下。

以上創建一個名為stuInfoTest的表,現在想將它的名稱改成stuinfotest1,SQL語句為:

6、刪除數據表

刪除數據表通過drop進行,SQL語句格式為:

例如,刪除數據表stuinfotest1,SQL語句為:

7、插入記錄

此時的表stuinfo是空的,沒有數據,我們要向表中插入記錄。

插入記錄通過insert into進行,SQL語句格式為:

例如,向表stuinfo插入一條記錄,SQL語句為:

注意:上方是一條SQL語句,為了可讀性換行,記住一條SQL語句默認以分號結尾。

如果需要一次性插入多條記錄,SQL語句格式為:

例如,向表stuinfo再插入兩條記錄,SQL語句為:

注意:如果設置了主鍵,插入記錄的主鍵欄位是不能重複的,也就是不能插入重複的記錄。

作業:大家可以按照上述方法將上面的學員信息表中的所有記錄都插入表stuinfo中。

8、查詢記錄

有了數據之後,就可以查詢記錄了,查詢記錄通過select子句進行。

例如,想查詢表stuinfo中的所有記錄,SQL語句為:

執行之後,就可以看到表stuinfo中的所有記錄了。

如果想查詢符合某個條件的記錄,就要用到where子句了,SQL格式為:

例如,想查詢stuid為20161001的記錄,SQL語句為:

9、刪除記錄

刪除記錄通過delete子句進行,SQL語句格式為:

例如,想刪除stuid為20161002的記錄,SQL語句為:

10、修改記錄

修改記錄通過update子句進行,update就是更新的意思,SQL語句格式為:

例如,想將學號(stuid)為20161001的記錄的姓名(stuname)更新為Jack,SQL語句為:

以上,就是MySQL中的基本SQL語句。

零基礎如何學習數據分析?查看下方專欄。

mysqldump備份還原和mysqldump導入導出語句大全詳解

mysqldump備份:

mysqldump -u用戶名 -p密碼 -h主機資料庫 a -w “sql條件” –lock-all-tables 路徑

案例:

mysqldump -uroot -p1234 -hlocalhost db1 a -w “id in (select id from b)” –lock-all-tables c:\aa.txt

mysqldump還原:

mysqldump -u用戶名 -p密碼 -h主機資料庫路徑

案例:

mysql -uroot -p1234 db1 c:\aa.txt

mysqldump按條件導出:

mysqldump -u用戶名 -p密碼 -h主機資料庫 a –where “條件語句” –no-建表路徑

mysqldump -uroot -p1234 dbname a –where “tag=’88′” –no-create-info c:\a.sql

mysqldump按導入:

mysqldump -u用戶名 -p密碼 -h主機資料庫路徑

案例:

mysql -uroot -p1234 db1 c:\a.txt

mysqldump導出表:

mysqldump -u用戶名 -p密碼 -h主機資料庫表

案例:

mysqldump -uroot -p sqlhk9 a –no-data

講一下 mysqldump 的一些主要參數

–compatible=name

它告訴 mysqldump,導出的數據將和哪種資料庫或哪箇舊版本的 MySQL 伺服器相兼容。值可以為 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等,要使用幾個值,用逗號將它們隔開。當然了,它並不保證能完全兼容,而是盡量兼容。

–complete-insert,-c

導出的數據採用包含欄位名的完整 INSERT 方式,也就是把所有的值都寫在一行。這麼做能提高插入效率,但是可能會受到 max_allowed_packet 參數的影響而導致插入失敗。因此,需要謹慎使用該參數,至少我不推薦。

–default-character-set=charset

指定導出數據時採用何種字符集,如果數據表不是採用默認的 latin1 字符集的話,那麼導出時必須指定該選項,否則再次導入數據後將產生亂碼問題。

–disable-keys

告訴 mysqldump 在 INSERT 語句的開頭和結尾增加 /*!40000 ALTER TABLE table DISABLE KEYS */; 和 /*!40000 ALTER TABLE table ENABLE KEYS */; 語句,這能大大提高插入語句的速度,因為它是在插入完所有數據後才重建索引的。該選項只適合 MyISAM 表。

–extended-insert = true|false

默認情況下,mysqldump 開啟 –complete-insert 模式,因此不想用它的的話,就使用本選項,設定它的值為 false 即可。

–hex-blob

使用十六進位格式導出二進位字元串欄位。如果有二進位數據就必須使用本選項。影響到的欄位類型有 BINARY、VARBINARY、BLOB。

–lock-all-tables,-x

在開始導出之前,提交請求鎖定所有資料庫中的所有表,以保證數據的一致性。這是一個全局讀鎖,並且自動關閉 –single-transaction 和 –lock-tables 選項。

–lock-tables

它和 –lock-all-tables 類似,不過是鎖定當前導出的數據表,而不是一下子鎖定全部庫下的表。本選項只適用於 MyISAM 表,如果是 Innodb 表可以用 –single-transaction 選項。

–no-create-info,-t

只導出數據,而不添加 CREATE TABLE 語句。

–no-data,-d

不導出任何數據,只導出資料庫表結構。

–opt

這只是一個快捷選項,等同於同時添加 –add-drop-tables –add-locking –create-option –disable-keys –extended-insert –lock-tables –quick –set-charset 選項。本選項能讓 mysqldump 很快的導出數據,並且導出的數據能很快導回。該選項默認開啟,但可以用 –skip-opt 禁用。注意,如果運行 mysqldump 沒有指定 –quick 或 –opt 選項,則會將整個結果集放在內存中。如果導出大資料庫的話可能會出現問題。

–quick,-q

該選項在導出大表時很有用,它強制 mysqldump 從伺服器查詢取得記錄直接輸出而不是取得所有記錄後將它們緩存到內存中。

–routines,-R

導出存儲過程以及自定義函數。

–single-transaction

該選項在導出數據之前提交一個 BEGIN SQL語句,BEGIN 不會阻塞任何應用程序且能保證導出時資料庫的一致性狀態。它只適用於事務表,例如 InnoDB 和 BDB。

本選項和 –lock-tables 選項是互斥的,因為 LOCK TABLES 會使任何掛起的事務隱含提交。

要想導出大表的話,應結合使用 –quick 選項。

–triggers

同時導出觸發器。該選項默認啟用,用 –skip-triggers 禁用它。

其他參數詳情請參考手冊,我通常使用以下 SQL 來備份 MyISAM 表:

/usr/local/mysql/bin/mysqldump -uyejr -pyejr “

–default-character-set=utf8 –opt –extended-insert=false “

–triggers -R –hex-blob -x db_name db_name.sql

使用以下 SQL 來備份 Innodb 表:

/usr/local/mysql/bin/mysqldump -uyejr -pyejr “

–default-character-set=utf8 –opt –extended-insert=false “

–triggers -R –hex-blob –single-transaction db_name db_name.sql

另外,如果想要實現在線備份,還可以使用 –master-data 參數來實現,如下:

/usr/local/mysql/bin/mysqldump -uyejr -pyejr “

–default-character-set=utf8 –opt –master-data=1 “

–single-transaction –flush-logs db_name db_name.sql

它只是在一開始的瞬間請求鎖表,然後就刷新binlog了,而後在導出的文件中加入CHANGE MASTER 語句來指定當前備份的binlog位置,如果要把這個文件恢復到slave里去,就可以採用這種方法來做。

1.2 還原

用 mysqldump 備份出來的文件是一個可以直接倒入的 SQL 腳本,有兩種方法可以將數據導入。

直接用 mysql 客戶端

例如:

/usr/local/mysql/bin/mysql -uyejr -pyejr db_name db_name.sql

用 SOURCE 語法(實驗不成功!!!)

其實這不是標準的 SQL 語法,而是 mysql 客戶端提供的功能,例如:

SOURCE /tmp/db_name.sql;

這裡需要指定文件的絕對路徑,並且必須是 mysqld 運行用戶(例如 nobody)有許可權讀取的文件。

Mysql常用命令詳解

Mysql安裝目錄

資料庫目錄

/var/lib/mysql/

配置文件

/usr/share/mysql(mysql.server命令及配置文件)

相關命令

/usr/bin(mysqladmin mysqldump等命令)

啟動腳本

/etc/init.d/mysql(啟動腳本文件mysql的目錄)

系統管理

連接MySQL

格式:

mysql -h 主機地址 -u用戶名 -p用戶密碼

例 1:連接到本機上的 MySQL。

hadoop@ubuntu:~$ mysql

-uroot -pmysql;

例 2:連接到遠程主機上的 MYSQL。

hadoop@ubuntu:~$ mysql -h

127.0.0.1 -uroot -pmysql;

修改新密碼

在終端輸入:mysql -u用戶名 -p密碼,回車進入Mysql。

use mysql;

update user set password=PASSWORD(‘新密碼’) where

user=’用戶名’;

flush privileges; #更新許可權

quit; #退出

增加新用戶

格式:grant select on 資料庫.* to

用戶名@登錄主機 identified by ‘密碼’

舉例:

例 1:增加一個用戶 test1 密碼為

abc,讓他可以在任何主機上登錄,並對所有資料庫有

查詢、插入、修改、刪除的許可權。首先用以 root 用戶連入

MySQL,然後鍵入以下命令:

mysqlgrant select,insert,update,delete on *.* to

root@localhost identified by ‘mysql’;

或者

grant all privileges on *.* to

root@localhost identified by ‘mysql’;

然後刷新許可權設置。

flush privileges;

2:如果你不想 root 有密碼操作資料庫「mydb」里的數據表,可以再打一個命令將密碼消掉。

grant

select,insert,update,delete on mydb.* to root@localhost identified by

”;

刪除用戶

hadoop@ubuntu:~$ mysql

-u用戶名 -p密碼

mysqldelete from user where user=’用戶名’ and

host=’localhost’;

mysqlflush privileges;

//刪除用戶的資料庫

mysqldrop

database dbname;

資料庫操作

顯示所有的資料庫

mysql show databases;(注意:最後有個

s)

創建資料庫

mysql create database

test;

連接資料庫

mysql use

test;

查看當前使用的資料庫

mysql select

database();

當前資料庫包含的表信息

mysql

show tables; (注意:最後有個 s)

刪除資料庫

mysql drop database

test;

表操作

備註:操作之前使用「use

資料庫名」應連接某個資料庫。

建表

命令:create

table 表名 (欄位名 1 類型 1 [,..欄位名 n 類型

n]);

例子:

mysql create table MyClass(

id int(4) not null

primary key auto_increment,

name char(20) not null,

sex int(4)

not null default ‘0’,

degree double(16,2));

獲取表結構

命令: desc 表名,或者show columns from

表名

例子:

mysql describe MyClass

mysql desc MyClass;

mysql

show columns from MyClass;

刪除表

命令:drop table 表名

例如:刪除表名為

MyClass 的表

mysql drop table MyClass;

插入數據

命令:insert into 表名 [( 欄位名

1[,..欄位名 n ])] values ( 值 1 )[, ( 值 n )]

例子:

mysql insert

into MyClass values(1,’Tom’,96.45),(2,’Joan’,82.99), (2,’Wang’,

96.59);

查詢表中的數據

查詢所有行

mysql

select * from MyClass;

查詢前幾行數據

例如:查看錶 MyClass 中前 2 行數據

mysql

select * from MyClass order by id limit 0,2;

或者

mysql select * from

MyClass limit 0,2;

刪除表中數據

命令:delete from 表名 where 表達式

例如:刪除表

MyClass 中編號為 1 的記錄

mysql delete from MyClass where id=1;

修改表中數據

命令:update 表名 set 欄位=新值,… where

條件

mysql update MyClass set name=’Mary’ where id=1;

在表中增加欄位

命令:alter table 表名 add 欄位 類型

其他;

例如:在表 MyClass 中添加了一個欄位 passtest,類型為 int(4),默認值為 0

mysql alter

table MyClass add passtest int(4) default ‘0’

更改表名

命令:rename table 原表名 to 新表名;

例如:在表

MyClass 名字更改為 YouClass

mysql rename table MyClass to

YouClass;

更新欄位內容

命令:update 表名 set

欄位名 = 新內容

update 表名 set 欄位名 = replace(欄位名, ‘舊內容’, ‘新內容’);

例如:文章前面加入 4

個空格

update article set content=concat(‘ ‘, content);

資料庫導入導出

從資料庫導出資料庫文件

使用「mysqldump」命令

首先進入 DOS

界面,然後進行下面操作。

1)導出所有資料庫

格式:mysqldump -u [資料庫用戶名] -p

-A[備份文件的保存路徑]

2)導出數據和數據結構

格式:mysqldump -u [資料庫用戶名] -p

[要備份的資料庫名稱][備份文件的保存路徑]

舉例:

例 1:將資料庫 mydb 導出到 e:\MySQL\mydb.sql

文件中。

打開開始-運行-輸入「cmd」,進入命令行模式。

c:\ mysqldump -h localhost -u

root -p mydb e:\MySQL\mydb.sql

然後輸入密碼,等待一會導出就成功了,可以到目標文件中檢查是否成功。

2:將資料庫 mydb 中的 mytable 導出到 e:\MySQL\mytable.sql 文件中。

c:\ mysqldump -h

localhost -u root -p mydb mytablee:\MySQL\mytable.sql

例 3:將資料庫 mydb

的結構導出到 e:\MySQL\mydb_stru.sql 文件中。

c:\ mysqldump -h localhost -u root -p

mydb –add-drop-table e:\MySQL\mydb_stru.sql

備註:-h localhost

可以省略,其一般在虛擬主機上用。

3)只導出數據不導出數據結構

格式:

mysqldump -u [資料庫用戶名] -p -t

[要備份的資料庫名稱][備份文件的保存路徑]

4)導出資料庫中的Events

格式:mysqldump -u [資料庫用戶名] -p

-E [資料庫用戶名][備份文件的保存路徑]

5)導出資料庫中的存儲過程和函數

格式:mysqldump -u [資料庫用戶名]

-p -R [資料庫用戶名][備份文件的保存路徑]

從外部文件導入資料庫中

1)使用「source」命令

首先進入「mysql」命令控制台,然後創建資料庫,然後使用該資料庫。最後執行下面操作。

mysqlsource

[備份文件的保存路徑]

2)使用「」符號

首先進入「mysql」命令控制台,然後創建資料庫,然後退出 MySQL,進入 DOS

界面。最後執行下面操作。

mysql -u root –p [備份文件的保存路徑]

MySQL資料庫語句,計算某一列的和用select sum(b) from a就可以了。

下面來補充一些MySql的基本操作命令。

註: 表示參數、[]表示可選項

連接資料庫:mysql mysql -uusername -ppassword;

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

選擇資料庫:mysql use database name;

創建一個資料庫:mysql create database database name [charset charset];

刪除一個資料庫:mysql drop database database name;

修改資料庫名:mysql無法直接修改資料庫名!

顯示所有表:mysql show tables;

刪除一張表:mysql drop table table name;

修改表名:mysql rename table table name to new table name;

清空表:mysql truncate table name;

truncate和delete的區別:truncate相當於刪表再重建一張相同結構的表,操作後得到一張全新表;delete只是刪除數據,而且是按照行來刪除,如果表中有自增型欄位,其影響還在。

查看錶結構:mysql desc table name;

快速建一張相似的表:mysql create table table name like another table;

原創文章,作者:BLO44,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/126125.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BLO44的頭像BLO44
上一篇 2024-09-07 20:20
下一篇 2024-10-03 23:06

相關推薦

  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python3支持多行語句

    Python3是一種高級編程語言,開發人員可以輕鬆地使用該語言編寫簡單到複雜的代碼。其中Python3支持多行語句,方便開發人員編寫複雜的代碼,提高代碼的可讀性和可維護性。 一、使…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝資料庫方案

    本文將介紹在openeuler操作系統中安裝資料庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟體源 sudo…

    編程 2025-04-29
  • Python for循環語句列印九九乘法表

    本篇文章將詳細介紹如何使用Python的for循環語句列印九九乘法表。列印九九乘法表是我們初學Python時經常練習的一項基礎操作,也是編寫Python程序的基本能力之一。 1、基…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL資料庫 在使用Python操作MySQL之前,我們需要先連接MySQL資料庫。在Python中,我…

    編程 2025-04-29
  • Python中while語句和for語句的區別

    while語句和for語句是Python中兩種常見的循環語句,它們都可以用於重複執行一段代碼。然而,它們的語法和適用場景有所不同。本文將從多個方面詳細闡述Python中while語…

    編程 2025-04-29
  • Python中自定義函數必須有return語句

    自定義函數是Python中最常見、最基本也是最重要的語句之一。在Python中,自定義函數必須有明確的返回值,即必須要有return語句。本篇文章將從以下幾個方面對此進行詳細闡述。…

    編程 2025-04-29
  • 資料庫第三範式會有刪除插入異常

    如果沒有正確設計資料庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係資料庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29

發表回復

登錄後才能評論