標籤:使用 ar 時間 new sql ad mysql ef
1.預存程序的文法各式
eg:
DELIMITER $$
CREATE PROCEDURE test_p_add9
(
p_name VARCHAR(100),
p_test VARCHAR(100),
p_age INT,
OUT o_newid INT
)
BEGIN
INSERT INTO table_test (f_name,f_test,f_age,f_date) VALUES (p_name,p_test,p_age,NOW());
SET o_newid=LAST_INSERT_ID();
END$$
DELIMITER ;
/*
DELIMITER 其實就是告訴mysql解譯器,該段命令是否已經結束了,mysql是否可以執行了。
預設情況下,delimiter是分號;。在命令列用戶端中,如果有一行命令以分號結束,
那麼斷行符號後,mysql將會執行該命令。如輸入下面的語句
select * from test_table;
然後斷行符號,那麼MySQL將立即執行該語句。
但有時候,不希望MySQL這麼做。在為可能輸入較多的語句,且語句中包含有分號。
*/
注意點:
a.每句話後邊都要加分號。
b.預存程序參數不需要加@
c.使用call 調用預存程序的時候 參數 需要加@
例如:
SET @s=0;
CALL test_p_add9 (‘xxx‘,‘123xx‘,12, @s);
SELECT @s;
d.聲明變數可以直接賦值 set 不需要 declare
e.沒有 as
f. output 在前邊 sqlserver 的在後邊
g.預存程序沒有參數也要寫 ()
h.mysqlparams 參數 需要用?代替 @
2.分頁語句
SELECT * FROM table_test LIMIT 5,3;
3.相應的top 語句
SELECT * FROM table_test LIMIT 5;
4.字串拼接使用concat
SELECT CONCAT(‘1‘,‘2‘);
如果使用‘1‘+‘2‘ 結果是3
5.使用now() 擷取目前時間
select now();
select curdate()日期 current_date()
select CURTIME()時間
6.isnull 函數
如果參數是null 返回1 不是則返回0
7.ifnull 函數 相當於sql isnull
ifnull(null,10)
8.uuid() 函數 代替mssql newid();
9.row_count() 函數 代替 @@rowcount
僅限於 update delete insert
10.scop_identity()
last_insert_id()
11.mysql 不支援nchar,nvarchar,ntext類型
12.自增語句 使用auto_increment
13. default 後邊直接寫值不用加括弧
14.識別符
sqlserver: [name]
mysql: ‘name‘
15.mysql 支援 values 這個 sql sqlserver 2008 以後也支援
INSERT INTO table_test (f_name,f_test,f_age,f_date) VALUES (‘321‘,‘321‘,21,NOW()),(‘123‘,‘123‘,123,NOW())
16 select @count=count(*) from table
mysql select count(*) from table into @count
17 if條件陳述式
if 條件 then
end if
或者
if 條件 then
else
end if
或者
if 條件then
elseif 條件 then
end if
eg:
DELIMITER $$
CREATE PROCEDURE test_test1
(
p_index INT
)
BEGIN
IF p_index >0 THEN
SELECT 1 ;
ELSE
SELECT 2;
END IF ;
END $$;
DELIMITER;
mysql 文法沒有return
18. 時間操作函數
SELECT DATE_ADD(CURDATE(),INTERVAL 1 DAY) 目前時間加1天
SELECT DATE_SUB(CURDATE(),INTERVAL 1 DAY) 目前時間減去1天