Mysql笔记

#导入数据库 [1]
1、首先建空数据库
mysql > create database abc;

2、导入数据库
方法一:
(1)选择数据库
    mysql > use abc;
(2)设置数据库编码
    mysql > set names utf8;
(3)导入数据(注意sql文件的路径)
    mysql > source /home/abc/abc.sql;
方法二:
    mysql -u用户名 -p密码 数据库名 < 数据库名.sql
    #mysql -uabc_f -p --default-character-set=utf8 abc < abc.sql

建议使用第二种方法导入。
注意:有命令行模式,有sql命令

#根据积分查询用户排名 [1]
select * from (
  SELECT @rownum:=@rownum+1 as rownum, id, nickname FROM `wx_user`, (select @rownum:=0) t order by user_score desc
) as a where a.id = 2

#修改自增ID
ALTER TABLE wx_user_test auto_increment = 40 ;

#查看连接
show processlist;
kill  id

#Mysql 获取一小时前时间
select date_sub(now(), interval 1 hour);
select date_sub(now(), interval -1 hour);      //一小时后
select date_add(now(), interval 1 hour);       //一小时后, 更多可选值参考[1] [2]

#日期时间转时间戳 [1]
SELECT UNIX_TIMESTAMP( DATE_ADD( NOW( ) , INTERVAL -3 DAY ) ) ;

#时间戳转时期时间
SELECT *, FROM_UNIXTIME( created_at, '%Y-%m-%d %H:%i:%s' ) as date1 FROM `user`;

#查看数据库中所有表的记录数 [1]
select table_name,table_rows from information_schema.tables 
where TABLE_SCHEMA = 'test'   
order by table_name desc;

#创建一个和已经存在表结构相同的表
CREATE TABLE wx_user1 LIKE wx_user;

#重命名表
RENAME TABLE  `wx_user1` TO  `wx_user` ;

#查看索引
SHOW INDEX FROM wx_user;

#添加多字段唯一索引
ALTER TABLE  `book` ADD UNIQUE (`book_id`,`page_num`)

#删除索引 [1]
ALTER TABLE wx_user DROP INDEX openid_2;

#新建数据库
CREATE DATABASE  `test2` DEFAULT CHARACTER SET utf8    COLLATE utf8_general_ci;
CREATE DATABASE  `test2` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

#查看数据库编码
SHOW VARIABLES LIKE '%character%'

#查询数据库中指定表的所有字段名 [1]
SELECT GROUP_CONCAT( COLUMN_NAME SEPARATOR ", " ) FROM information_schema.COLUMNS WHERE table_name = 'wx_user' AND table_schema = "database_name"

#查询数据库中符合条件的表名
SELECT
  GROUP_CONCAT( TABLE_NAME SEPARATOR ", " ) 
FROM information_schema.TABLES
WHERE
  TABLE_SCHEMA='testdb' and TABLE_NAME not like "t_%"

#用select的数据更新另一个表中数据 [1]
UPDATE wx_user AS a INNER JOIN (
	SELECT uid, COUNT( 1 ) AS read_count_total
	FROM wx_book_read
	WHERE status = 1
	GROUP BY uid
) AS b ON a.id = b.uid
SET a.read_count = b.read_count_total

UPDATE wx_book_read_page AS a 
LEFT JOIN wx_book_read AS b 
ON  a.book_id = b.book_id 
AND a.uid = b.uid 
SET a.book_read_id = b.id

#查看mysql配置文件在哪
/usr/sbin/mysqld --verbose --help|grep -A 1 'Default options'

#替换mysql字段中部分内容
UPDATE wx_user SET image = REPLACE(image , 'http://', 'https://') WHERE id = 1;

#mysql字符串拼接
UPDATE  `goods_cat` SET name = CONCAT( name,  '2' ) WHERE TYPE =2;

#mysql字符串处理函数
LENGTH(TRIM(url)), LENGTH(url)
CHAR_LENGTH

#mysql按in中内容排序 [1]
SELECT id, title, description, 
TYPE FROM wx_article
WHERE id
IN ( 784, 743, 596, 659, 685, 617, 836, 815, 813, 774 ) 
ORDER BY INSTR(  ',784,743,596,659,685,617,836,815,813,774,', CONCAT(  ',', id,  ',' ) ) 

SELECT id, title, description,  FIELD( id, 3, 5, 1, 4, 2 ) as order_data
FROM wx_article
WHERE ID
IN ( 3, 5, 1, 4, 2 ) 
ORDER BY FIELD( id, 3, 5, 1, 4, 2 ) 

SELECT FIELD( 1, 3, 5, 1, 4, 2 );//3

#随机阅读次数100-200次
select @i:=100;select @j:=200;
UPDATE `wx_article_test` SET `view_count` = FLOOR(@i + rand() * (@j - @i + 1)) WHERE 1;

#将查询的数据写入另一表中
INSERT INTO wx_article_view_count( count1, uid )
SELECT COUNT( * ) AS count1, uid
FROM `wx_article_view_log`
GROUP BY uid
ORDER BY `count1` DESC

#修改表注释
ALTER TABLE `wx_user` COMMENT = '用户表';

#查表时新构建一列,想查看原所有列又不想输入所有字段名称时可用表别名简单处理
SELECT FROM_UNIXTIME( ctime,'%Y-%m-%d' ) as date1,a.* FROM `wx_user` as a;

#创建临时表
CREATE TEMPORARY TABLE wx_user_temp AS
(
    SELECT * FROM wx_user where id < 10
);

#MySQL查看当前数据库 [1]
select database();
status;

#建表
CREATE TABLE IF NOT EXISTS `wx_user2` LIKE `wx_user`;

#MySQL正则
SELECT id,name,sn FROM `wx_goods` WHERE sn REGEXP '^[\.a-zA-Z0-9]+$';
SELECT id,name,sn FROM `wx_goods` WHERE sn NOT REGEXP '^[\.a-zA-Z0-9]+$';

SELECT id,name,sn FROM `wx_goods` WHERE sn REGEXP binary '^[\.a-z]+$'; -- 正则匹配区分大小写 [1]

#将查询的值保存变量
SELECT @max_id:=(SELECT max(id) FROM news);
SELECT * FROM news WHERE id > @max_id;

#通过分隔符截取
select substring_index("www.test.com", '.', 1);  -- www
select substring_index("www.test.com", '.', -1); -- com

#查询字符串所在位置
select position("." in "www.test.com"); -- 4

#给已成存在的列设置主键和自增ID
ALTER TABLE `test` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY;

posted on 2017-12-14 17:09  dream_bccb  阅读(337)  评论(0)    收藏  举报