查询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 阅读(1228)
评论(0) 编辑 收藏 所属分类:
DB