【MySQL】
mysql -h192.168.0.201 -P3306 -uroot -p123 -D数据库名 #命令行连接数据库 SET PASSWORD = PASSWORD('123456'); #修改root密码 mysqldump -uroot -p123456 test [score] [--where="score>=60"] > db.sql #导出表数据并包含where条件 mysql -h192.168.x.x -uroot -p123456 -e "set names 'utf8';select field from dbname where type=2" > db.sql #自定义SQL数据导出
mysql的float类型的问题:
MySQL数据库的float类型,明明更新数据为 999999999(九个9),但是update之后结果变成了1000000000(10亿)。后来查阅资料才知道需要设置为decimal,问题解决。目前原因没查明白,先记下来!
mysqldump 备份导出数据排除某张表,用 --ignore-table=dbname.tablename 参数,可以忽略多个。
mysqldump --set-gtid-purged=OFF -h127.0.0.1 -uroot -p123456 dbname --ignore-table=dbname.tb1--ignore-table=dbname.tb2 > ./db_files/db.sql
MySQL查询某字段值重复的数据:
查询user表中 user_name字段值重复的数据及重复次数:
select user_name,count(*) as count from user group by user_name having count>1;
shell 脚本中执行SQL语句 -e:
有时候希望通过定时脚本自动执行某些SQL语句,用下面的命令:
/usr/local/mysql/bin/mysql -uroot -p123456 -e "
use dbname
source db.sql
select * from dev
quit"
MySQL对sum()字段进行条件筛选:having
显示每个地区的总人口数和总面积.仅显示那些面积超过100的地区。
SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region HAVING SUM(area)>100
在这里,我们不能用where来筛选超过100的地区,因为表中不存在这样一条记录。相反,having子句可以让我们筛选成组后的各组数据
MySQL复制同一个服务器的表结构和表数据
例如,现在服务器上有数据库 dbx 和 dby,dbx中有很多表,要把dbx中的表全部复制到dby,如下操作:
use dby;
[复制表结构]
CREATE TABLE user LIKE dbx.user
[复制旧表的数据到新表]
INSERT INTO user SELECT * FROM dbx.user
mysql 查找某个表在哪个库
SELECT table_schema FROM information_schema.TABLES WHERE table_name = '表名';
常用SQL语句:
/*创建表*/ CREATE TABLE tb_test ( id int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键', name varchar(100) NOT NULL DEFAULT '' COMMENT '名称', user_id int(11) unsigned NOT NULL DEFAULT '0' COMMENT '用户id', update_time int(11) unsigned NOT NULL DEFAULT '0' COMMENT '修改时间', is_del tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否禁用', PRIMARY KEY (id), KEY user_idx (name,user_id) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户信息'; /*给表添加字段 ADD*/ ALTER TABLE tb_test ADD is_url tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否是URL'; /*修改一个字段的类型 MODIFY*/ ALTER TABLE tb_test MODIFY is_url int(11) NOT NULL DEFAULT 1 COMMENT '是否是URL'; /*修改一个字段的名称 CHANGE*/ ALTER TABLE tb_test CHANGE is_url is_web_url int(11) NOT NULL DEFAULT 1 COMMENT '是否是URL'; /*添加普通索引*/ ALTER TABLE tb_test ADD KEY is_del_x(update_time,is_del); ALTER TABLE tb_test ADD INDEX idx_name_content(name); /*删除字段*/ ALTER TABLE tb_test DROP COLUMN is_web_url; /*重命名表*/ RENAME TABLE tb_test TO tb_ceshi /*添加数据*/ insert into tb_test(`id`,`name`,`user_id`) values (1,'哈哈哈',1001),(2,'李四',1002); /*修改数据*/ update tb_test set `name`=’abcd’ where id=5; /*删除数据*/ delete from tb_test where id=5;