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-hant/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

發表回復

登錄後才能評論