-----------2014-02-28 mysql 作业 脚本-----------
create database mydata_0228;
use mydata_0228;
create table if not exists book # 图书表
(
id int primary key auto_increment comment '主键',
book_id varchar(32) not null comment '图书ID',
author_id varchar(32) not null comment '作者ID',
book_name varchar(32) not null comment '图书名', ,
pages int not null comment '图书页码数', ,
press varchar(32) not null comment '图书出版社'
) engine=innodb default charset=utf8 comment='图书表';
----
insert into book values(null, 'b100', 'A', 'Shell编程', 128, '清华出版社');
insert into book values(null, 'b200', 'B', 'JAVA开发实战经典', 256, '清华出版社');
insert into book values(null, 'b300', 'C', 'Hadoop实战', 512, '北大出版社');
insert into book values(null, 'b400', 'D', 'Maven实战', 1024, '北大出版社');
insert into book values(null, 'b500', 'E', 'Linux私房菜', 2048, '清华出版社');
insert into book values(null, 'b600', 'E', 'Windows编程', 2048, '清华出版社');
insert into book values(null, 'b700', 'D', 'Maven入门', 512, '清华出版社');
insert into book values(null, 'b600', 'D', 'Maven高级编程', 1024, '清华出版社');
create table if not exists author # 作者表
(
id int primary key auto_increment comment '主键', -- 自动递增
author_id varchar(32) not null comment '作者ID',
author_name varchar(32) not null comment '作者名',
content varchar(32) not null comment '作者内容简介'
) engine=innodb default charset=utf8 comment='作者表';
----
insert into author values(null, 'A', '张三S', '91年出生,擅长SHELL');
insert into author values(null, 'B', '李四J', '92年出生,擅长JAVA');
insert into author values(null, 'C', '王五H', '93年出生,擅长Hadoop');
insert into author values(null, 'D', '朱六M', '94年出生,擅长Maven');
insert into author values(null, 'E', '王二LW', '95年出生,擅长Linux, Windows');
----
create table if not exists award # 奖项表
(
id int primary key auto_increment comment '主键',
book_id varchar(32) not null comment '图书ID',
author_id varchar(32) not null comment '作者ID',
cup_type varchar(32) not null comment '奖项类型',
cup_time timestamp not null default now() comment '时间'
) engine=innodb default charset=utf8 comment='奖项表';
insert into award values(null, 'b100', 'A', '金奖', now());
insert into award values(null, 'b200', 'B', '银奖', now());
insert into award values(null, 'b300', 'C', '铜奖', now());
insert into award values(null, 'b400', 'D', '金奖', now());
insert into award values(null, 'b500', 'E', '银奖', now());
insert into award values(null, 'b700', 'D', '银奖', now());
insert into award values(null, 'b800', 'D', '银奖', now());
----
--二 建立索引
alter table book add index idx_book_book_id(book_id);
alter table book add index idx_book_author_id(author_id);
alter table book add index idx_book_pages(pages);
alter table award add index idx_award_book_id(book_id);
alter table award add index idx_award_author_id(author_id);
alter table award add index idx_award_cup_time(cup_time);
alter table author add index idx_author_author_id(author_id);
----
--三,完成以下SQL
--1. 查询姓王的作者有多少 ac
select count(*) from author where author_name LIKE '王%';
--2. 查询页数最多的前5名作者姓名和书名 ac
select author_name,book_name from book a inner join author b on a.author_id=b.author_id order by a.pages desc limit 5;
--3. 查询获奖最多的作者姓名,获奖时间, 思路是 : award 与 author 连接 ac
select author_name, cup_time from award a inner join author b on a.author_id=b.author_id group by a.author_id order by count(*) desc limit 1;
--4. 查询获奖作者总人数 ac
select count(distinct author_id) from award;
------------------------------------------------
--5. 查询最近获奖的一本书名和出版社 ac
select book_name,cup_time from book a inner join award b on a.book_id=b.book_id order by cup_time desc limit 1;
--6. 查询同时获得过金奖、银奖的作者姓名 ac
select author_name from award a inner join award b on a.author_id=b.author_id inner join author c on b.author_id=c.author_id where a.cup_type='金奖' and b.cup_type='银奖';
--7. 查询获得金奖的图书有多少本,银奖的有多少本 ac
select cup_type, count(*) from award where cup_type='金奖' OR cup_type='银奖' group by cup_type;
--8. 查询最近一年内获过奖的作者姓名
select author_name from author where author_id in (
select distinct(author_id) from award where cup_time >= (select date_sub(now(), interval 1 year))
);
--9. 查询每位作者各自出版的图书名 ac
select a.author_id, author_name, book_name from book a inner join author b on a.author_id=b.author_id order by a.author_id;
---------------Mysql 的自我学习----------------------------------
Mysql 解决乱码问题,在配置文件中,现在以ubuntu为例子,/etc/mysql/my.cnf 添加
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
default-character-set=utf8
show variables like 'character%'; --执行编码显示
安装后mysql后,可以在软件中心直接安装,root用户登陆mysql, Ctrl + L 清理屏幕
mysql -uroot -p
show variables like 'character%'; --执行编码显示