Mysql
本篇博文将介绍 Mysql 常见的 Sql 命令。
- 创建数据库
create database Ball#创建 Ball 数据库
- 使用数据库
use Ball #使用 Ball 数据库
- 删除数据库
drop database Ball
- 创建数据表
创建表FootBallStar,包含自增 id,足球明星姓名(name)、年龄(age)、得分(score)、足球俱乐部(footballclub)、国籍(nationality)属性。
CREATE TABLE FootBallStar (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(32) NOT NULL
COMMENT '姓名',
age INT(11) NOT NULL
COMMENT '年龄',
score INT(11) COMMENT '进球得分',
footballclub VARCHAR(32) NOT NULL
COMMENT '俱乐部',
nationality VARCHAR(32) NOT NULL
COMMENT '国籍',
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
COMMENT '创建时间',
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
COMMENT '更新时间',
PRIMARY KEY (id)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8
COMMENT = '足球明星资料库';
- 插入数据
INSERT INTO FootBallStar (name, age, score, footballclub, nationality) VALUES ('梅西', 29, 8, '巴塞罗那', '阿根廷');
INSERT INTO FootBallStar (name, age, score, footballclub, nationality) VALUES ('苏亚雷斯', 29, 8, '巴塞罗那', '乌拉圭');
INSERT INTO FootBallStar (name, age, score, footballclub, nationality) VALUES ('C罗', 31, 8, '皇家马德里', '葡萄牙');
INSERT INTO FootBallStar (name, age, score, footballclub, nationality) VALUES ('格林兹曼', 25, 6, '马德里竞技', '法国');
INSERT INTO FootBallStar (name, age, score, footballclub, nationality) VALUES ('迭戈-科斯塔', 28, 10, '切尔西', '西班牙');
- 查询数据
#查询表中全部字段(建议使用第二种方法进行查找)
#第一种方法
select * from FootBallStar
#第二种方法
select id,name,age,score,footballclub,nationality,create_time,update_time from FootBallStar;
#查询某个字段(如姓名、年龄)
select name,age from FootBallStar;
#条件查询(如查询name=‘梅西’的球员信息)
select id,name,age,score,footballclub,nationality,create_time,update_time from FootBallStar where name='梅西';
#同时查询多个球员,比如名字叫梅西和C罗的球星,你可以在条件上使用 or 连接
select * from FootBallStar where name="C罗" or name="梅西";
#但是你还可以使用一个更好的方法,那就是使用 in。
select * from FootBallStar where name in("C罗","梅西");
可以发现,两种方法实现了同样的效果,明显第二种方法,更加简便,特别是当查询的球星名字有许多的时候,效果就更加明显了。
- 删除数据表
DROP TABLE FootBallStar#删除数据表FootBallStar
删除表中信息
- 删除表中部分信息
- 删除表中全部信息
# 删除表中部分信息
# 删除name='C罗'的全部信息
DELETE from FootBallStar where name='C罗';
#删除全部信息
#第一种方法
DELETE from FootBallStar;
#第二种方法
TRUNCATE TABLE FootBallStar;
当使用第一种方法删除掉FootBallStar数据表中的全部信息时,再向数据表中插入数据时,主键 id 会从原来id 的基础上增加,而TRUNCAT会从1开始自增。也就是说,原来数据表中的数据有五条,用第一种方法进行删除,再插入,这时 id 会从6开始计算。而用第二种方法进行删除,再插入,这时 id 会从1开始计算。 DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
- 更新数据库
#id=1的球星进球数加1
UPDATE FootBallStar set score=score+1 WHERE id =1;
- 排序
如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪中方式来进行排序,再返回搜索结果。如下示例分别按照进球个数(score 字段)使用降序(desc)和升序(asc)进行排序,默认情况是降序排列。
SELECT * from FootBallStar ORDER BY score;
select * from FootBallStar order by score desc;
- 分组
GROUP BY 语句根据一个或多个列对结果集进行分组。
#单列分组
select footballclub,count(1) from FootBallStar group by footballclub;
#多列分组
select footballclub, score, count(1) from FootBallStar group by footballclub, score;
- 表数据导出到文件
#表中数据导入到/tmp/footBallStar.txt
select * from FootBallStar into outfile '/tmp/footBallStar.txt';
- 文件数据导入到表
load data local infile '/tmp/footBallStar.txt' into table FootBallStar;
其中 /tmp/footBallStar.txt的文件格式为:
6 伊瓜因 29 9 那不勒斯 阿根廷
7 阿圭罗 27 8 曼城 阿根廷