查詢MySQL版本,有兩種方法:
SHOW VARIABLES LIKE 'version';
or
SELECT VERSION();
SHOW TABLES FROM database; 查看數據庫里面所有的表,
執行 desc table_name; 或者
show columns from talbe_name; 查看表中的所有的列
查看數據庫
show databases;
查看表
show tables;
show create table table_name;
統計一個表的字段數
select count(*) from syscolumns A inner join sysobjects B on A.id=B.id
where B.name='表名'
(
注:這個lcs沒看懂,有明白的請給解釋一下)
=======================
1.如何給標識列插入值
表中第一個字段id為標識列
insert into table values (null,'aa',1)
2.如果表存在刪除表
drop table if exists tablename
3.date too long for column 解決方法
我用的是5.1,昨天把mysql,php,phpmyadmin的字符集都改成utf8后,用load data infile 命令插入數據時總是出現這樣的錯誤提示:data too long for column 'cname' at row 1;網上搜一下,大都說set character_set=utf8之類的,但還是不行,最后找到了一個:
修改my.ini文件,將
sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
注釋掉,ok!
Update:mysql5在phpmyadmin無法連接時執行的語句:
SET PASSWORD FOR ‘root’@'localhost’ = OLD_PASSWORD(’[newpassword]‘);
剛才在導入數據的時候,navicat報錯:
Data too long for column ‘ip’ at row 1
提示數據對于ip字段太長
如果數據類型不正確,也會出錯,而不像4.*那樣自動轉換:
sendQuery:Incorrect datetime value: ‘未知’ for column ‘date’ at row 1
如果是數據x (int 11)類型的可能有些奇怪:
insert into a (x) values (’a')
出現:
Out of range value adjusted for column ‘x’ at row 1
insert into a (x) values (’11a’)
出現:
Data truncated for column ‘x’ at row 1
解決辦法:
在my.ini里找到
sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION”
把其中的
STRICT_TRANS_TABLES,
去掉,然后重啟mysql就ok了
4.分頁語句
select * from table where ... order by ... limit n,n
5.mysql 5.0 中文亂碼問題
解決mysql5.0的中文亂碼問題,只要按下面三步做就可以了:
1.第一步,修改MySql的配置文件my.ini:
在安裝好Mysql后,在Mysql所在的目錄下有一個my.ini文件,修改這個my.ini文件,修改方式如下:
1.1 在[client] 的后面加一條 default-character-set=gb2312
2.2 把[mysql] 的后面 default-character-set=latin1 改成 default-character-set=gb2312
2.3 把[mysqd] 的后面 default-character-set=latin1 改成 default-character-set=gb2312
2.4 在改了上面三處后,后面還一個default-character-set=latin1,這個default-character-set的作用是指定在創建新的表或數據庫
時,所使用的默認字符編碼,為了方便創建新的表或數據庫,建議把定個 default-character-set也改成gb2312。
2.第二步,設置與數據庫連接的字符串:
在連接字符串(URL)后加上?useUnicode=true&characterEncoding=gb2312這一句,具體如下:
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/數據庫名?useUnicode=true&characterEncoding=gb2312</value>
</property>
<property name="username">
<value>用戶名</value>
</property>
<property name="password">
<value>密碼</value>
</property>
</bean>
3.第三步,在java代碼,把SQL語句轉換成gb2312的編碼,然后再執行該SQL.
3.1 把字符串轉換成gb2312的編碼的方式如下:
public static String GB2312Converter(String str) {
if (str == null) {
str = "";
} else {
try {
str = new String(str.getBytes("gb2312"), "gb2312");
} catch (Exception ex) {
ex.printStackTrace();
}
}
return str;
}
3.2 獲取gb2312編碼的sql語句:
String sql = "select name from user ";
sql = GB2312Converter(sql); // 獲取gb2312編碼的sql語句,然后就可以執行該sql語句了。
===============
Show index from b (subs)
------
EXPLAIN SELECT *
FROM items, subs
WHERE items.channel_id = subs.channel_id
AND subs.user_id =3
ORDER BY items.created_at
LIMIT 20 ;
=============================
一句話實現亂序查詢
select * from a ORDER by rand()
posted on 2007-09-25 11:48
lk 閱讀(1241)
評論(0) 編輯 收藏 所屬分類:
DB