本文目錄一覽:
15個MySQL常用基本SQL語句
在學習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語句。
零基礎如何學習數據分析?查看下方專欄。
mysql基本語句詳細教程
看他們網上的,寫得都是千篇一律,同時,好多也寫得不是很好,下面是我自己總結的有關mysql的使用細節,也是我在學習過程中的一些記錄吧,希望對你有點幫助,後面有關存儲過程等相關操作還沒有總結好,下次總結好了再發給你吧,呵呵~~~~~
MySql學習筆記
MySql概述:MySql是一個種關聯資料庫管理系統,所謂關聯資料庫就是將數據保存在不同的表中,而不是將所有數據放在一個大的倉庫中。這樣就增加了速度與提高了靈活性。並且MySql軟體是一個開放源碼軟體。
注意,MySql所支持的TimeStamp的最大範圍的問題,在32位機器上,支持的取值範圍是年份最好不要超過2030年,然後如果在64位的機器上,年份可以達到2106年,而對於date、與datetime這兩種類型,則沒有關係,都可以表示到9999-12-31,所以這一點得注意下;還有,在安裝MySql的時候,我們一般都選擇Typical(典型安裝)就可以了,當然,如果還有其它用途的話,那最好選擇Complete(完全安裝);在安裝過程中,一般的還會讓你進行伺服器類型的選擇,分別有三種伺服器類型的選擇,(Developer(開發機)、Server Machine(伺服器)、Dedicated MySql Server Machine(專用MYSQL伺服器)),選擇哪種類型的伺服器,只會對配置嚮導對內存等有影響,不然其它方面是沒有什麼影響的;所以,我們如果是開發者,選擇開發機就可以啦;然後接下來,還會有資料庫使用情況對話框的選擇,我們只要按照默認就可以啦;
連接與斷開伺服器:
連接:在windows命令提示符下輸入類似如下命令集:mysql –h host –u user –p
例如,我在用的時候輸入的是:mysql –h localhost –u root –p
然後會提示要你輸入用戶密碼,這個時候,如果你有密碼的話,就輸入密碼敲回車,如果沒有密碼,直接敲回車,就可以進入到資料庫客戶端;連接遠程主機上的mysql,可以用下面的命令:mysql –h 159.0.45.1 –u root –p 123
斷開伺服器:在進入客戶端後,你可以直接輸入quit然後回車就可以了;
下面就資料庫相關命令進行相關說明
你可以輸入以下命令對資料庫表格或者資料庫進行相關操作,在這裡就省略了,然後直接進行文字說明了;
Select version(),current_date;//從伺服器得到當前mysql的版本號與當前日期
Select user(); //得到當前資料庫的所有用戶
Use databasename; 進入到指定的資料庫當中,然後就可以操作這個資料庫當中的表格了
Show databases; //查詢目前資料庫中所有的資料庫,並且顯示出來;
Create batabase databasename;創建資料庫,例如:create database manager;
Show tables; //查看當前資料庫中的所有表格;
Create table tablename(colums);創建表,並且給表指定相關列,例如:create table pet(name varchar(20),owner varchar(20),species varchar(20),sex char(1),birth date,death date);
Describe tablename;將表當中的所有信息詳細顯示出來,例如:describe pet;
可以用命令一次插入多條記錄,例如:
Insert into pet values(『Puffball』,』Diane』,』hamster』,』f』,』1993-12-3』,null),( 『Puffball』,』Diane』,』hamster』,』f』,』1993-12-3』,now());
Select * from pet; 從pet表當中查詢出所有的記錄,顯示出來;
Delete from pet where id=1;刪除ID為1的那一條記錄;
Update pet set birth=』2001-1-3』 where name=』Bowser』;更新name為Bowser的記錄當中的birth欄位的值;
Select distinct owner from pet;從pet表中選擇出owner欄位的值唯一的行,如果有多行記錄這個欄位的值相同,則只顯示最後一次出現這一值的一行記錄;
有關日期計算:
Select name,birth,curdate(),(year(curdate())-year(birth)) as age from pet;
此處,year()函數用於提取對應欄位的年份,當然類似的還有month(),day()等;
在mysql當中,sql語句可以使用like查詢,可以用」_」配任何單個字元,用」%」配任意數目字元,並且SQL模式默認是忽略大小寫,例如:select * from pet where name like 『%fy』;
當然也可以用正則表達式模式進行配。
同時在sql當中,也要注意分組函數、排序函數、統計函數等相關用法,在這裡只列舉一二;
Select species,count(*) from pet group by speceis;
Select * from pet order by birth desc;
查詢最大值的相關操作:
Select max(age) from pet;
取前多少項記錄,這個主要用於分頁查詢操作當中,
Select * from pet order by birth desc limit 3;取前三條記錄,
Select * from pet order by birth desc limit 0,3;這個可以用於分頁查詢,limit後面的第一個參數,是起始位置,第二個參數是取記錄條數;
有關創建表格自增長欄位的寫法:
Create table person(id int(4) not null auto_increment,name char(20) not null,primary key (id));
修改表操作:
向表中增加欄位:注意,在這個地方,如果是增加多個欄位的時候,就要用括弧括起來,不然會有問題,如果是單個欄位的話,不用括弧也沒事;
Alter table test add(address varchar(50) not null default 『xm』,email varchar(20) not null);
將表中某個欄位的名字修改或者修改其對應的相關屬性的時候,要用change對其進行操作;
Alter table test change email email varchar(20) not null default 『zz』;//不修改欄位名
Alter table test change email Email varchar(30) not null;//修改欄位名稱
刪除表中欄位:
Alter table test drop email;//刪除單個欄位
Alter table test drop address,drop email;//刪除多列
可以用Drop來取消主鍵與外鍵等,例如:
Alter table test drop foreign key fk_symbol;
刪除索引:
Drop index index_name on table_name;
例如:drop index t on test;
向表中插入記錄:注意,當插入表中的記錄並不是所有的欄位的時候,應該要在前面列出欄位名稱才行,不然會報錯;
Insert into test(name) values(『ltx』);
Insert into test values(1,』ltx』);
也可以向表中同時插入多列值,如:
Insert into test(name) values(『ltx』),(『hhy』),(『xf』);
刪除表中記錄:
Delete from test;//刪除表中所有記錄;
Delete from test where id=1;//刪除表中特定條件下的記錄;
當要從一個表或者多個表當中查詢出一些欄位然後把這些欄位又要插入到另一個表當中的時候,可以用insert …..select語法;
Insert into testt(name) (select name from test where id=4);
從文件中讀取行插入數據表中,可以用Load data infile語句;
Load data infile 『test.txt』 into table test;
可以用Describe語法進行獲取有關列的信息;
Describe test;//可以查看test表的所有信息,包括對應列欄位的數據類型等;
MySql事務處理相關語法;
開始一項新的事務:start transaction或者begin transaction
提交事務:commit
事務回滾:rollback
set autocommit true|false 語句可以禁用或啟用默認的autocommit模式,只可用於當前連接;
例子:
Start transaction;
Update person set name=』LJB』 where id=1;
Commit | rollback;
資料庫管理語句
修改用戶密碼:以root用戶為例,則可以寫成下面的;mysql –u root –p 舊密碼 –password 新密碼
Mysql –u root –password 123;//將root用戶的密碼修改成123,由於root用戶開始的時候,是沒有密碼的,所以-p舊密碼就省略了;
例如修改一個有密碼的用戶密碼:mysql –u ltx –p 123 –password 456;
增加一個用戶test1,密碼為abc,讓他可以在任何時候主機上登陸,並對所有資料庫有查詢、插入、修改、刪除的許可權。
Grant select,insert,update,delete on *.* to test1@」%」 identified by 『abc』;
增加一個test2用戶,密碼為abc,讓他只可以在localhost上登陸,並且可以對資料庫進行查詢、插入、修改、刪除操作;
Grant select,insert,update,delete on mydb.* to test2@localhost identified by 『abc』;
如果不想讓用戶test2有密碼,可以再輸入以下命令消掉密碼:
Grant select,insert,update,delete on mydb.* to test2@localhost identified by 「」;
備份資料庫常用命令:mysqldump –h host –u username –p dbname保存路徑與文件名
然後回車後,會讓你輸入用戶密碼,輸入密碼後,再回車就OK啦;
Mysqldump –hlocalhost –uroot –p test E:\db\test.sql
這一命令具體解釋下:
這個命令就是備份test資料庫,並且將備份的內容存儲為test.sql文件,並且保存在E:\db下面;
命令當中-p 前面的test是資料庫名,然後在資料庫名後面要跟上一個」」,然後接下來,就是寫要保存的位置與保存文件的文件名;
將備份好的資料庫導入到資料庫當中去:也就是運行.sql文件將資料庫導入資料庫當中去-
首先你得創建資料庫,然後運行如下命令:mysql –hlocalhost –uroot –p linuxE:\db\test.sql然後回車,再輸入密碼就可以啦;
解釋下上面的命令:linux是就要導入的資料庫名字,然後後面要緊跟著「」符號,然後後面就是要導入的資料庫文件;
將資料庫導出保存成XML文件、從XML文件導入數據到資料庫:
導出表中數據:mysql –X –h hostName –u userName –p Pwd –e 「use DatabaseName;sql;」 xml文件名
或者用另外一種方式也行:mysqldump –xml –h hostName –u userName –p pwd dbName tableName //這一種只用於顯示在當前的mysql客戶端,不保存到文件當中;
相關說明:-X代表的是文件的格式是XML,然後-e一寫不能掉,還有就是要用雙引號將要操作的語句括起來;單引號不行;
例如:mysql –X –hlocalhost –uroot –p –e 「use test;select * from pet;」E:\db\out.xml
從XML文件導入數據到資料庫:
Insert into tableName values(1,load_file(『filepath』));
例如:insert into pet values(1,load_file(「E:\db\out.xml」));
查看資料庫狀態與查詢進程:
Show status;//查看狀態
Show processlist;//查看進程
更改用戶名,用以下命令:
Update set user=」新名字」 where user=」舊用戶名」;
給資料庫用戶設置管理員許可權:
Mysqladmin –h host –u username –p pwd;
以root用戶為例;
Mysqladmin –h localhost –u root –p 123;
存儲過程與函數
存儲程序和函數分別是用create procedure和create function語句,一個程序要麼是一個程序要麼是一個函數,使用call語句來調用程序,並且程序只能用輸出變數傳回值;
要想在MySql5.1中創建子程序,必須具有create routine許可權,並且alter routine和execute許可權被自動授予它的創建者;
創建存儲過程:
首先聲明分隔符,所謂分隔符是指你通知mysql客戶端你已經輸入一個sql語句的字元或字元串符號,在這裡我們就以「//」為分隔符;
Delimiter 分隔符\
如:delimiter //
再創建存儲過程:
Create procedure 存儲過程名 ( )
聲明存儲過程開始:
begin
然後開始寫存儲過程體:
Select * from pet;
結束存儲過程:
End;//
剛剛的例子全部寫出來,完整的代碼就是:
Delimiter //
Create procedure spt () //注意,這個地方,存儲過程名與括弧之間要有個空格
Begin
Select * from pet;
End;//到這裡,整個存儲過程就算寫完啦
執行存儲過程:
Call 存儲過程名 ();//
如,我們執行剛剛創建的存儲過程,就是:
Call spt ();//
需要說明的是存儲過程名後面一定要加個空格,而後面那個括弧,則是用於傳送參數的參數列表;另外,我們創建存儲過程完成後,也只是創建了,但是只有調用call 存儲過程名 ();//後才算執行完畢,才能看到存儲過程的結果;
MySql常用操作SQL語句匯總
MySQL的常見操作在這裡先做一下總結,已經整合到代碼裡面,經過檢驗無誤。
複製代碼
代碼如下:
/*創建一個資料庫*/
create
database
xuning_test;
/*說明當時使用資料庫對象*/
use
xuning_test;
/*向資料庫中添加表並且定義表的結構*/
create
table
person(
id
int
not
null,
name
varchar(16)
not
null,
sex
varchar(16)
not
null,
age
int
not
null,
address
varchar(128)
not
null,
remark
varchar(512)
not
null
);
/*向資料庫的表中插入數據*/
insert
into
person
value
(1,’name_1′,’men’,99,’beijing’,’This
is
a
frindsheep
boy’),
(2,’name_2′,’men’,88,’shanghai’,’ok
great’),
(1,’name_3′,’man’,77,’guangzhou’,’This
is
lickly’),
(1,’name_4′,’men’,66,’beijing’,’This
is
a
frindsheep
boy’),
(1,’name_5′,’men’,55,’beijing’,’you
dont
going
to
shool’),
(1,’name_6′,’man’,44,’beijing’,’This
is
a
frindsheep
boy’),
(1,’name_7′,’men’,33,’beijing’,’This
is
a
frindsheep
boy’),
(1,’name_8′,’man’,22,’beijing’,”),
(1,’name_9′,’men’,11,’beijing’,’This
is
a
frindsheep
boy’)
;
/*查詢時否成功插入*/
select
*
from
person;
/*下面是多種查詢方式*/
/*根據列的名稱屬性值*/
select
name
from
person;
/*添加條件-根據性別*/
select
name
from
person
where
sex
=
‘men’;
/*也可以用比較符作為條件–一定逗號隔開*/
select
name,address
from
person
where
age
50;
/*看做對象去使用資料庫和表的關係=—雙表關聯–對象關係一定要明確*/
select
xuning_test.person.name,
xuning_test.person.id,
xuning_test.person.age,
xuning_test.person.address
from
xuning_test.person,
test1.test_xuning
where
xuning_test.person.id
=
test1.test_xuning.id
;
/*使用表的別名進行查詢*/
use
xuning_test;
select
c.name,sex
from
person
as
c
where
c.age
40
and
c.address=’beijing’;
sql server 資料庫和 mysql資料庫主要區別的sql語句有哪些啊?
轉:
1. MySQL支持enum和set類型,SQL Server不支持;
2. MySQL不支持nchar、nvarchar、ntext類型;
3. MySQL資料庫的遞增語句是AUTO_INCREMENT,而MS SQL是identity(1,1);
4. MS SQL默認到處表創建語句的默認值表示是((0)),而在MySQL裡面是不允許帶兩括弧的;
5. MySQL需要為表指定存儲類型;
6. MS SQL識別符是[],[type]表示他區別於關鍵字,但是MySQL卻是 `,也就是按鍵1左邊的那個符號;
7. MS SQL支持getdate()方法獲取當前時間日期,但是MySQL裡面可以分日期類型和時間類型,獲取當前日期是cur_date(),當前完整時間是 now()函數;
8. MS SQL不支持replace into語句,但是在最新的SQL Server 2008裡面,也支持merge語法;
9. MySQL資料庫支持insert into table1 set t1 = 『』, t2 = 『』 ,但是MS SQL不支持這樣寫;
10. MySQL支持insert into tabl1 values (1,1), (1,1), (1,1), (1,1), (1,1), (1,1), (1,1)
11. MS SQL不支持limit語句,是非常遺憾的,只能用top 取代limt 0,N,row_number() over()函數取代limit N,M;
12. MySQL在創建表時要為每個表指定一個存儲引擎類型,而MS SQL只支持一種存儲引擎;
13. MySQL不支持默認值為當前時間的datetime類型(MS SQL很容易做到),在MySQL裡面是用timestamp類型;
14. MS SQL裡面檢查是否有這個表再刪除,需要這樣:
if exists (select * from dbo.sysobjects where id = object_id(N’uc_newpm’) and OBJECTPROPERTY(id,N’IsUserTable’)=1)
但是在MySQL裡面只需要 DROP TABLE IF EXISTS cdb_forums;
15. MySQL支持無符號型的整數,那麼比不支持無符號型的MS SQL就能多出一倍的最大數存儲;
16. MySQL不支持在MS SQL裡面使用非常方便的varchar(max)類型,這個類型在MS SQL裡面既可做一般數據存儲,也可以做blob數據存儲;
17. MySQL資料庫創建非聚集索引只需要在創建表的時候指定為key就行,比如:KEY displayorder (fid,displayorder)
在MS SQL裡面必須要:
create unique nonclustered index index_uc_protectedmembers_username_appid on dbo.uc_protectedmembers(username asc,appid asc)
18. MySQL text欄位類型不允許有默認值;
19. MySQL的一個表的總共欄位長度不超過65XXX。
20. 一個很表面的區別就是MySQL的安裝特別簡單,而且文件大小才110M(非安裝版),相比微軟這個龐然大物,安裝進度來說簡直就是…..
21. MySQL的管理工具有幾個比較好的,MySQL_front和官方那個套件,不過都沒有SSMS的使用方便,這是MySQL很大的一個缺點。
22. MySQL的存儲過程只是出現在最新的版本中,穩定性和性能可能不如MS SQL。
23. 同樣的負載壓力,MySQL要消耗更少的CPU和內存,MS SQL的確是很耗資源;
24. php連接MySQL資料庫和MS SQL的方式都差不多,只需要將函數的MySQL替換成MS SQL即可。
25. MySQL支持 date,time,year類型,MS SQL到2008才支持date和time。
原創文章,作者:UGKOV,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/318008.html