mysql sql中流程控制有for循環嗎
delimiter $$
mysql>
mysql> CREATE PROCEDURE myProc() //創建while循環的存儲過程 if分支語句示例
-> BEGIN
->
-> DECLARE i int;
-> SET i=1;
-> loop1: WHILE i IF MOD(i,2)0 THEN /*Even number - try again*/
-> SELECT CONCAT(i," is an odd number");
-> END IF;
-> SET i=i+1;
-> END WHILE loop1;
-> END$$
Query OK, 0 rows affected (0.00 sec)
這種也可以
在sql server中循環語句 for要怎么使用
sql server里有循環語句,在sqlserver 數據庫中,while循環語句是最常用的語句之一,for指定次數用的很少。
比如:SQL循環語句 declare @i int set @i=1 while @i<30 begin insert into test (userid) values(@i) set @i=@i+1 endwhile 條件 begin 執行操作 set @i=@i+1 endWHILE 設置重復執行 SQL 語句或語句塊的條件,只要指定的條件為真,就重復執行語句,可以使用 BREAK 和 CONTINUE 關鍵字在循環內部控制 WHILE 循環中語句的執行。 語法 WHILE Boolean_expression { sql_statement | statement_block } [ BREAK ] { sql_statement | statement_block } [ CONTINUE ] 參數 Boolean_expression 返回 TRUE 或 FALSE 的表達式。
如果布爾表達式中含有 SELECT 語句,必須用圓括號將 SELECT 語句括起來。 {sql_statement | statement_block} Transact-SQL 語句或用語句塊定義的語句分組,若要定義語句塊,請使用控制流關鍵字 BEGIN 和 END。
BREAK。
mysql存儲過程里怎么循環一張表
給你一個 參考,自己套著 試吧--存儲過程名和參數,參數中in表示傳入參數,out標示傳出參數,inout表示傳入傳出參數create procedure p_procedurecode(in sumdate varchar(10)) begin declare v_sql varchar(500); --需要執行的SQL語句 declare sym varchar(6); declare var1 varchar(20); declare var2 varchar(70); declare var3 integer; --定義游標遍歷時,作為判斷是否遍歷完全部記錄的標記 declare no_more_departments integer DEFAULT 0; --定義游標名字為C_RESULT DECLARE C_RESULT CURSOR FOR SELECT barcode,barname,barnum FROM tmp_table; --聲明當游標遍歷完全部記錄后將標志變量置成某個值 DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_departments=1; set sym=substring(sumdate,1,6); --截取字符串,并將其賦值給一個遍歷 --連接字符串構成完整SQL語句,動態SQL執行后的結果記錄集,在MySQL中無法獲取,因此需要轉變思路將其放置到一個臨時表中(注意代碼中的寫法)。
一般寫法如下: -- 'Create TEMPORARY Table 表名(Select的查詢語句); set v_sql= concat('Create TEMPORARY Table tmp_table(select aa as aacode,bb as aaname,count(cc) as ccnum from h',sym,' where substring(dd,1,8)=''',sumdate,''' group by aa,bb)'); set @v_sql=v_sql; --注意很重要,將連成成的字符串賦值給一個變量(可以之前沒有定義,但要以@開頭) prepare stmt from @v_sql; --預處理需要執行的動態SQL,其中stmt是一個變量 EXECUTE stmt; --執行SQL語句 deallocate prepare stmt; --釋放掉預處理段 OPEN C_RESULT; --打開之前定義的游標 REPEAT --循環語句的關鍵詞 FETCH C_RESULT INTO VAR1, VAR2, VAR3; --取出每條記錄并賦值給相關變量,注意順序 --執行查詢語句,并將獲得的值付給一個變量 @oldaacode(注意如果以@開頭的變量可以不用通過declare語句事先聲明) select @oldaacode:=vcaaCode from T_sum where vcaaCode=var1 and dtDate=sumdate; if @oldaacode=var1 then --判斷 update T_sum set iNum=var3 where vcaaCode=var1 and dtDate=sumdate; else insert into T_sum(vcaaCode,vcaaName,iNum,dtDate) values(var1,var2,var3,sumdate); end if; UNTIL no_more_departments END REPEAT; --循環語句結束 CLOSE C_RESULT; --關閉游標 DROP TEMPORARY TABLE tmp_table; --刪除臨時表end;。
mysql基本語句詳細教程怎么辦
"看他們網絡(互聯網)上的,寫得都是千篇一律,同時,好多也寫得不是很好,下邊是我自己總結的有關mysql的用細節,也是我在學習過程中的有些記錄吧,期望對你有點幫助,后面有關存儲過程等相關操作還木有總結好,下次總結好了再發給你吧,呵呵~~~~~MySql學習筆記MySql概述:MySql是1個種關聯數據庫管理系統(System),所謂關聯數據庫就是將數據保存在不一樣的表中,而不是將全部數據放在1個大的倉庫中。
這樣就增加了速度與提高了靈活性。并且MySql軟件是1個開放源碼軟件。
注意,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之后會提醒要你輸入用戶密碼(PassWORD),這個時候,假如你有密碼(PassWORD)的話,就輸入密碼(PassWORD)敲回車,假如木有密碼(PassWORD),直接敲回車,就可以進到數據庫客戶端;連接遠程主機上的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后面的第1個參數,是起始位置,第二個參數是取記錄條數;有關創建表格自增長字段的寫法: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);將表中某個字段的名字修改或修改其對應的相關。
在mysql中插入一條記錄100次,如何寫循環語句呢
這個aa就是你insert的id值.這個語句是針對當前線程的,如果別人也insert了內容,互相不會干擾.可以安全的使用你第一次執行insert后,再立刻執行一條“select last_insert_id() as aa"。
1.如果你覺得用,select max(id) from 表名稱,會和別的人產生沖突,你可以select idfrom, 表名稱where ,userid=你的id,order by insertDate desc limit 1。 2.有用戶寫記錄的表,userid這個域是應該有的,插入或者更新時間也是有的,按照時間順序倒排以下即可。
3.如果userid和時間沒有的話,個人覺得這個表的設計就不太。
求sql循環語句
lz是不是不理解數據庫查詢的意義
select本身就是循環的過程
直接
select A1+A2+A3 from A
就行了
--------------------------
你有什么其它操作,很難有用查詢寫不出的事,你提出來看看
===========================
這個需要循環么?
select * into AAA from openrowset
('SQLOLEDB','server=*;uid=sa;pwd=xxx;database=B1'
, 'select * from AAA ')
INSERT INTO BBB select * from AAA
或者直接
INSERT INTO BBB
select * from openrowset
('SQLOLEDB','server=*;uid=sa;pwd=xxx;database=B1'
, 'select * from AAA ')
不就行了
需要循環么?
轉載請注明出處華閱文章網 » mysql循環語句for