mysql 语法(陆续补充)

mysql 语法(陆续补充)
查询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&amp;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()

你可能感兴趣的:(mysql 语法(陆续补充))