安裝MySQL
從MSSQL導數據到MySQL:
用可視化工具SQLyog
可參考:http://www.cnblogs.com/gaizai/p/3237907.html
MySQL與MSSQL語法區別:
區別 | MSSQL | MySQL |
註釋 | 單行註釋:-- 段落註釋:/*abc*/ | 單行註釋://或者#或者-- (多一個空格) 多行註釋:/*abc*/ |
存儲過程 | CREATE PROC test1(@s BIGINT) BEGIN ... END | CREATE PROCEDURE test1(IN s BIGINT) BEGIN ... END; |
修改列 | alter table 表 alter column 列 類型 | ALTER TABLE 表 CHANGE 舊列名 新列名 類型; |
刪除主鍵 | alter table 表 drop 主鍵名
| alter table 表 drop primary key; |
函數:
LOCATE
LOCATE(查找的字符串,所在的字符串,起始位置)-- 跟MSSQL的charindex函數一樣
mysql> select LOCATE('ab','abcdabc',1);
+-------------------------------+
| LOCATE('ab','abcdabc',1) |
+-------------------------------+
| 1 |
+-------------------------------+
mysql> select LOCATE('ab','abcdabc',3);
+-------------------------------+
| LOCATE('ab','abcdabc',3) |
+-------------------------------+
| 5 |
+-------------------------------+
LIMIT
mysql> SELECT * FROM table LIMIT 5,10; // 檢索記錄行 6-15
//爲了檢索從某一個偏移量到記錄集的結束所有的記錄行,可以指定第二個參數爲 -1:
mysql> SELECT * FROM table LIMIT 95,-1; // 檢索記錄行 96-last.
//如果只給定一個參數,它表示返回最大的記錄行數目,LIMIT n 等價於 LIMIT 0,n:
mysql> SELECT * FROM table LIMIT 5; //檢索前 5 個記錄行
使用Navicat For MySQL
按F6(工具-命令列界面)進入命令列
或者打開查詢窗口
常用SQL:
查看命令:
1. mysql> show databases;
2. mysql> show tables;
3. mysql> desc w_answer;
4. mysql> show create procedure cs_ro_getquestionlist;
5. mysql> show triggers
表操作:
創建表:
mysql> create table t1(id bigint,name nvarchar(200));
Query OK, 0 rows affected
修改表:
mysql> alter table t1 add addtime datetime;
mysql> alter table t1 drop column addtime;
mysql> alter table t1 change name score int;
查看錶結構:
mysql> desc t1;
mysql> show columns from t1;
mysql> show create table t1;
刪除表:
mysql> drop table t1;
索引操作:
新增索引:mysql> create index xID on t1(id);
mysql> alter table t1 add index xID (id);
刪除索引:mysql> drop index xID on t1;
mysql> alter table t1 drop index xID;
查看索引:mysql> show index from t1;
重建索引:mysql> repair table t1 quick;
索引統計:右鍵-對象信息
主鍵操作:
添加主鍵:mysql> alter table t1 add primary key(id);
刪除主鍵:mysql> alter table t1 drop primary key;
外鍵操作:
添加外鍵:
mysql> alter table testtag add constraint fk_test foreign key (ClassID) references testclass(ID);
刪除外鍵:mysql> ALTER TABLE testtag DROP FOREIGN KEY `fk_test`;
觸發器:
創建觸發器:
mysql> create trigger tri_class_i before insert on w_questionclass for each row
-> begin
-> set new.px=6;
-> end;
查看觸發器:mysql> show triggers;
刪除觸發器:mysql> drop trigger tri_class_i;
數據操作:
新增數據:
mysql> insert into t1(id,name)
-> select 123456,'ssssk';
mysql> insert into t1
-> values(111111,'asd');
mysql> insert into t1
-> select 111112,'abc' union all
-> select 111113,'abcd';
查詢數據:
mysql> select * from t1 where id=123456;
mysql> SELECT ID FROM TEST ORDER BY ID LIMIT 0,3;//顯示前三行
mysql> select distinct id from testclass;
mysql> select addy,count(1)as digit from test group by addy order by count(1);
更新數據:
mysql> update t1 set name='ssss' where id=123456;
刪除數據:
mysql> delete from t1 where id=111111;
存儲過程:
(1)輸出參數:
mysql> create procedure test(out s int)
-> begin
-> select count(1)into s from tabletest;
-> end;
調用存儲過程
mysql> call test(@a);
mysql> select @a;
(2)輸入參數:
mysql> CREATE PROCEDURE test1(IN s BIGINT)
-> BEGIN
-> SELECT ID FROM tabletest WHERE ID=s;
-> END;
mysql> CALL test1(610815855784);
(3)表連接:
mysql> CREATE PROCEDURE test2(IN s BIGINT)
-> BEGIN
-> SELECT a.ID,b.ID,c.ID from testtag a left join testontag b on a.ID=b.tagid left join test c on b.questionid=c.ID WHERE c.ID=s;
-> END;
mysql> call test2(24);
注意:
MySQL沒有WITH(NOLOCK)