【MySql】使用记录<三>
2015-08-10 20:35
645 查看
左右连接问题:
select m.*,t1.tname as htname,t2.tname as gname from m inner join t as t1 on m.hid=t1.tid inner join t as t2 on m.gid=t2.tid;
mysql> select mid,t1.tname as htname,mres,t2.tname as gname,matime from m inner join t as t1 on m.hid=t1.tid inner join t as t2 on m.gid=t2.tid; //将组合到的大表再作为左表
mysql> select mid,t1.tname as htname,mres,t2.tname as gname,matime from m inner join t as t1 on m.hid=t1.tid inner join t as t2 on m.gid=t2.tid where matime between ‘2006-06-01’ and ‘2006-07-01’;
这里面最主要的就是练习连接中的别名! 多次使用
关键字 union
示意:把两条和多条sql语句的查询集,合成一个集合
sql_1 union sql_2 可以是同一张表,也可以是不同的表格
附:
ALTER TABLE:添加,修改,删除表的列,约束等表的定义。
查看列:desc 表名;
修改表名:alter table t_book rename to bbb;
添加列:alter table 表名 add column 列名 varchar(30);
删除列:alter table 表名 drop column 列名;
修改列名MySQL: alter table bbb change nnnnn hh int;
修改列名SQLServer:exec sp_rename’t_student.name’,’nn’,’column’;
修改列名Oracle:lter table bbb rename column nnnnn to hh int;
修改列属性:alter table t_book modify name varchar(22);
MySQL 查看约束,添加约束,删除约束 添加列,修改列,删除列
查看表的字段信息:desc 表名;
查看表的所有信息:show create table 表名;
添加主键约束:alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段);
添加外键约束:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
删除主键约束:alter table 表名 drop primary key;
删除外键约束:alter table 表名 drop foreign key 外键(区分大小写);
修改表名:alter table t_book rename to bbb;
添加列:alter table 表名 add column 列名 varchar(30);
删除列:alter table 表名 drop column 列名;
修改列名MySQL: alter table bbb change nnnnn hh int;
修改列名SQLServer:exec sp_rename’t_student.name’,’nn’,’column’;
修改列名Oracle:alter table bbb rename column nnnnn to hh int;
修改列属性:alter table t_book modify name varchar(22);
[code]根据给出的表结构按要求写出SQL语句。 **Match 赛程表** 字段名称 字段类型 描述 matchID int 主键 hostTeamID int 主队的ID guestTeamID int 客队的ID matchResult varchar(20) 比赛结果,如(2:0) matchTime date 比赛开始时间 **Team 参赛队伍表** 字段名称 字段类型 描述 teamID int 主键 teamName varchar(20) 队伍名称 Match的hostTeamID与guestTeamID都与Team中的teamID关联 查出 2006-6-1 到2006-7-1之间举行的所有比赛,并且用以下形式列出: 拜仁 2:0 不来梅 2006-6-21 mysql> select * from m; +-----+------+------+------+------------+ | mid | hid | gid | mres | matime | +-----+------+------+------+------------+ | 1 | 1 | 2 | 2:0 | 2006-05-21 | | 2 | 2 | 3 | 1:2 | 2006-06-21 | | 3 | 3 | 1 | 2:5 | 2006-06-25 | | 4 | 2 | 1 | 3:2 | 2006-07-21 | +-----+------+------+------+------------+ 4 rows in set (0.00 sec) mysql> select * from t; +------+----------+ | tid | tname | +------+----------+ | 1 | 国安 | | 2 | 申花 | | 3 | 公益联队 | +------+----------+ 3 rows in set (0.00 sec)
select m.*,t1.tname as htname,t2.tname as gname from m inner join t as t1 on m.hid=t1.tid inner join t as t2 on m.gid=t2.tid;
[code]+------+------+------+------+------------+----------+----------+ | mid | hid | gid | mres | matime | htname | gname | +------+------+------+------+------------+----------+----------+ | 1 | 1 | 2 | 2:0 | 2006-05-21 | 国安 | 申花 | | 2 | 2 | 3 | 1:2 | 2006-06-21 | 申花 | 布尔联队 | | 3 | 3 | 1 | 2:5 | 2006-06-25 | 布尔联队 | 国安 | | 4 | 2 | 1 | 3:2 | 2006-07-21 | 申花 | 国安 | +------+------+------+------+------------+----------+----------+
mysql> select mid,t1.tname as htname,mres,t2.tname as gname,matime from m inner join t as t1 on m.hid=t1.tid inner join t as t2 on m.gid=t2.tid; //将组合到的大表再作为左表
[code]+------+----------+------+----------+------------+ | mid | htname | mres | gname | matime | +------+----------+------+----------+------------+ | 1 | 国安 | 2:0 | 申花 | 2006-05-21 | | 2 | 申花 | 1:2 | 布尔联队 | 2006-06-21 | | 3 | 布尔联队 | 2:5 | 国安 | 2006-06-25 | | 4 | 申花 | 3:2 | 国安 | 2006-07-21 | +------+----------+------+----------+------------+
mysql> select mid,t1.tname as htname,mres,t2.tname as gname,matime from m inner join t as t1 on m.hid=t1.tid inner join t as t2 on m.gid=t2.tid where matime between ‘2006-06-01’ and ‘2006-07-01’;
[code]+------+----------+------+----------+------------+ | mid | htname | mres | gname | matime | +------+----------+------+----------+------------+ | 2 | 申花 | 1:2 | 布尔联队 | 2006-06-21 | | 3 | 布尔联队 | 2:5 | 国安 | 2006-06-25 | +------+----------+------+----------+------------+
这里面最主要的就是练习连接中的别名! 多次使用
关键字 union
示意:把两条和多条sql语句的查询集,合成一个集合
sql_1 union sql_2 可以是同一张表,也可以是不同的表格
[code]mysql> create table tmp(id int unsigned auto_increment primary key,name varchar(32) not null); mysql> insert into tmp values(1,'jimiy'), -> (2,'Tom'), -> (3,'Kitty'); Query OK, 3 rows affected (0.07 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from tmp; +----+-------+ | id | name | +----+-------+ | 1 | jimiy | | 2 | Tom | | 3 | Kitty | +----+-------+ 3 rows in set (0.00 sec) 注意:【如何添加列】 mysql> alter table tmp add column age int; Query OK, 0 rows affected (0.78 sec) mysql> select * from tmp; +----+-------+------+ | id | name | age | +----+-------+------+ | 1 | jimiy | NULL | | 2 | Tom | NULL | | 3 | Kitty | NULL | +----+-------+------+ 3 rows in set (0.00 sec) 注意:【如何修改列】 mysql> alter table tmp change id hid int; Query OK, 3 rows affected (1.04 sec) Records: 3 Duplicates: 0 Warnings: 0 【union】合并 mysql> select * from user -> union -> select * from tmp; +-----+-------+------+ | uid | name | age | +-----+-------+------+ | 1 | Jimiy | 20 | | 2 | Tom | 21 | | 3 | Hello | 23 | | 4 | Jack | 24 | | 5 | Kitty | 22 | | 6 | jacki | 23 | | 1 | jimiy | 22 | | 2 | Tom | 20 | | 3 | Kitty | 23 | +-----+-------+------+ 9 rows in set (0.03 sec) <union>语句必须满足:各语句取出的列数必须相同!【列名称不要求一致,会使用第一条,列对应完全相等的将会被合并,且合并是很耗时的操作,一般不建议让union合并,使用union all可以避免合并,速度有一个好的提升,union的语句中不用写order by,sql得到的总的结果集是可以order by的。】 可以这样: mysql> (select * from a) -> union all -> (select * from b) -> order by num desc; +------+------+ | id | num | +------+------+ | e | 99 | | d | 20 | | c | 15 | | c | 15 | | b | 10 | | d | 10 | | a | 5 | | b | 5 | +------+------+ 8 rows in set (0.00 sec) 把id相同的加起来:【可以把合并的看成一张大表 然后group by 再sum】 mysql> select id,sum(num) from (select * from a union all select * from b) as tmp group by id; +------+----------+ | id | sum(num) | +------+----------+ | a | 5 | | b | 15 | | c | 30 | | d | 30 | | e | 99 | +------+----------+ 5 rows in set (0.03 sec)
附:
ALTER TABLE:添加,修改,删除表的列,约束等表的定义。
查看列:desc 表名;
修改表名:alter table t_book rename to bbb;
添加列:alter table 表名 add column 列名 varchar(30);
删除列:alter table 表名 drop column 列名;
修改列名MySQL: alter table bbb change nnnnn hh int;
修改列名SQLServer:exec sp_rename’t_student.name’,’nn’,’column’;
修改列名Oracle:lter table bbb rename column nnnnn to hh int;
修改列属性:alter table t_book modify name varchar(22);
MySQL 查看约束,添加约束,删除约束 添加列,修改列,删除列
查看表的字段信息:desc 表名;
查看表的所有信息:show create table 表名;
添加主键约束:alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段);
添加外键约束:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
删除主键约束:alter table 表名 drop primary key;
删除外键约束:alter table 表名 drop foreign key 外键(区分大小写);
修改表名:alter table t_book rename to bbb;
添加列:alter table 表名 add column 列名 varchar(30);
删除列:alter table 表名 drop column 列名;
修改列名MySQL: alter table bbb change nnnnn hh int;
修改列名SQLServer:exec sp_rename’t_student.name’,’nn’,’column’;
修改列名Oracle:alter table bbb rename column nnnnn to hh int;
修改列属性:alter table t_book modify name varchar(22);
相关文章推荐
- MySQL的MyISAM和InnoDB存储引擎表结构
- MySql数据库主从同步配置
- MySQL数据库与登录注册
- mysql 创建用户
- MySQL limit用法,分页的实现。
- MySQL jdbc增删改查
- 8.10 mysql
- MYSQL索引结构原理、性能分析与优化
- MySQL索引建立、优点、不足
- MySQL数据库读写分离
- MySQL事物处理
- 【MySQL】 命令行下执行show databases
- 【转】MySQL数据表中记录不存在则插入,存在则更新
- mysqldump参数之--master-data
- 【MySQL】 ODBC connector5.3.4 安装失败
- MySQL in查询优化<一>
- MySQL读写分离
- 通用券抢券的优化过程.
- mysql的初始化配置及命令行选项
- mysql复制原理