如果你不想使用mysql的自動遞增,但又想實現主鍵序列號的功能,可以使用下面的方法,通過函數用一張表去維護生成多個表的序列號,簡單又實用
1.創建生成多個表的序列號的數據維護表
CREATE TABLE seq (
name varchar(20) NOT NULL,
val int(10) UNSIGNED NOT NULL,
PRIMARY KEY (name)
) ENGINE=MyISAM DEFAULT CHARSET=UTF-8
2.插入幾條初始化數據
INSERT INTO seq VALUES('one',100);
INSERT INTO seq VALUES('two',1000);
3.創建函數以生成序列號
CREATE FUNCTION seq(seq_name char (20)) returns int
begin
UPDATE seq SET val=last_insert_id(val+1) WHERE name=seq_name;
RETURN last_insert_id();
end
4.測試
MYSQL啟用日志,和查看日志 |
時間:2009-01-21 17:33:57 來源:http://wasabi.javaeye.com/blog/318962 作者:kenbli |
mysql有以下幾種日志: 錯誤日志: -log-err 查詢日志: -log 慢查詢日志: -log-slow-queries 更新日志: -log-update 二進制日志: -log-bin 是否啟用了日志 mysql>show variables like 'log_%'; 怎樣知道當前的日志 mysql> show master status; 顯示二進制日志數目 mysql> show master logs; 看二進制日志文件用mysqlbinlog shell>mysqlbinlog mail-bin.000001 或者shell>mysqlbinlog mail-bin.000001 | tail 在配置文件中指定log的輸出位置. Windows:Windows 的配置文件為 my.ini,一般在 MySQL 的安裝目錄下或者 c:\Windows 下。 Linux:Linux 的配置文件為 my.cnf ,一般在 /etc 下。 在linux下:
windows下:
開啟慢查詢 long_query_time =2 --是指執行超過多久的sql會被log下來,這里是2秒 log-slow-queries= /usr/local/mysql/log/slowquery.log --將查詢返回較慢的語句進行記錄 log-queries-not-using-indexes = nouseindex.log --就是字面意思,log下來沒有使用索引的query log=mylog.log --對所有執行語句進行記錄 |
MySQL 存取控制包含2個階段:
jdbc url: 詳細屬性可參考
Eg: jdbc:mysql://localhost:3306/test?user =root&password=&useUnicode=true&characterEncoding=utf8
mysql URL: mysql -uroot -p --default-character-set=utf8
這就重點說下:SHOW
1. 查看全部庫支持字符 如:'gb%' -gbk,gb2312
SHOW CHARACTER SET LIKE '%' ;
2. 查看列
show columns from user from mysql ;
show columns from mysql.user ;
desc mysql.user ;
//簡化
//更方便的 查看 列名 模糊查詢列名為 'Select%' (desc information_schema.columns 還有更多驚喜)
select column_name from information_schema.columns where column_name like 'Select%' ;
3. 查看數據庫,表結構;當然你們也可以仿照下此再建自己的庫,表
show
show create database information_schema"G
show create table mysql.user"G
4.權限查看
SHOW GRANTS FOR 'root'@'localhost';
.....(詳細參考 )
這就上寫自己一些有感覺的sql :參考
1.只查詢重復 Eg:
2.報表查詢橫向輸出 Eg:
Create table d(id int,name varchar(50));
insert into d values(1,'gly');
insert into d values(2,'ptgly');
insert into d values(3,'ybgly');
insert into d values(4,'ptgly');
insert into d values(5,'ybgly');
+---+-----+------+
|gly |ptgly|ybgly|
+---+-----+------+-
|1 |2 |2 |
+---+-----+------+
3.復雜組合查詢
create table table_a (No int, No2 int,num double,itime date);
insert into table_a values
(1234,567890,33.5,'2004-12-21'),
(1234,598701,44.8,'2004-11-21'),
(1234,598701,45.2,'2004-10-01'),
(1234,567890,66.5,'2004-9-21'),
(3456,789065,22.5,'2004-10-01'),
(3456,789065,77.5,'2004-10-27'),
(3456,678901,48.5,'2004-12-21');
按月統計銷售表中貨物的銷售量數
查詢結果如下:
No, No2 , 九月, 十月,十一月,十二月
1234,567890, 66.5 , 0 , 0 , 33.5
1234,598701, 0 , 45.2, 44.8, 0
3456,789065, 0 , 100, 0 , 0
3456,678901, 0 , 0, 0 , 48.5
-----------------------------------------------------------------------
4.字符集子層關系
1 a
2 b
11 c
(代碼11表示為1的下級)
我要通過一條句子,得出如下結果:
Create table TabTest(t_Code varchar(10),t_Name varchar(10));
insert into TabTest values('1','a');
insert into TabTest values('2','b');
insert into TabTest values('11','c');
--------------------------------------------------------------
可直接運行(去除注解)
存儲過程:
//運行!!
mysql> call findLChild(1,1);
+------+------------------+
| id | name |
+------+------------------+
| 2 | 北京 |
| 4 | 上海 |
| 6 | 香港特別行政區 |
| 8 | 澳門特別行政區 |
| 10 | 河北 |
| 23 | 山西 |
| 35 | 遼寧 |
| 50 | 吉林 |
| 60 | 黑龍江 |
| 74 | 江蘇 |
| 88 | 浙江 |
| 101 | 安徽 |
| 119 | 福建 |
| 129 | 江西 |
| 142 | 山東 |
| 160 | 河南 |
| 179 | 湖北 |
| 198 | 湖南 |
| 213 | 廣東 |
| 235 | 甘肅 |
| 250 | 四川 |
| 272 | 貴州 |
| 282 | 海南 |
| 301 | 云南 |
| 318 | 青海 |
| 327 | 陜西 |
| 348 | 廣西壯族自治區 |
| 363 | 西藏自治區 |
| 371 | 寧夏回族自治區 |
| 377 | 新疆維吾爾自治區 |
| 400 | 內蒙古自治區 |
| 413 | 臺灣省 |
+------+------------------+
32 rows in set (0.02 sec)