赞
踩
1创建用户test,密码为password该用户没有任何权限
create user test@localhost identified by 'password';
2指定用户拥有创建表的权限远程 %可以换成ip
- grant all on database.* to 'test'@'%' identified by 'password';
- grant select,insert,update,delete,create,drop on database.* to test@localhost identified by "test";
3.刷新数据库
flush privileges;
4.查看用户信息
select host,user from mysql.user;
cmd mysql的bin目录下,使用mysql命令备份,还原能避免一些报错,解决兼容问题
- mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql
- mysqldump -h192.168.1.240 -uroot -ppassword testa>"F:\test.sql"
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql
直接将MySQL数据库压缩备份
mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz
备份MySQL数据库某个(些)表
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql
同时备份多个MySQL数据库
mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql
仅仅备份数据库结构
mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql
备份服务器上所有数据库
mysqldump –all-databases > allbackupfile.sql
还原MySQL数据库的命令
mysql -hhostname -uusername -ppassword databasename < backupfile.sql
还原压缩的MySQL数据库
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
将数据库转移到新服务器
mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename
导入数据
- mysql>use abc;
- mysql>set names utf8;
- mysql>source /home/abc/abc.sql;
不存在就创建
- CREATE TABLE IF NOT EXISTS `basegraphics` (
- `id` int(10) NOT NULL AUTO_INCREMENT,
- `content` text NOT NULL COMMENT '文本内容',
- `src` varchar(100) NOT NULL COMMENT '图片地址',
- `width` varchar(30) NOT NULL COMMENT '图片宽度',
- `height` varchar(30) NOT NULL COMMENT '图片高度',
- `createtime` int(10) unsigned NOT NULL DEFAULT '0',
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
如果表存在则删除
DROP TABLE IF EXISTS orders
DISTINCT 替换GROUP by
- select count(1) from (select order_id FROM `sales_flat_order_item` GROUP by order_id)a;
- SELECT count(DISTINCT order_id) FROM `sales_flat_order_item`;
- #即可查看建表sql语句
- SHOW CREATE TABLE test;
- #表的字段数
- SHOW COLUMNS FROM test;
上一条
SELECT * FROM A WHERE id < $id ORDER BY id DESC LIMIT 1
下一条
SELECT * FROM A WHERE id > $id ORDER BY id ASC LIMIT 1
如果有字段自增和默认值可写成:
INSERT INTO Persons VALUES ('Bill', 'Xuanwumen 10');
- SELECT ABS(-1);
- ---- 返回1
- SELECT CEIL(1.5);
- ---- 返回2
-
- --判断是否是整数
- SELECT 10<>ceil(10.23),10<>ceil(10.0)
- SELECT FLOOR(1.5);
- ---- 返回1
ROUND(x)返回离 x 最近的数
SELECT ROUND(1.23456, 2);
TRUNCATE(x,y)返回数值 x 保留到小数点后 y 位的值(与 ROUND 最大的区别是不会进行四舍五入
- SELECT TRUNCATE(1.23456,3);
- ---- 返回1.234
返回字符串 str, 其左边由字符串padstr 填补到len 字符长度。假如str 的长度大于len, 则返回值被缩短至 len 字符。
- mysql> SELECT LPAD('hi',4,'?');-> '??hi'
- mysql> SELECT LPAD('hi',1,'?');-> 'h'
返回字符串str, 其右边被字符串 padstr填补至len 字符长度。假如字符串str 的长度大于 len,则返回值被缩短到与 len 字符相同长度。
FORMAT(x,n)函数可以将数字 x 进行格式化 “#,###.##”, 将 x 保留到小数点后 n 位,最后一位四舍五入
- SELECT FORMAT(250500.5634, 2);
- ---- 返回250,500.56
LTRIM/RTRIM/TRIM 去掉字符串两端的空格
- SELECT TRIM(' RUNOOB ');
- ---- 返回RUNOOB
返回字符串 str, 其子字符串起始于 pos 位置和长期被字符串 newstr取代的len 字符。 如果pos 超过字符串长度,则返回值为原始字符串。 假如len的长度大于其它字符串的长度,则从位置pos开始替换。若任何一个参数为null,则返回值为NULL。
- mysql> SELECT INSERT('Quadratic', 3, 4, 'What');-> 'QuWhattic'
- mysql> SELECT INSERT('Quadratic', -1, 4, 'What');-> 'Quadratic'
- mysql> SELECT INSERT('Quadratic', 3, 100, 'What');-> 'QuWhat'
返回值为字符串str 的长度,单位为字节。一个多字节字符算作多字节。这意味着 对于一个包含5个2字节字符的字符串, LENGTH() 的返回值为 10, 而 CHAR_LENGTH()的返回值则为5。
mysql> SELECT LENGTH('text');-> 4
返回一个由重复的字符串str 组成的字符串,字符串str的数目等于count 。若 count <= 0,则返回一个空字符串。若str 或 count 为 NULL,则返回 NULL 。
mysql> SELECT REPEAT('MySQL', 3);-> 'MySQLMySQLMySQL'
测试表数据
mysql> SELECT c_id, GREATEST( num1, num2 ) AS max, num1, num2 from comment where num1 != "" and num2 != ""; +------+------+------+------+ | c_id | max | num1 | num2 | +------+------+------+------+ | 1 | 21 | 21 | 12 | | 2 | 219 | 133 | 219 | | 3 | 67 | 67 | 16 | +------+------+------+------+ 3 rows in set (0.00 sec) mysql> SELECT c_id, LEAST( num1, num2 ) AS max, num1, num2 from comment where nu m1 != "" and num2 != ""; +------+------+------+------+ | c_id | max | num1 | num2 | +------+------+------+------+ | 1 | 12 | 21 | 12 | | 2 | 133 | 133 | 219 | | 3 | 16 | 67 | 16 | +------+------+------+------+ 3 rows in set (0.00 sec)
REGEXP函数
- mysql> SELECT * FROM `comment` WHERE content REGEXP '[0-9]+';
- +------+------+------+------------+---------------------+------+------+
- | c_id | u_id | name | content | datetime | num1 | num2 |
- +------+------+------+------------+---------------------+------+------+
- | 1 | 1 | test | 2222222211 | 2010-11-10 15:16:00 | 21 | 12 |
- +------+------+------+------------+---------------------+------+------+
- 1 row in set (0.00 sec)
如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。 IFNULL()返回一个数字或字符 串值,取决于它被使用的上下文环境 。
- mysql > select IFNULL(1,0);
- -> 1
- mysql> select IFNULL(0,10);
- -> 0
- mysql> select IFNULL(1/0,10);
- -> 10
- mysql> select IFNULL(1/0,'yes');
- -> 'yes'
判断字段值是否为null或者空串''
SELECT * FROM `table_name' WHERE ifnull(col_name,'')='';
如果expr1是TRUE(expr1<>0且expr1<>NULL),那么IF()返回expr2,否则它返回expr3。 IF()返回一个数字或字符串值,取决于它被使用的上下文。
- mysql> select IF(1>2,2,3);
- -> 3
- mysql> select IF(1<2,'yes','no');
- -> 'yes'
- mysql> select IF(strcmp('test','test1'),'yes','no');
- -> 'no'
expr1作为整数值被计算,它意味着如果你正在测试浮点或字符串值,你应该使用一个比较操作来做。
- mysql> select IF(0.1,1,0);
- -> 0
- mysql> select IF(0.1<>0,1,0);
- -> 1
在上面的第一种情况中,IF(0.1)返回0,因为0.1被变换到整数值, 导致测试IF(0)。这可能不是你期望的。在第二种情况中,比较测试原来的浮点值看它是否是非零,比较的结果被用作一个整数。
select * from stock_moves where abs (qty)=1140
可以连接一个或者多个字符串,MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL
- mysql> SELECT CONCAT(2,' test');
- -> '2 test'
即有分隔符的字符串连接如连接后以逗号分隔。优先使用
- mysql> SELECT CONCAT_WS(';',2,' test');
- -> '2;test'
- SELECT CONCAT_WS(';', null,' test');
- -> 'test'
函数表示可以返回参数中的第一个非空表达式,当你有N个参数时选取第一个非空值(从左到右)。
- mysql->select coalesce(null,"carrot","apple")
- ->carrot
- mysql-> select coalesce(1,"carrot","apple")
- ->1
select coalesce(a,b,c);
如果a==null,则选择b;
如果b==null,则选择c;
如果a!=null,则选择a;如果a b c 都为null ,则返回为null(没意义)。
返回字符串 str 中子字符串的第一个出现位置。这和LOCATE()的双参数形式相同,除非参数的顺序被颠倒。
- mysql> SELECT INSTR('foobarbar', 'bar');
- -> 4
返回子串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0.
- select substr('1分29秒',1,LOCATE('分','1分29秒')-1)*60+substr('1分29秒',LOCATE('分','1分29秒')+1,2)
-
- SELECT LOCATE("0316", "03162774952")
SUBSTRING(str,pos) , SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) ,SUBSTRING(str FROM pos FOR len)
不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos。 使用 FROM的格式为标准 SQL 语法。也可能对pos使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的pos 字符,而不是字符串的开头位置。在以下格式的函数中可以对pos 使用一个负值。
- mysql> SELECT SUBSTRING('Quadratically',5);
- -> 'ratically'
- mysql> SELECT SUBSTRING('foobarbar' FROM 4);
- -> 'barbar'
- mysql> SELECT SUBSTRING('Quadratically',5,6);
- -> 'ratica'
- mysql> SELECT SUBSTRING('Sakila', -3);
- -> 'ila'
在定界符 delim 以及count 出现前,从字符串str返回自字符串。若count为正值,则返回最终定界符(从左边开始)左边的一切内容。若count为负值,则返回定界符(从右边开始)右边的一切内容。
- mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
- -> 'www.mysql'
- mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
- -> 'mysql.com'
返回一个设定值 (一个包含被‘,’号分开的字字符串的字符串) ,由在bits 组中具有相应的比特的字符串组成。str1 对应比特 0, str2 对应比特1,以此类推。str1, str2, ...中的 NULL值不会被添加到结果中。
- mysql> SELECT MAKE_SET(1,'a','b','c');
- -> 'a'
- mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world');
- -> 'hello,world'
- mysql> SELECT MAKE_SET(1 | 4,'hello','nice',NULL,'world');
- -> 'hello'
mysql> SELECT LEFT('foobarbar', 5);-> 'fooba'
如果N= 1,返回str1,如果N= 2,返回str2,等等。如果N小于1或大于参数个数,返回NULL。ELT()是FIELD()反运算。
select ELT(1, 'ej ', 'Heja ', 'hej ', 'foo '); //-> 'ej '
返回字符串str 以及所有被字符串to_str替代的字符串from_str 。
- mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
- -> 'WwWwWw.mysql.com'
update user set created =replace(replace (replace(created, "年 ", "- "), "月 ", "- "), "日 ", " ");
是MySQL数据库提供的一个函数,通常跟GROUP BY一起用,
1.例如:
- select student_id,group_concat(courses_id order by courses_id desc) as courses_id from student_courses group by student_id;
- +------------+-------------+
- | student_id | courses_id |
- +------------+-------------+
- | 2 | 5,4,3 |
2.当然分隔符还可以自定义,默认是以“,”作为分隔符,若要改为“|||”,则使用SEPARATOR来指定,例如:
- SELECT student_id, GROUP_CONCAT(courses_id SEPARATOR '|||') AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id;
- +------------+---------+
- | student_id | courses |
- +------------+---------+
- | 2 | 3|||4|||5 |
- +------------+---------+
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
UNION 指令的目的是将两个 SQL 语句的结果合并起来。从这个角度来看, UNION 跟 JOIN 有些许类似,因为这两个指令都可以由多个表格中撷取资料。 UNION 的一个限制是两个 SQL 语句所产生的栏位需要是同样的资料种类。另外,当我用 UNION 这 个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT )。
UNION 的语法如下:
[SQL 语句 1]
UNION
[SQL 语句 2]
而我们要找 出来所有有营业额 (sales) 的日子。要达到这个目的,我们用以下的 SQL 语句:
SELECT Date FROM Store_Information
UNION
SELECT Date FROM Internet_Sales
trim函数可以过滤指定的字符串:
- mysql> SELECT TRIM(' bar '); //默认删除前后空格
- -> 'bar'
- mysql> SELECT TRIM(LEADING ',' FROM ',,barxxx'); //删除指定首字符 如',‘
- -> 'barxxx'
- mysql> SELECT TRIM(BOTH ',' FROM ',,bar,,,'); //删除指定首尾字符
- -> 'bar'
- mysql> SELECT TRIM(TRAILING ',' FROM 'barxxyz,,');
- -> 'barxxyz'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。