mysql 常用命令

自己常用的一些,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
    )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值