这篇笔记,主要是为了记录 MySQL 一些有用的SQL语句和命令。以前在学校里,接触数据库不多,以至于在面试的时候总是被问得非常难堪。现在在公司里,突然发现好多东西是需要学的。
1. 列出所有的表
show tables;
2. 查询表结构
describe table_name; show columns from table_name; show create table table_name;
3. 查询表中的第几行
select * from table_name limit n; 查询前n行 select * from table_name limit n-1, m-n; 查询从第n行开始的m行的记录
4. 设置数据库编码
set names utf8;
5. 创建数据库表
语法:http://dev.mysql.com/doc/refman/5.1/en/create-table.html
例子:http://www.blogjava.net/coderdream/archive/2007/08/17/137642.html
# 创建InnoDB引擎存储的数据库表 CREATE TABLE IF NOT EXISTS Writers(Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(25)) ENGINE=INNODB;
6. 联合
Select A.Name from A INNER JOIN B ON A.id = B.id Select A.Name from A Left JOIN B ON A.id = B.id Select A.Name from A Right JOIN B ON A.id = B.id Select A.Name from A Left JOIN B USING (id)
7. Group by语句
SELECT sex, COUNT(*) FROM table GROUP BY sex # 查询男/女性别人数 SELECT sex, MAX(ages) AS age FROM table GROUP BY sex; # 查询男/女最大年龄
8. MySQL创建用户与授权
参考:http://hi.baidu.com/fwso/blog/item/658c00555bdd1cc5b645aee0.html
CREATE USER 'username'@'host' IDENTIFIED BY 'password'; GRANT privileges ON databasename.tablename TO 'username'@'host'
查询已有的用户:
select * from mysql.user;
9. 向表中插入数据
参考:http://database.51cto.com/art/200811/97974.htm
INSERT INTO table_name [(col_name,...)] VALUES (epression,...),... INSERT INTO table_name SET col_name=expression, ...
10. 删除表
DROP TABLE table_name
11. 批量执行SQL语句
假设SQL语句保存在mysql.sql文件中。
source mysql.sql
12. 更改Root账号密码
$ /usr/bin/mysqladmin -u root password 'new-password'
或者
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;
13. 查询一周内的数据
select count(*) from tablename where gmt_create > date_sub(now(), interval 1 week) and gmt_create < now();
参考:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add
http://www.cnmiss.cn/?p=216
$. 一些资源
http://www.ccvita.com/category/mysql/