删除索引
drop index idx_id on table1;
alter table table1 drop index ind_id;
联合字符或者多个列(将列id与\和列name和\连接)
select concat(id,':',name,'=') from students;
limit(选出10到20条)<第一个记录集的编号是0>
select * from students order by id limit 9,10;
分析索引效率
方法:在一般的SQL语句前加上explain; 分析结果的含义: 1)table:表名;
2)type:连接的类型,(ALL/Range/Ref)。其中ref是最理想的; 3)possible_keys:查询可以利用的索引名; 4)key:实际使用的索引;
5)key_len:索引中被使用部分的长度(字节); 6)ref:显示列名字或者\(不明白什么意思);
7)rows:显示MySQL认为在找到正确结果之前必须扫描的行数; 8)extra:MySQL的建议;
Mysql驱动和spring配置、config.properties修改
配置修改
hibernate.dialect=org.hibernate.dialect.MySQLDialect
datasource.driverClassName=com.mysql.jdbc.Driver
datasource.url=jdbc:mysql://172.19.12.15:3306/b2b2c 可以设定链接的字符集,防止乱码:
jdbc:mysql://localhost:3306/ssh?useUnicode=true&characterEncoding=UTF-8
mysql maven坐标
mysql-connector-java
各种数据库及其数据源配置参数
数据库 Oracle
驱动程序 oracle.jdbc.driver.OracleDriver URL jdbc:oracle:thin:@localhost:1521:orcl
数据库 DB2
驱动程序 com.ibm.db2.jdbc.app.DB2Driver URL jdbc:db2://localhost:5000/testDB
数据库 SQL Server
驱动程序 com.microsoft.jdbc.sqlserver.SQLServerDriver
URL jdbc.microsoft:sqlserver://localhost:1433;DatabaseName=testDB
数据库 Sybase
驱动程序 com.sybase.jdbc.SybDriver
URL jdbc:sybase:Tds:localhost:5007/testDB
数据库 Informix
驱动程序 com.informix.jdbc.IfxDriver
URL jdbc:informixsqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver
数据库 Mysql
驱动程序 com.musql.jdbc.Driver
URL jdbc:mysql://localhost:3306/testDB
数据库 PostgreSQL
驱动程序 org.postgresql.Driver
URL jdbc:postgresql://localhost/testDB
数据库 HSQLDB
驱动程序 org.hsqldb.jdbcDriver
URL jdbc:hsqldb:hsql://llocalhost:9902
函数和存储过程无法建立:
ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) 解决方法:
set global log_bin_trust_function_creators=TRUE;
MySQL DATE_ADD() 函数
DATE_ADD() 函数向日期添加指定的时间间隔。
语法
DATE_ADD(date,INTERVAL expr type) date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。 type 参数可以是下列值: Type 值 MICROSECOND SECOND MINUTE HOUR DAY WEEK MONTH QUARTER YEAR SECOND_MICROSECOND MINUTE_MICROSECOND MINUTE_SECOND HOUR_MICROSECOND HOUR_SECOND HOUR_MINUTE DAY_MICROSECOND DAY_SECOND DAY_MINUTE DAY_HOUR YEAR_MONTH 实例
假设我们有如下的表: OrderId 1 ProductName 'Computer' OrderDate 2008-12-29 16:25:46.635 现在,我们希望向 \添加 2 天,这样就可以找到付款日期。 我们使用下面的 SELECT 语句:
SELECT OrderId,DATE_ADD(OrderDate,INTERVAL 2 DAY) AS OrderPayDate FROM Orders
结果: OrderId OrderPayDate 1
2008-12-31 16:25:46.635 Mysql5.1 建表错误记录
1.分区字段必须包含在主键中
2 mysql单表多timestamp报错#1293 - Incorrect table definition; there can be only one TIMESTAMP column with C解决【tw_ptl_accesslog】
简述:一个表中不能包含多个timestamp字段,特别是设置为now。
一个表中出现多个timestamp并设置其中一个为current_timestamp的时候经常会遇到 #1293 - Incorrect table definition; there can be only oneTIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATEclause www.2cto.com
原因是当你给一个timestamp设置为on updatecurrent_timestamp的时候,其他的timestamp字段需要显式设定default值
但是如果你有两个timestamp字段,但是只把第一个设定为current_timestamp而第二个没有设定默认值,mysql也能成功建表,但是反过来就不行... www.2cto.com
N.B:上面的解释是网上的,实际上on updatecurrent_timestamp(在navicat中文版中为“刷新当前时间戳计时”选项)只能设置一个,或者不设置都可以,不能同时设置2个及以上。
Mysql中默认为系统时间使用 timestamp default now(); 如果分区字段使用timestamp类型,使用partition by range (UNIX_TIMESTAMP(LOGIN_DATE))
此时间类型为datetime,使用partition by range (to_days (LOGIN_DATE)) 在accesslog表建立过程中就存在此冲突。