zoukankan      html  css  js  c++  java
  • 我最近练习的 mysql 语句

    -----------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%'; --执行编码显示
    

  • 相关阅读:
    [Tips] 树莓派VNC登录
    [Tips] 联通宽带+华为路由器,如何进行NAT
    [Tips] 树莓派4B 风扇安装
    [Tips] 家庭树莓派,如何外网访问
    [Tips] 命令行获取设备的外网IP
    MySQL 如何让自增id设置为从1开始
    MySQL报错:Packet for query is too large (2,588 > 2,048).
    Java 实现 Timstamp 和 String 互相转换
    MySQL修改 mysql-bin 日志保存天数以及文件大小限制
    Linux Shell 中的年月日 时分秒
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786809.html
Copyright © 2011-2022 走看看