mysql下光標(biāo)怎么出來 mysql下標(biāo)從幾開始

MySql數(shù)據(jù)庫的存儲(chǔ)過程能返回游標(biāo)么?

不知道m(xù)ysql這個(gè)跟oracle里面,是不是一致的,下面是我學(xué)習(xí)的時(shí)候總結(jié)的

成都創(chuàng)新互聯(lián)公司專注于臺(tái)前網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供臺(tái)前營銷型網(wǎng)站建設(shè),臺(tái)前網(wǎng)站制作、臺(tái)前網(wǎng)頁設(shè)計(jì)、臺(tái)前網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)服務(wù),打造臺(tái)前網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供臺(tái)前網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

如果一個(gè)過程要返回一個(gè)結(jié)果集,那么要引用游標(biāo)來處理這個(gè)結(jié)果集。

create or replace procedure Test

(

varEmpName emp.ename%type

)

As

begin ------會(huì)報(bào)錯(cuò).錯(cuò)誤原因沒有into子句.

select * from emp where ename like '%'||varEmpName||'%';

end;

這個(gè)程序我們無法用into,因?yàn)樵贠racle里面沒有一個(gè)類型去接受一個(gè)結(jié)果集.這個(gè)時(shí)候我們可以聲明游標(biāo)對(duì)象去接受他.

有倆種方法:

一種是聲明系統(tǒng)游標(biāo),一種是聲明自定義游標(biāo),然后后面操作一樣,參數(shù)類型為

in out 或out

(1)聲明個(gè)人系統(tǒng)游標(biāo).(推薦)

create or replace p_temp_procedure

(

cur_arg out sys_refcursor; --方法1

)

begin

open cur_arg for select * from tablename;

end

調(diào)用

declare

cur_calling sys_refcursor;

begin

p_temp_procedure(cur_calling); --這樣這個(gè)游標(biāo)就有值了

for rec_next in cur_calling loop

....

end loop;

end;

(2)在包頭中申明一個(gè)游表類型,然后調(diào)用者申明一個(gè)這個(gè)類型的游標(biāo)變量,傳給返回游標(biāo)的存儲(chǔ)過程 ,存儲(chǔ)過程out這個(gè)結(jié)果集,這種方法很麻煩.游標(biāo)類型不能像索引表一樣使用create or replace type方法來創(chuàng)建,所以只能在包中申明,并且需要使用/來執(zhí)行,后面的存儲(chǔ)過程才認(rèn)這個(gè)游標(biāo)類型.(不推薦,但是建議要知道并且要會(huì)這種方式,畢竟它有它存在的道理)

--定義全局變量

create or replace package pkg_package

as

type type_cursor is ref cursor;

type type_record is record

(

test01 varchar2(32),

test02 varchar2(32),

test03 varchar2(32)

);

end;

/

--創(chuàng)建返回游標(biāo)的存儲(chǔ)過程

create or replace procedure p_temp_procedure

(

cur_out_arg out pkg_package.type_cursor

)

is

begin

open cur_out_arg for select * from test;

end;

/

--調(diào)用

declare

cur_out_arg pkg_package.type_cursor;

rec_arg pkg_package.type_record;

begin

p_temp_procedure(cur_out_arg);

fetch cur_out_arg into rec_arg;

dbms_output.put_line(rec_arg.test01);

dbms_output.put_line(rec_arg.test02);

dbms_output.put_line(rec_arg.test03);

end;

mysql基本語句詳細(xì)教程

看他們網(wǎng)上的,寫得都是千篇一律,同時(shí),好多也寫得不是很好,下面是我自己總結(jié)的有關(guān)mysql的使用細(xì)節(jié),也是我在學(xué)習(xí)過程中的一些記錄吧,希望對(duì)你有點(diǎn)幫助,后面有關(guān)存儲(chǔ)過程等相關(guān)操作還沒有總結(jié)好,下次總結(jié)好了再發(fā)給你吧,呵呵~~~~~

MySql學(xué)習(xí)筆記

MySql概述:MySql是一個(gè)種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),所謂關(guān)聯(lián)數(shù)據(jù)庫就是將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大的倉庫中。這樣就增加了速度與提高了靈活性。并且MySql軟件是一個(gè)開放源碼軟件。

注意,MySql所支持的TimeStamp的最大范圍的問題,在32位機(jī)器上,支持的取值范圍是年份最好不要超過2030年,然后如果在64位的機(jī)器上,年份可以達(dá)到2106年,而對(duì)于date、與datetime這兩種類型,則沒有關(guān)系,都可以表示到9999-12-31,所以這一點(diǎn)得注意下;還有,在安裝MySql的時(shí)候,我們一般都選擇Typical(典型安裝)就可以了,當(dāng)然,如果還有其它用途的話,那最好選擇Complete(完全安裝);在安裝過程中,一般的還會(huì)讓你進(jìn)行服務(wù)器類型的選擇,分別有三種服務(wù)器類型的選擇,(Developer(開發(fā)機(jī))、Server Machine(服務(wù)器)、Dedicated MySql Server Machine(專用MYSQL服務(wù)器)),選擇哪種類型的服務(wù)器,只會(huì)對(duì)配置向?qū)?duì)內(nèi)存等有影響,不然其它方面是沒有什么影響的;所以,我們?nèi)绻情_發(fā)者,選擇開發(fā)機(jī)就可以啦;然后接下來,還會(huì)有數(shù)據(jù)庫使用情況對(duì)話框的選擇,我們只要按照默認(rèn)就可以啦;

連接與斷開服務(wù)器:

連接:在windows命令提示符下輸入類似如下命令集:mysql –h host –u user –p

例如,我在用的時(shí)候輸入的是:mysql –h localhost –u root –p

然后會(huì)提示要你輸入用戶密碼,這個(gè)時(shí)候,如果你有密碼的話,就輸入密碼敲回車,如果沒有密碼,直接敲回車,就可以進(jìn)入到數(shù)據(jù)庫客戶端;連接遠(yuǎn)程主機(jī)上的mysql,可以用下面的命令:mysql –h 159.0.45.1 –u root –p 123

斷開服務(wù)器:在進(jìn)入客戶端后,你可以直接輸入quit然后回車就可以了;

下面就數(shù)據(jù)庫相關(guān)命令進(jìn)行相關(guān)說明

你可以輸入以下命令對(duì)數(shù)據(jù)庫表格或者數(shù)據(jù)庫進(jìn)行相關(guān)操作,在這里就省略了,然后直接進(jìn)行文字說明了;

Select version(),current_date;//從服務(wù)器得到當(dāng)前mysql的版本號(hào)與當(dāng)前日期

Select user(); //得到當(dāng)前數(shù)據(jù)庫的所有用戶

Use databasename; 進(jìn)入到指定的數(shù)據(jù)庫當(dāng)中,然后就可以操作這個(gè)數(shù)據(jù)庫當(dāng)中的表格了

Show databases; //查詢目前數(shù)據(jù)庫中所有的數(shù)據(jù)庫,并且顯示出來;

Create batabase databasename;創(chuàng)建數(shù)據(jù)庫,例如:create database manager;

Show tables; //查看當(dāng)前數(shù)據(jù)庫中的所有表格;

Create table tablename(colums);創(chuàng)建表,并且給表指定相關(guān)列,例如:create table pet(name varchar(20),owner varchar(20),species varchar(20),sex char(1),birth date,death date);

Describe tablename;將表當(dāng)中的所有信息詳細(xì)顯示出來,例如: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表當(dāng)中查詢出所有的記錄,顯示出來;

Delete from pet where id=1;刪除ID為1的那一條記錄;

Update pet set birth=’2001-1-3’ where name=’Bowser’;更新name為Bowser的記錄當(dāng)中的birth字段的值;

Select distinct owner from pet;從pet表中選擇出owner字段的值唯一的行,如果有多行記錄這個(gè)字段的值相同,則只顯示最后一次出現(xiàn)這一值的一行記錄;

有關(guān)日期計(jì)算:

Select name,birth,curdate(),(year(curdate())-year(birth)) as age from pet;

此處,year()函數(shù)用于提取對(duì)應(yīng)字段的年份,當(dāng)然類似的還有month(),day()等;

在mysql當(dāng)中,sql語句可以使用like查詢,可以用”_”配任何單個(gè)字符,用”%”配任意數(shù)目字符,并且SQL模式默認(rèn)是忽略大小寫,例如:select * from pet where name like ‘%fy’;

當(dāng)然也可以用正則表達(dá)式模式進(jìn)行配。

同時(shí)在sql當(dāng)中,也要注意分組函數(shù)、排序函數(shù)、統(tǒng)計(jì)函數(shù)等相關(guān)用法,在這里只列舉一二;

Select species,count(*) from pet group by speceis;

Select * from pet order by birth desc;

查詢最大值的相關(guān)操作:

Select max(age) from pet;

取前多少項(xiàng)記錄,這個(gè)主要用于分頁查詢操作當(dāng)中,

Select * from pet order by birth desc limit 3;取前三條記錄,

Select * from pet order by birth desc limit 0,3;這個(gè)可以用于分頁查詢,limit后面的第一個(gè)參數(shù),是起始位置,第二個(gè)參數(shù)是取記錄條數(shù);

有關(guān)創(chuàng)建表格自增長字段的寫法:

Create table person(id int(4) not null auto_increment,name char(20) not null,primary key (id));

修改表操作:

向表中增加字段:注意,在這個(gè)地方,如果是增加多個(gè)字段的時(shí)候,就要用括號(hào)括起來,不然會(huì)有問題,如果是單個(gè)字段的話,不用括號(hào)也沒事;

Alter table test add(address varchar(50) not null default ‘xm’,email varchar(20) not null);

將表中某個(gè)字段的名字修改或者修改其對(duì)應(yīng)的相關(guān)屬性的時(shí)候,要用change對(duì)其進(jìn)行操作;

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;//刪除單個(gè)字段

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;

向表中插入記錄:注意,當(dāng)插入表中的記錄并不是所有的字段的時(shí)候,應(yīng)該要在前面列出字段名稱才行,不然會(huì)報(bào)錯(cuò);

Insert into test(name) values(‘ltx’);

Insert into test values(1,’ltx’);

也可以向表中同時(shí)插入多列值,如:

Insert into test(name) values(‘ltx’),(‘hhy’),(‘xf’);

刪除表中記錄:

Delete from test;//刪除表中所有記錄;

Delete from test where id=1;//刪除表中特定條件下的記錄;

當(dāng)要從一個(gè)表或者多個(gè)表當(dāng)中查詢出一些字段然后把這些字段又要插入到另一個(gè)表當(dāng)中的時(shí)候,可以用insert …..select語法;

Insert into testt(name) (select name from test where id=4);

從文件中讀取行插入數(shù)據(jù)表中,可以用Load data infile語句;

Load data infile ‘test.txt’ into table test;

可以用Describe語法進(jìn)行獲取有關(guān)列的信息;

Describe test;//可以查看test表的所有信息,包括對(duì)應(yīng)列字段的數(shù)據(jù)類型等;

MySql事務(wù)處理相關(guān)語法;

開始一項(xiàng)新的事務(wù):start transaction或者begin transaction

提交事務(wù):commit

事務(wù)回滾:rollback

set autocommit true|false 語句可以禁用或啟用默認(rèn)的autocommit模式,只可用于當(dāng)前連接;

例子:

Start transaction;

Update person set name=’LJB’ where id=1;

Commit | rollback;

數(shù)據(jù)庫管理語句

修改用戶密碼:以root用戶為例,則可以寫成下面的;mysql –u root –p 舊密碼 –password 新密碼

Mysql –u root –password 123;//將root用戶的密碼修改成123,由于root用戶開始的時(shí)候,是沒有密碼的,所以-p舊密碼就省略了;

例如修改一個(gè)有密碼的用戶密碼:mysql –u ltx –p 123 –password 456;

增加一個(gè)用戶test1,密碼為abc,讓他可以在任何時(shí)候主機(jī)上登陸,并對(duì)所有數(shù)據(jù)庫有查詢、插入、修改、刪除的權(quán)限。

Grant select,insert,update,delete on *.* to test1@”%” identified by ‘a(chǎn)bc’;

增加一個(gè)test2用戶,密碼為abc,讓他只可以在localhost上登陸,并且可以對(duì)數(shù)據(jù)庫進(jìn)行查詢、插入、修改、刪除操作;

Grant select,insert,update,delete on mydb.* to test2@localhost identified by ‘a(chǎn)bc’;

如果不想讓用戶test2有密碼,可以再輸入以下命令消掉密碼:

Grant select,insert,update,delete on mydb.* to test2@localhost identified by “”;

備份數(shù)據(jù)庫常用命令:mysqldump –h host –u username –p dbname保存路徑與文件名

然后回車后,會(huì)讓你輸入用戶密碼,輸入密碼后,再回車就OK啦;

Mysqldump –hlocalhost –uroot –p test E:\db\test.sql

這一命令具體解釋下:

這個(gè)命令就是備份test數(shù)據(jù)庫,并且將備份的內(nèi)容存儲(chǔ)為test.sql文件,并且保存在E:\db下面;

命令當(dāng)中-p 前面的test是數(shù)據(jù)庫名,然后在數(shù)據(jù)庫名后面要跟上一個(gè)””,然后接下來,就是寫要保存的位置與保存文件的文件名;

將備份好的數(shù)據(jù)庫導(dǎo)入到數(shù)據(jù)庫當(dāng)中去:也就是運(yùn)行.sql文件將數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)庫當(dāng)中去-

首先你得創(chuàng)建數(shù)據(jù)庫,然后運(yùn)行如下命令:mysql –hlocalhost –uroot –p linuxE:\db\test.sql然后回車,再輸入密碼就可以啦;

解釋下上面的命令:linux是就要導(dǎo)入的數(shù)據(jù)庫名字,然后后面要緊跟著“”符號(hào),然后后面就是要導(dǎo)入的數(shù)據(jù)庫文件;

將數(shù)據(jù)庫導(dǎo)出保存成XML文件、從XML文件導(dǎo)入數(shù)據(jù)到數(shù)據(jù)庫:

導(dǎo)出表中數(shù)據(jù):mysql –X –h hostName –u userName –p Pwd –e “use DatabaseName;sql;” xml文件名

或者用另外一種方式也行:mysqldump –xml –h hostName –u userName –p pwd dbName tableName //這一種只用于顯示在當(dāng)前的mysql客戶端,不保存到文件當(dāng)中;

相關(guān)說明:-X代表的是文件的格式是XML,然后-e一寫不能掉,還有就是要用雙引號(hào)將要操作的語句括起來;單引號(hào)不行;

例如:mysql –X –hlocalhost –uroot –p –e “use test;select * from pet;”E:\db\out.xml

從XML文件導(dǎo)入數(shù)據(jù)到數(shù)據(jù)庫:

Insert into tableName values(1,load_file(‘filepath’));

例如:insert into pet values(1,load_file(“E:\db\out.xml”));

查看數(shù)據(jù)庫狀態(tài)與查詢進(jìn)程:

Show status;//查看狀態(tài)

Show processlist;//查看進(jìn)程

更改用戶名,用以下命令:

Update set user=”新名字” where user=”舊用戶名”;

給數(shù)據(jù)庫用戶設(shè)置管理員權(quán)限:

Mysqladmin –h host –u username –p pwd;

以root用戶為例;

Mysqladmin –h localhost –u root –p 123;

存儲(chǔ)過程與函數(shù)

存儲(chǔ)程序和函數(shù)分別是用create procedure和create function語句,一個(gè)程序要么是一個(gè)程序要么是一個(gè)函數(shù),使用call語句來調(diào)用程序,并且程序只能用輸出變量傳回值;

要想在MySql5.1中創(chuàng)建子程序,必須具有create routine權(quán)限,并且alter routine和execute權(quán)限被自動(dòng)授予它的創(chuàng)建者;

創(chuàng)建存儲(chǔ)過程:

首先聲明分隔符,所謂分隔符是指你通知mysql客戶端你已經(jīng)輸入一個(gè)sql語句的字符或字符串符號(hào),在這里我們就以“//”為分隔符;

Delimiter 分隔符\

如:delimiter //

再創(chuàng)建存儲(chǔ)過程:

Create procedure 存儲(chǔ)過程名 ( )

聲明存儲(chǔ)過程開始:

begin

然后開始寫存儲(chǔ)過程體:

Select * from pet;

結(jié)束存儲(chǔ)過程:

End;//

剛剛的例子全部寫出來,完整的代碼就是:

Delimiter //

Create procedure spt () //注意,這個(gè)地方,存儲(chǔ)過程名與括號(hào)之間要有個(gè)空格

Begin

Select * from pet;

End;//到這里,整個(gè)存儲(chǔ)過程就算寫完啦

執(zhí)行存儲(chǔ)過程:

Call 存儲(chǔ)過程名 ();//

如,我們執(zhí)行剛剛創(chuàng)建的存儲(chǔ)過程,就是:

Call spt ();//

需要說明的是存儲(chǔ)過程名后面一定要加個(gè)空格,而后面那個(gè)括號(hào),則是用于傳送參數(shù)的參數(shù)列表;另外,我們創(chuàng)建存儲(chǔ)過程完成后,也只是創(chuàng)建了,但是只有調(diào)用call 存儲(chǔ)過程名 ();//后才算執(zhí)行完畢,才能看到存儲(chǔ)過程的結(jié)果;

怎么啟動(dòng)mysql數(shù)據(jù)庫服務(wù)器

1、在MySQL數(shù)據(jù)庫安裝時(shí)選擇過MySQL服務(wù)器隨系統(tǒng)啟動(dòng),但如果沒有選擇,也沒關(guān)系,可以在可以在Windows服務(wù)管理器啟動(dòng),具體在開始菜單搜索services.msc,

2、單擊出現(xiàn)如下圖窗口,下滑鼠標(biāo)找到MySQL57:

3、右擊后點(diǎn)擊啟動(dòng),MySQL57旁邊狀態(tài)列顯示“已啟動(dòng)”字樣,說明啟動(dòng)成功。如下圖:

二、登錄MySQL數(shù)據(jù)庫

4、用系統(tǒng)命令行工具登錄,點(diǎn)擊開始菜單,找到附件,點(diǎn)擊命令提示符。

5、在命令行中輸入cd加空格然后粘貼bin路徑:cdc:\ProgramFiles(x86)\MySQL\MySQLServer5.7\bin回車命令行定位到c:\ProgramFiles(x86)\MySQL\MySQLServer5.7\bin,在后面輸入mysql_hlocalhost_uroot_p(這些都是安裝時(shí)設(shè)置好的)敲回車,

6、出現(xiàn)Enterpassword:在后面輸入安裝時(shí)設(shè)置的登錄密碼,按回車后出現(xiàn)WelcometotheMySQLmonitor.說明登陸成功。如下圖:

7、用安裝時(shí)配置好的命令行工具登錄,在開始菜單,點(diǎn)擊MySQL5.7CommandLineClient或下面搜索程序框中輸入comm選擇MySQL5.7CommandLineClient啟動(dòng)DOS命令窗口。如下圖:

8、在窗口Enterpassword:處輸入安裝時(shí)設(shè)置的MySQL數(shù)據(jù)庫客戶端登陸密碼,回車,如果出現(xiàn)WelcomtotheMySQLmonitor.等字眼表示登陸服務(wù)器成功,可以在閃爍光標(biāo)處輸入SQL可執(zhí)行語言:如下圖:

分享標(biāo)題:mysql下光標(biāo)怎么出來 mysql下標(biāo)從幾開始
網(wǎng)頁鏈接:http://www.bm7419.com/article38/ddcspsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈、網(wǎng)站改版網(wǎng)站建設(shè)、網(wǎng)站策劃、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站