头歌——MySQL 基本操作

一给  金牌会员 | 2024-10-19 02:57:35 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 846|帖子 846|积分 2538

目录


数据库1-MySQL数据定义与操作实战
MySQL数据库 - 初识MySQL
MySQL数据库 - 数据库和表的基本操作(一)
MySQL数据库 - 数据库和表的基本操作(二)
MySQL数据库 - 单表查询(一)
MySQL数据库 - 单表查询(二)
MySQL数据库 - 单表查询(三)
MySQL数据库 - 连接查询
MySQL数据库 - 子查询
MySQL数据库 - 复杂查询(一)
MySQL数据库 - 复杂查询(二)
MySQL数据库 - 使用聚合函数查询




数据库1-MySQL数据定义与操作实战

MySQL数据库 - 初识MySQL

第1关:创建数据库
  1. mysql -uroot -p123123 -h127.0.0.1
复制代码
  1. create database MyDb;
复制代码
第2关创建表
  1. mysql -uroot -p123123 -h127.0.0.1
复制代码
  1. create database TestDb;
复制代码
  1. use TestDb;
复制代码
  1. create table t_emp (
  2.     id int,
  3.     name varchar(32),
  4.     deptId int,
  5.     salary float
  6. );
复制代码
第3关:使用主键约束
  1. mysql -uroot -p123123 -h127.0.0.1
复制代码
  1. create database MyDb;
复制代码
  1. use MyDb;
复制代码
  1. create table t_user1(
  2.     userId INT PRIMARY KEY,
  3.     name VARCHAR(32),
  4.     password VARCHAR(11),
  5.     phone VARCHAR(11),
  6.     email VARCHAR(32)
  7. );
复制代码
  1. create table t_user2(
  2.     name VARCHAR(32),
  3.     phone VARCHAR(11),
  4.     email VARCHAR(32),
  5.     PRIMARY KEY(name,phone)
  6. );
复制代码
第4关:外键约束
  1. mysql -uroot -p123123 -h127.0.0.1
复制代码
  1. create database MyDb;
复制代码
  1. use MyDb;
复制代码
  1. CREATE TABLE t_class
  2. (
  3.     id INT  PRIMARY KEY,
  4.     name VARCHAR(22)
  5. );
复制代码
  1. CREATE TABLE t_student
  2. (
  3.     id INT  PRIMARY KEY,
  4.     name VARCHAR(22) ,
  5.     classId int,
  6.     CONSTRAINT fk_stu_class1 FOREIGN KEY(classId) REFERENCES t_class(id)
  7. );
复制代码
第5关:添加常用约束
  1. mysql -uroot -p123123 -h127.0.0.1
复制代码
  1. CREATE DATABASE MyDb;
复制代码
  1. USE MyDb;
复制代码
  1. CREATE TABLE t_user
  2. (
  3.     id INT  PRIMARY KEY AUTO_INCREMENT,
  4.     username VARCHAR(32) NOT NULL UNIQUE,
  5.     sex VARCHAR(4) DEFAULT '男'
  6. )DEFAULT CHARSET=utf8;
复制代码
MySQL数据库 - 数据库和表的基本操作(一)

第1关:查看表结构与修改表名
  1. USE Company;
  2. ########## Begin ##########
  3. ########## modify the table name ##########
  4. ALTER TABLE tb_emp
  5. RENAME jd_emp;
  6. ########## show tables in this database ##########
  7. show tables;
  8. ########## describe the table ##########
  9. describe jd_emp;
  10. ########## End ##########
复制代码
第2关:修改字段名与字段数据类型
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## change the column name ##########
  5. ALTER TABLE tb_emp c
  6. hange Id prod_id int(11);
  7. ########## change the data type of column ##########
  8. ALTER TABLE tb_emp
  9. MODIFY Name varchar(30);
  10. ########## End ##########
  11. DESCRIBE tb_emp;
复制代码
第3关:添加与删除字段
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## add the column ##########
  5. ALTER TABLE tb_emp
  6. ADD Country varchar(20) AFTER Name;
  7. ########## delete the column ##########
  8. ALTER TABLE tb_emp DROP Salary;
  9. ########## End ##########
  10. DESCRIBE tb_emp;
复制代码
第4关:修改字段的排列位置
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## modify the column to top ##########
  5. ALTER TABLE tb_emp
  6. MODIFY Name varchar(25) FIRST;
  7. ########## modify the column to the rear of another column ##########
  8. ALTER TABLE tb_emp
  9. MODIFY DeptId int(11) AFTER Salary;
  10. ########## End ##########
  11. DESCRIBE tb_emp;
复制代码
第5关:删除表的外键约束
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## delete the foreign key ##########
  5. ALTER TABLE tb_emp DROP FOREIGN KEY emp_dept;
  6. ########## End ##########
  7. SHOW CREATE TABLE tb_emp \G;
复制代码
MySQL数据库 - 数据库和表的基本操作(二)

第1关:插入数据
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## bundle insert the value #########
  5. INSERT INTO tb_emp(Id,Name,DeptId,Salary)
  6. VALUES (1,"Nancy",301,2300.00),
  7. (2,"Tod",303,5600.00),(3,"Carly",301,3200.00);
  8. ########## End ##########
  9. SELECT * FROM tb_emp;
  10. ########## End ##########
复制代码
第2关:更新数据
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## update the value ##########
  5. UPDATE tb_emp
  6. SET Name="Tracy",DeptId=302,Salary=4300.00
  7. WHERE id=3;
  8. ########## End ##########
  9. SELECT * FROM tb_emp;
  10. ########## End ##########
  11. DESCRIBE tb_emp;
复制代码
第3关:删除数据
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## delete the value ##########
  5. DELETE FROM tb_emp
  6. WHERE Salary>3000;
  7. ########## End ##########
  8. SELECT * FROM tb_emp;
  9. ########## End ##########
  10. DESCRIBE tb_emp;
复制代码
MySQL数据库 - 单表查询(一)

第1关:基本查询语句
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## retrieving the Name and Salary ##########
  5. select Name,Salary from tb_emp;
  6. ########## retrieving all the table ##########
  7. select * from tb_emp;
  8. ########## End ##########
复制代码
第2关:带 IN 关键字的查询
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## retrieving the Name and Salary with IN statement ##########
  5. SELECT Name,Salary FROM tb_emp
  6. WHERE Id NOT IN (1);
  7. ########## End ##########
复制代码
第3关:带 BETWEEN AND 的范围查询
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## retrieving the Name and Salary with BETWEEN AND statement ##########
  5. SELECT Name,Salary FROM tb_emp
  6. WHERE Salary BETWEEN 3000 AND 5000;
  7. ########## End ##########
复制代码
MySQL数据库 - 单表查询(二)

第1关:带 LIKE 的字符匹配查询
  1. USE Company;
  2. ######### Begin #########
  3. SELECT Name,Salary FROM tb_emp
  4. WHERE Name LIKE "C%";
  5. ######### End #########
复制代码
第2关:查询空值与去除重复效果
  1. USE Company;
  2. ######### Begin #########
  3. SELECT * FROM tb_emp WHERE DeptId IS NULL;
  4. ######### End #########
  5. ######### Begin #########
  6. SELECT DISTINCT Name FROM tb_emp;
  7. ######### End #########
复制代码
第3关:带 AND 与 OR 的多条件查询
  1. USE Company;
  2. ######### Begin #########
  3. SELECT * FROM tb_emp
  4. WHERE DeptId=301 AND Salary > 3000;
  5. ######### End #########
  6. ######### Begin #########
  7. SELECT * FROM tb_emp
  8. WHERE DeptId=301 OR DeptId=303;
  9. ######### End #########
复制代码
MySQL数据库 - 单表查询(三)

第1关:对查询效果进行排序
  1. USE School;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## 查询1班同学的所有信息以成绩降序的方式显示结果 ##########
  5. select * from tb_score
  6. where class_id = 1
  7. order by score desc;
  8. ########## End ##########
复制代码
第2关:分组查询
  1. USE School;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## 对班级名称进行分组查询 ##########
  5. SELECT * FROM tb_class
  6. GROUP BY class_id;
  7. ########## End ##########
复制代码
第3关:使用 LIMIT 限制查询效果的数目
  1. USE School;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## 查询班级中第2名到第5名的学生信息 ##########
  5. SELECT * FROM tb_score
  6. order by score desc
  7. LIMIT 1,4;
  8. ########## End ##########
复制代码
MySQL数据库 - 连接查询

第1关:内连接查询
  1. USE School;
  2. ########## 查询数据表中学生姓名和对应的班级 ##########
  3. #请在此处添加实现代码
  4. ########## Begin ##########
  5. select tb_student.name as studentName,tb_class.name as className from tb_student join tb_class on tb_class.id = tb_student.class_id;
  6. ########## End ##########
复制代码
第2关:外连接查询
  1. USE School;
  2. ########## 使用左外连接查询所有学生姓名和对应的班级 ##########
  3. #请在此处添加实现代码
  4. ########## Begin ##########
  5. select tb_student.name as studentName,tb_class.name as className
  6. from tb_class right join tb_student on
  7. tb_class.id=tb_student.class_id;
  8. ########## End ##########
  9. ########## 使用右外连接查询所有学生姓名和对应的班级 ##########
  10. select tb_student.name as studentName,tb_class.name as className
  11. from tb_class left join tb_student
  12. on tb_class.id=tb_student.class_id;
  13. #请在此处添加实现代码
  14. ########## Begin ##########
  15. ########## End ##########
复制代码
第3关:复合条件连接查询
  1. USE School;
  2. ########## 查询所有班级里分数在90分以上的学生的姓名和学生的成绩以及学生所在的班级 ##########
  3. #请在此处添加实现代码
  4. ########## Begin ##########
  5. select s1.name as studentName,score,
  6. s2.name as className from tb_student as s1,
  7. tb_class as s2 where s1.class_id=s2.id and
  8. s1.score>90 order by score desc;
  9. ########## End ##########
复制代码
MySQL数据库 - 子查询

第1关:带比力运算符的子查询
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. #1.查询大于所有平均年龄的员工姓名与年龄
  5. select name,age from tb_emp where age>(select avg(age) from tb_emp);
  6. ########## End ##########
复制代码
第2关:关键字子查询
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. #1.使用 ALL 关键字进行查询
  5. SELECT position,salary FROM tb_salary WHERE salary >
  6. ANY(SELECT max(salary) FROM tb_salary where position="java");
  7. #2.使用 ANY 关键字进行查询
  8. SELECT position,salary FROM tb_salary WHERE salary >
  9. ANY(SELECT min(salary) from tb_salary where position="java");
  10. #3.使用 IN 关键字进行查询
  11. select position,salary from tb_salary where position in("java");
  12. ########## End ##########
复制代码
MySQL数据库 - 复杂查询(一)

第1关:交换工资
  1. #请在此添加实现代码
  2. ########## Begin ##########
  3. UPDATE tb_Salary
  4. SET
  5. sex = CASE sex WHEN "m"  THEN "f"
  6. ELSE "m"
  7. END;
  8. ########## End ##########
复制代码
第2关:换座位
  1. #请在此添加实现代码
  2. ########## Begin ##########
  3. SELECT if(Id%2=0,Id-1,if(Id=5,Id,Id+1)) AS id,name
  4. FROM tb_Seat ORDER BY Id;
  5. ########## End ##########
复制代码
第3关:分数排名
  1. #请在此添加实现代码
  2. ########## Begin ##########
  3. select Score,(select count(distinct score) from score where score >=s.score) as Rank
  4. from score as s order by Score desc;
  5. select Score,(select count(*) from score as s2 where s2.score >s1.score)+1 as Rank
  6. from score as s1 order by Rank;
  7. ########## End ##########
复制代码
第4关:体育馆的人流量
  1. #请在此添加实现代码
  2. ########## Begin ##########
  3. select distinct a.* from gymnasium a,gymnasium b,gymnasium c
  4. where a.visitors_flow>=100 and b.visitors_flow>=100
  5. and c.visitors_flow>=100
  6. and(
  7.     (a.id = b.id-1 and b.id = c.id - 1)or
  8.     (a.id = b.id-1 and a.id = c.id + 1)or
  9.     (a.id = b.id+1 and b.id = c.id + 1)
  10. )
  11. order by a.id;
  12. ########## End ##########
复制代码
第5关:统计总成绩
  1. #请在此添加实现代码
  2. ########## Begin ##########
  3. select t1.classname,t1.chinese,t2.maths
  4. from(select c.classname classname,sum(s.chinese)
  5. chinese from tb_class c,tb_score s where c.stuname=
  6. s.name and s.chinese>=60 group by c.classname)t1,
  7. (select c.classname classname,sum(s.maths)maths from tb_class c,tb_score s
  8. where c.stuname=s.name and s.maths>=60 group by c.classname)t2
  9. where t1.classname=t2.classname;
  10. ########## End ##########
复制代码
MySQL数据库 - 复杂查询(二)

第1关:查询门生平均分
  1. #请在此添加实现代码
  2. ########## Begin ##########
  3. select b.s_id,b.s_name,ROUND(AVG(a.s_score),2)as avg_score from student b
  4. inner join score a on b.s_id = a.s_id
  5. GROUP BY b.s_id,b.s_name HAVING avg_score <60
  6. union
  7. select a.s_id,a.s_name,0 as avg_score from student a
  8. where a.s_id not in (select distinct s_id from score);
  9. ########## End ##########
复制代码
第2关:查询修课雷同门生信息
  1. #请在此添加实现代码
  2. ########## Begin ##########
  3. create view temp as(select s_id,group_concat(c_id)as c from score group by s_id);
  4. select * from student where s_id in(select s_id from temp where c=(select c from temp where s_id="01")and s_id<>"01");
  5. ########## End ##########
复制代码
第3关:查询各科成绩并排序
  1. #请在此添加实现代码
  2. ########## Begin ##########
  3. select a.*,count(b.s_score)+1 rank from score a left join score b
  4. on a.c_id = b.c_id and a.s_score <b.s_score
  5. group by a.c_id,a.s_id
  6. order by a.c_id,count(b.s_score);
  7. ########## End ##########
复制代码
第4关:查询张老师课程成绩最高的门生信息
  1. #请在此添加实现代码
  2. ########## Begin ##########
  3. select a.*,b.s_score,b.c_id,c.c_name from student a
  4. INNER JOIN score b ON a.s_id = b.s_id
  5. INNER JOIN course c ON b.c_id = c.c_id
  6. where b.c_id =
  7.     (
  8.     select c_id from course c,teacher d
  9.     where c.t_id=d.t_id and d.t_name="张三"
  10.     )
  11.     and b.s_score in (select MAX(s_score)from score where c_id="02");
  12. ########## End ##########
复制代码
第5关:查询两门课程不及格同学信息
  1. #请在此添加实现代码
  2. ########## Begin ##########
  3. select a.s_id,a.s_name,ROUND(AVG(b.s_score))
  4. avg_score from student a
  5. inner join score b on a.s_id = b.s_id
  6. where a.s_id in(
  7.     select s_id from score where s_score<60
  8.     GROUP BY s_id
  9.     having count(*)>=2
  10. )
  11. GROUP BY a.s_id,a.s_name;
  12. ########## End ##########
复制代码
MySQL数据库 - 使用聚合函数查询

第1关:COUNT( )函数
  1. USE School;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## 查询该表中一共有多少条数据 ##########
  5. select count(*) from tb_class;
  6. ########## 查询此表中367班有多少位学生 ##########
  7. select classid,count(*) from tb_class
  8. where classid=367;
  9. ########## End ##########
复制代码
第2关:SUM( )函数
  1. USE School;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## 查询所有学生总分数 ##########
  5. select sum(score) from tb_class;
  6. ########## 查询学生语文科目的总分数 ##########
  7. select course,sum(score) from tb_class
  8. where course="语文";
  9. ########## End ##########
复制代码
第3关:AVG( )函数
  1. USE School;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## 查询学生语文科目的平均分数 ##########
  5. select course,avg(score)from tb_class
  6. where course="语文";
  7. ########## 查询学生英语科目的平均分数 ##########
  8. select course,avg(score) from tb_class
  9. where course="英语";
  10. ########## End ##########
复制代码
第4关:MAX( )函数
  1. USE School;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## 查询语文课程中的最高分数 ##########
  5. select course,max(score) from tb_class
  6. where course="语文";
  7. ########## 查询英语课程中的最高分数 ##########
  8. select course,max(score) from tb_class
  9. where course="英语";
  10. ########## End ##########
复制代码
第5关:MIN( )函数
  1. USE School;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## 查询语文课程中的最低分数 ##########
  5. select course,min(score) from tb_class
  6. where course="语文";
  7. ########## 查询英语课程中的最低分数 ##########
  8. select course,min(score) from tb_class
  9. where course="英语";
  10. ########## End ##########
复制代码































免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

一给

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表