MySQL数据库入门练习200句

目的:

学习总是需要记忆遗忘再记忆反反复复才能印入脑海。IT技术尤其如此。最好解决遗忘的方式,就是多多反复,然而捧起一本大部头从新看起显然效率低下。对于数据库入门级别的知识,看过一两遍,也就能理解主要机理了,欠缺在于代码练习。因此最近在重刷MySQL入门的同时,总结起来练习所使用的代码。用于以后的温习。某一天发现自己生疏了,花一点时间敲上一通,记忆就回来了。

说明:

1 大部分的语句都非常简单,进行了少量的注释; 
2 代码稍有一些冗余,是为了熟练操作; 
3 有意设置了一些错误,注意数据库的返回的信息; 
4 所有测试在MariaDB上进行,MariaDB和mysql几乎就是一样,但如果有错误,系手误或理解错误,望担待; 
5 本文共100句代码,覆盖从数据库创建删除,表创建删除修改,键创建删除,索引创建删除的内容,后续会继续增加; 
6 附《MySQL入门很简单》一书电子版,可用于配合练习,网盘地址,密码:77p4

——2016/12/14

关于200句

延续我之前的MySQL入门练习100句,增加到200句,这部分主要涉及SQL语言的增删改查。比较烦琐的是查询,MySQL支持非常灵活多样的查询。这立业之涉足皮毛,但对于熟悉操作仍然有益。部分内容稍欠周详,在后续我自己练习的时候会再补上。

代码

//重建数据库
101, create database testdatabase;use database testdatabase;
102, create table tt1(id int, name varchar(20),age int,sex boolean);
103, show tables;desc tt1;

//插入
104, insert into tt1 values(1,"zhang",25,0);
105, insert into tt1 values(2,"wang",25,1);
106, select * from tt1;
107, insert into tt1(id,name,age,sex) values(3,"li",28,1);
108, insert into tt1(id,name,sex,age) values(4,"sun",0,22);
109, insert into tt1(id,name,sex) values(5,"zhao",30,1);
110, insert into tt1(id,age,name) values(6,"he",47,0);
111, insert into tt1(id,age,name) values(7,"chen",22,1),(7,"zhang",22,1),(7,"xie",32,1);
112, select * from tt1;

//修改
113, update tt1 set id=10,name="new",age=100,sex=0 where id=1; select * from tt1;
114, update tt1 set id=11,name="new" where id=2,age=25; select *from tt1;
115, update tt1 set id=12,sex=1 where id=7; select * from tt1;
116, update tt1 set sex=1 where id>3;
117, update tt1 set sex=0 where id<4;


//删除
118, delete from tt1 where id=1;select * from tt1;
119, delete from tt1 where id=12;select * from tt1;

//查询
120, alter table tt1 add address varchar(30);
121, update tt1 set address="Beijing" where sex=1;
122, update tt1 set address="Shanghai" where sex=0;
//简单查询
123, select id from tt1;
124, select id,name from tt1;
125, select id,name,address from tt1;
//条件查询
126, select id,name,address from tt1 where address="Beijing";
127, select * from tt1 where id in(2,3,4);
128, select * from tt1 where id not in(2,3,4);
129, select * from tt1 where id between 2 and 5;
130, select * from tt1 where id not between 2 and 5;
131, select * from tt1 where address like "beijing";
132, select * from tt1 where address like "bei";
133, select * from tt1 where address like "bei%";
134, select * from tt1 where address not like "bei%";
135, select * from tt1 where address is null;
136, select * from tt1 where address is not null;
137, select * from tt1 where age<20 and sex=1;
138, select * from tt1 where sex=0 or age>30;
//查询结果不重复
139, select distinct address from tt1;  
//查询结果排序
140, select * from tt1 order by age;
141, select * from tt1 order by age asc;
142, select * from tt1 order by age desc;
//分组查询
143, select * from tt1 group by sex;//单独使用group by 只会选择每个分组的一条记录
//group by 与 group_concat结合使用
144, select group_concat(name),sex from tt1 group by sex;
145, select group_concat(name),group_concat(age),sex from tt1 group by sex;
146, select group_concat(name,age),sex from tt1 group by sex;
//group by与集合函数结合使用
147, select sex,count(sex) from tt1 group by sex;
148, select sex,count(sex) from tt1 group by sex having sex>2;//having用于对分组后的结果加限制条件
149, select sex,count(sex) from tt1 group by sex having count(sex)>2;
//with rollup
150, select sex,count(sex) from tt1 group by sex with rollup;//在显示记录的最后一行加一条,记录是上面所有记录的和,通常用于合计数量
//limit显示限制
151, select * from tt1;
152, select * from tt1 limit 2;
153, select * from tt1 limit 3;
154, select * from tt1 limit 0,2;
155, select * from tt1 limit 1,2;
//使用集合函数查询
//为了更好的理解本问题,新建一个表
156, create table grade(id int,name varchar(10),subject varchar(10),score int,sex boolean);
157, insert into grade values(1,"wang","math",100,1),(1,"wang","english",96,1),(1,"wang","physics",90,1);
     insert into grade values(2,"li","math",96,1),(2,"li","english",85,1),(2,"li","physics",99,1);
     insert into grade values(3,"sun","math",85,0),(3,"sun","english",98,0),(3,"sun","physics",80,0);
158, select * from grade;
159, select count(*) from grade;
160, select id,name,sum(score) from grade where id=1;
161, select id,name,sun(score) from grade group by id;
162, select id,name,sum(score) from grade group by id order by sum(score) desc;
163, select id,name,avg(score) from grade where id=2;
164, select id,name,avg(score),sum(score) from grade where id =3;
165, select id,name,avg(score) from grade group by id;
166, select subject,avg(score) from grade group by subject;* from 
167, select subject,avg(score) from grade group by subject order by avg(score);
168, select name,max(score) from grade where subject="math";
169, select name,max(score) from grade where subject="english";
//连接查询
    //内连接
170, create table stu(id int,name varchar(10),age int,sex boolean);
171, insert into stu values(1,"wang",25,1),(2,"li",23,1),(3,"sun",23,0),(4,"zhou",27,1),(5,"zhang",22,0);
172, select id,name,age,sex,score from stu,grade where stu.id=grade.id;
173, select stu.id,stu.name,stu.age,stu.sex,score from stu,grade where stu.id=grade.id;
174, select stu.id,stu.name,stu.age,stu.sex,score from stu,grade where stu.id=grade.id and score>90;
    //外连接
175, select stu.id,stu.name,stu.age,stu.sex,score from stu left join grade on stu.id=grade.id;
176, select stu.id,stu.name,stu.age,stu,sex,score from stu right join grade on stu.id=grade.id;
177, insert into grade values(4,"hu","math",99,1),(5,"liu","english",97,0);
178, select stu.id,stu.name,stu.age,stu.sex,subject,score from stu left join grade on stu.id=grade.id;
179, select stu.id,stu.name,stu.age,stu.sex,subject,score from stu right join grade on stu.id=grade.id;
    //子查询
180, select * from stu where id in (select *from grade);
181, select * from grade where id in (select * from stu);
182, create table scholarship(level int,money int,score int);
183, insert into scholarship values(1,10000,90),(2,5000,85),(3,3000,80);
184, select id,name,score from grade where score>=(select score from scholarship where level=1);
185, select id,name,score from grade where score>=(select min(score) from scholarship);
    //exists子查询
186, select * from stu where exists (select name from grade where id=1);
187, select * from grade where score>any(select score from scholarship);
188, select * from grade where score>all(select score from scholarship);
//合并查询结果
189, select name from stu union select name from grade;
190, select name from stu union all select name from grade;
//别名
191, select * from scholarship s where s.level=1;
192, select * from scholarship s where s.money=5000;
193, select s.name from stu s,grade g where s.name=g.name;
194, select subject as su,score as sc from grade;
195, select * from stu where name regexp "^w";
196, select * from stu where name regexp "g$";
197, select * from stu where name regexp "^w.g$";
198, select * from stu where name regexp "^w..g$";
199, select * from stu where name regexp "[aeo]";
200, select * from stu where name regexp "[a-g]";
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值