1.关闭目前运行的 MySQL 服务器
mysqladmin -u root -p shutdown
输入密码
2.启动
root@host# cd /usr/bin
./mysqld_safe &
3.用户管理
3.1.执行sql
INSERT INTO user
(host, user, password,
select_priv, insert_priv, update_priv)
VALUES ('localhost', 'guest',
PASSWORD('guest123'), 'Y', 'Y', 'Y');
FLUSH PRIVILEGES;
SELECT host, user, password FROM user WHERE user = 'guest';
在 MySQL5.7 中 user 表的 password 已换成了authentication_string。
用户权限列表如下:
Select_priv
Insert_priv
Update_priv
Delete_priv
Create_priv
Drop_priv
Reload_priv
Shutdown_priv
Process_priv
File_priv
Grant_priv
References_priv
Index_priv
Alter_priv
3.2.grant
mysql>GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON TUTORIALS.*
-> TO 'zara'@'localhost'
-> IDENTIFIED BY 'zara123';
给指定数据库TUTORIALS添加用户 zara ,密码为 zara123
4.管理mysql命令
use RUNOOB;
SHOW DATABASES;
SHOW TABLES; desc tables
SHOW COLUMNS FROM runoob_tbl;
SHOW INDEX FROM runoob_tbl;
5.创建库表等
CREATE DATABASE IF NOT EXISTS RUNOOB DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
drop database RUNOOB;
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE table_name ;
truncate table 表名;
delete from 表名 where 删除条件;
CREATE TABLE `truncatetable` (
`name` varchar(255) DEFAULT NULL,
`truncateId` int(11) NOT NULL,
PRIMARY KEY (`truncateId`),
UNIQUE KEY `index_tt` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into truncatetable (truncateid,name) values(1,'abc'),(2,'bbbb')
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
你可以使用 LIMIT 属性来设定返回的记录数。
你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
SELECT * from runoob_tbl WHERE BINARY runoob_author='RUNOOB.COM';
WHERE 子句的字符串比较默认是不区分大小写的
使用了 BINARY 关键字,是区分大小写的
将 id 为 5 的手机号改为默认的 - : update students set tel=default where id=5;
当我们需要将字段中的特定字符串批量修改为其他字符串时,可已使用以下操作:
UPDATE table_name SET field=REPLACE(field, 'old-string', 'new-string')
[WHERE Clause]
DELETE FROM table_name [WHERE Clause]
like 匹配/模糊匹配,会与 % 和 _ 结合使用。
'%a' //以a结尾的数据
'a%' //以a开头的数据
'%a%' //含有a的数据
'_a_' //三位且中间字母是a的
'_a' //两位且结尾字母是a的
'a_' //两位且开头字母是a的
MySQL UNION 操作符语法格式:
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。
ALL表示不去掉重复的。
select * from fdi_task_execution_log_t ORDER BY id DESC,task_name DESC排序
SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
+--------------------------+--------------+
| coalesce(name, '总数') | singin_count |
+--------------------------+--------------+
| 小丽 | 2 |
| 小明 | 7 |
| 小王 | 7 |
| 总数 | 16 |
+--------------------------+--------------+
4 rows in set (0.01 sec)
WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。
其中记录 NULL 表示所有人的登录次数。如果不用coalesce,'总数'的话。
coalesce(a,b,c);
如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null(没意义)