自己常用的一些,mysql命令
#查询今天数据
select * from account_58_status where to_days(creat_time)=to_days(now());
#查询昨天数据
select * from account_58_status where to_days(now()) - to_days(creat_time)=1;
#查询近7天数据
1、查询当天
SELECT * FROM `article` WHERE to_days(`add_time`) = to_days(now());
2、查询昨天
SELECT * FROM `article` WHERE to_days(now()) – to_days(`add_time`) = 1;
3、查询最近7天
SELECT * FROM `article` WHERE date_sub(curdate(), INTERVAL 7 DAY) <= DATE(`add_time`);
SELECT * FROM `article` WHERE curdate()- INTERVAL 7 DAY?<= DATE(`add_time`);
4、查询最近30天
SELECT * FROM `article` WHERE date_sub(curdate(), INTERVAL 30 DAY) <= DATE(`add_time`);
SELECT * FROM `article` WHERE curdate()-INTERVAL 30 DAY <= DATE(`add_time`);
5、查询截止到当前本周
SELECT * FROM `article` WHERE YEARWEEK(date_format(`add_time`,'%Y-%m-%d')) = YEARWEEK(now());
#默认从周日开始到周六
SELECT * FROM `article` WHERE YEARWEEK(date_format(`add_time`,'%Y-%m-%d'),1) = YEARWEEK(now(),1);
#设置为从周一开始到周日
6、查询上周的数据
SELECT * FROM `article` WHERE YEARWEEK(date_format(`add_time`,'%Y-%m-%d')) = YEARWEEK(now())-1;
7、查询截止到当前本月
SELECT * FROM `article` WHERE date_format(`add_time`, '%Y%m') = date_format(curdate() , '%Y%m');
8、查询上一月
SELECT * FROM `article` WHERE period_diff(date_format(now() , '%Y%m') , date_format(`add_time`, '%Y%m')) =1;
select city_id_8,count(*) from landmark group by city_id_8 ;
##################################################### mysql 的一些命令#########################################################################
1、删除数据库
drop database 数据库名
2、创建一个数据库abccs
mysql> CREATE DATABASE abccs;
create database luobw character set =utf8;
注意不同操作系统对大小写的敏感。
3、选择你所创建的数据库
mysql> USE abccs
Database changed
此时你已经进入你刚才所建立的数据库abccs.
4、 创建一个数据库表
首先看现在你的数据库中存在什么表:
mysql> SHOW TABLES;
建表命令:
create table trip_search_num(id int auto_increment, name varchar(124) NOT NULL check(name!=''), type varchar(50), searchnum int DEFAULT '1',PRIMARY KEY (id), UNIQUE INDEX trip_search_num ( name ) )engine=innodb default charset=utf8;
create table trip_search_num(id int auto_increment, departure varchar(50) , destination varchar(50) ,country varchar(50) ,city varchar(50) ,scenicAreas varchar(50) NOT NULL check(scenicAreas !=''),labelList varchar(50) , search_city_num int DEFAULT '1',search_country_num int DEFAULT '1',search_place_num int DEFAULT '1',search_destination_num int DEFAULT '1',search_departure_num int DEFAULT '1',PRIMARY KEY (id) )engine=innodb default charset=utf8;
create table city_country(id int auto_increment, city varchar(100) , country varchar(50) ,PRIMARY KEY (id),UNIQUE INDEX city_country( city ) )engine=innodb default charset=utf8;
create table place_city(id int auto_increment, place varchar(200) , city varchar(100),country varchar(50) ,PRIMARY KEY (id),UNIQUE INDEX place_city( place ) )engine=innodb default charset=utf8;
create table city_id(id int auto_increment, city varchar(100) , city_id varchar(50),country varchar(50) ,PRIMARY KEY (id),UNIQUE INDEX city_id( city ) )engine=innodb default charset=utf8;
create table trip_searchnum(id int auto_increment, name varchar(200) NOT NULL check(name !='') , property varchar(50) ,startcity varchar(50) ,city_id varchar(50) ,searchnum int(50) ,labelList varchar(50) ,PRIMARY KEY (id) )engine=innodb default charset=utf8;
create table similarity_status(id int auto_increment, step int NOT NULL check(step != ''), create_time DATE NOT NULL, done_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,PRIMARY KEY (id), UNIQUE INDEX trip_search_num ( id) )engine=innodb default charset=utf8;
create table similarity_status(id int auto_increment, step varchar(50) NOT NULL check(step!=''), create_time DATE NOT NULL, done_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,PRIMARY KEY (id), UNIQUE INDEX similarity_status ( id) )engine=innodb default charset=utf8;
create table queue_words(id int auto_increment, seek_word varchar(124) NOT NULL check(name!=''), kr_word varchar(124), relation float , step int,PRIMARY KEY (seek_word), UNIQUE INDEX queue_words ( name ) )engine=innodb default charset=utf8;
删除表
DROP TABLE tbl_name;
导出时格式设置
--default-character-set=utf8
添加列: ALTER TABLE TESTTABLE ADD COLUMN C INT DEFAULT 0 AFTER A;
alter table testtable add column c int default 0 after a;
alter table place_city add column country varchar(50) after city;
alter table city_id add column province varchar(50) after country;
alter table tabHighWordOut add column classid varchar(50), add column classflag int default 0;
Rename Table 重命名表
RENAME TABLE 语法可以将一个或多个表重新命名。
语法:
RENAME TABLE tb_name TO new_tb_name, tb_name2 TO new_tb_name2, …
查看列:desc 表名;
修改表名:alter table t_book rename to bbb;
添加列:alter table 表名 add column 列名 varchar(30);
删除列:alter table 表名 drop column 列名;
修改列名MySQL: alter table bbb change nnnnn hh int;
修改列名SQLServer:exec sp_rename't_student.name','nn','column';
修改列名Oracle:lter table bbb rename column nnnnn to hh int;
修改列属性:alter table t_book modify name varchar(22);
insert into 表名 (i_text,i_insert) values(abc,aaa)
update 表名 set i_insert='aaa' where i_id=1
delete from student where id IN (select max(id) from student group by no,name,kno,kname,score)
查看用户权限命令:
show grants for data@'172.16.27.112';
清空表:TRUNCATE TABLE trip_search_num;truncate
truncate table
select * from books where bookname like '%php%';
show variables like '%char%'; 查看数据导入导出格式
SET character_set_results='utf8'; 设置MySQL数据导出格式
mysql -h172.16.18.140 -uroot -ppassword cms -e "select * from businfo limit 2"
mysql -h172.16.18.140 -uroot -ppassword cms -e "select * from businfo limit 2" --default-character-set=utf8
建立用户,权限
insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234"));//创建用户
grant all privileges on dbname.* to 'username'@'%' identified by 'password';//创建用户并分配所有权限
grant select,update on phplampDB.* to phplamp@localhost identified by '1234';//创建用户并分配权限
update mysql.user set password=password('新密码') where User="phplamp" and Host="localhost";//修改用户密码
--删除用户指定权限
revoke insert,update,delete,select ON *.* from 'xbb'@'localhost' IDENTIFIED BY '123';
grant all privileges on *.* to 'data'@'172.16.80.35' identified by 'opensesame';
flush privileges;
grant all privileges on *.* to 'root'@'172.200.1.59' identified by '123qwe';
flush privileges;
show variables like '%char%'; 查看环境变量
set character_set_client=utf8;
usr/local/bin/mysql -uroot -p123qwe --default-character-set=utf8 luobw < all_groupon.sh & 这样入库不乱码
#时间戳
一、TIMESTAMP的变体
TIMESTAMP时间戳在创建的时候可以有多重不同的特性,如:
1.在创建新记录和修改现有记录的时候都对这个数据列刷新:
TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
2.在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它:
TIMESTAMP DEFAULT CURRENT_TIMESTAMP
3.在创建新记录的时候把这个字段设置为0,以后修改时刷新它:
TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
4.在创建新记录的时候把这个字段设置为给定值,以后修改时刷新它:
TIMESTAMP DEFAULT ‘yyyy-mm-dd hh:mm:ss' ON UPDATE CURRENT_TIMESTAMP
MySQL目前不支持列的Default 为函数的形式,如达到你某列的默认值为当前更新日期与时间的功能,你可以使用TIMESTAMP列类型,下面就详细说明TIMESTAMP列类型
二、TIMESTAMP列类型
TIMESTAMP值可以从1970的某时的开始一直到2037年,精度为一秒,其值作为数字显示。
TIMESTAMP值显示尺寸的格式如下表所示:
:
+---------------+----------------+
| 列类型 | 显示格式 |
| TIMESTAMP(14) | YYYYMMDDHHMMSS |
| TIMESTAMP(12) | YYMMDDHHMMSS |
| TIMESTAMP(10) | YYMMDDHHMM |
| TIMESTAMP(8) | YYYYMMDD |
| TIMESTAMP(6) | YYMMDD |
| TIMESTAMP(4) | YYMM |
| TIMESTAMP(2) | YY |
+---------------+----------------+
“完整”TIMESTAMP格式是14位,但TIMESTAMP列也可以用更短的显示尺寸,创造最常见的显示尺寸是6、8、12、和14。
你可以在创建表时指定一个任意的显示尺寸,但是定义列长为0或比14大均会被强制定义为列长14。
列长在从1~13范围的奇数值尺寸均被强制为下一个更大的偶数。
建索引
1:问如何解决,setenv LANG zh_CN.UTF-8
setenv LC_ALL zh_CN.UTF-8
setenv LC_ALL zh_CN.GBK
setenv LANG zh_CN.GBK
locale
设置的是显示的部分
1.ALTER TABLE
ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。
ALTER TABLE table_name ADD INDEX index_name (column_list)
ALTER TABLE table_name ADD UNIQUE (column_list)
ALTER TABLE table_name ADD PRIMARY KEY (column_list)
其中table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。索引名index_name可选,缺省时,MySQL将根据第一个索引列赋一个名称。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以在同时创建多个索引。
表S
1 a
1 b
2 c
2 d
3 e
1 2
2 2
3 1
select a.id,count(b.aid) from a left join b on a.id=b.aid group by a.id;
mysql拷贝表操作我们会常常用到,下面就为您详细介绍几种mysql拷贝表的方式,希望对您学习mysql拷贝表方面能够有所帮助。
假如我们有以下这样一个表:
id username password
-----------------------------------
1 admin *************
2 sameer *************
3 stewart *************
CREATE TABLE IF NOT EXISTS `admin` (
`id` int(6) unsigned NOT NULL auto_increment,
`username` varchar(50) NOT NULL default '',
`password` varchar(100) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
1. 下面这个语句会拷贝表结构到新表newadmin中。 (不会拷贝表中的数据)
CREATE TABLE newadmin LIKE admin
2. 下面这个语句会拷贝数据到新表中。 注意:这个语句其实只是把select语句的结果建一个表。所以newadmin这个表不会有主键,索引。
CREATE TABLE newadmin AS
(
SELECT *
FROM admin
)
3. 如果你要真正的复制一个表。可以用下面的语句。
CREATE TABLE newadmin LIKE admin;
INSERT INTO newadmin SELECT * FROM admin;
4. 我们可以操作不同的数据库。
CREATE TABLE newadmin LIKE shop.admin;
CREATE TABLE newshop.newadmin LIKE shop.admin;
5. 我们也可以拷贝一个表中其中的一些字段。
CREATE TABLE newadmin AS
(
SELECT username, password FROM admin
)
6. 我们也可以讲新建的表的字段改名。
CREATE TABLE newadmin AS
(
SELECT id, username AS uname, password AS pass FROM admin
)
7. 我们也可以拷贝一部分数据。
CREATE TABLE newadmin AS
(
SELECT * FROM admin WHERE LEFT(username,1) = 's'
)
8. 我们也可以在创建表的同时定义表中的字段信息。
CREATE TABLE newadmin
(
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY
)
AS
(
SELECT * FROM admin
)