头哥数据库实战答案及剖析(1-1 到 1-5)

打印 上一主题 下一主题

主题 547|帖子 547|积分 1641

1-1 初识MySQL

第一关:创建数据库

编程要求
在右侧命令行中毗连MySQL,并创建一个名为MyDb的数据库。
毗连数据库的用户名为:root,暗码为:123123。
分析
  1. -- 连接到MySQL
  2. mysql -u root -p 123123 -h 127.0.0.1
  3. -- 创建数据库
  4. create database MyDb;
复制代码

第二关:创建表

编程要求
在右侧命令行中操作,创建数据库TestDb,在TestDb下创建表t_emp,表结构如下:
-

分析
  1. mysql -uroot -p123123 -h127.0.0.1
  2. create database TestDb;
  3. use TestDb
  4. create table t_emp(
  5.    id int,
  6.    name varchar(32),
  7.    deptId int,
  8.    salary float
  9.    );
复制代码

第三关:利用主键约束

编程要求
在数据库MyDb中,创建两张表t_user1,t_user2,表结构如下,请为两张表分别创建主键约束,t_user1 的主键为 userId,t_user2 的主键为联合主键,将字段 name 和 phone 作为t_user2 的联合主键。
t_user1
-

t_user2
-

分析 主键的创建方式有两种,在数据类型的后面加上 primary key 或者在表定义的末了加上 primary key(…),复合主键的定义就是采用这种方式。
  1. create database MyDb
  2. use MyDb
  3. create table t_user1(
  4.     userId int primary key,
  5.     name varchar(32),
  6.     password varchar(11),
  7.     phone varchar(11),
  8.     email varchar(32)
  9. );
  10. create table t_user2(
  11.     name varchar(32),
  12.     phone varchar(11),
  13.     email varchar(32),
  14.     primary key(name,phone)
  15. );
复制代码

第四关:外键约束

编程要求
创建两张表如下,给t_student表添加外键约束,外键为classId,外键名称为fk_stu_class1。
t_class
-

t_student
-

分析 外键必须是主表中由主键修饰的字段,或者是 unique 修饰的字段,给外键设定外键名可以利用 constraint 外键名 foreign key 字段名 references 主表名(主键名)
  1. mysql -uroot -p123123 -h127.0.0.1
  2. use MyDb
  3. create table t_class(
  4. -- 指定为主键
  5. id int primary key,
  6. name varchar(22)
  7. );
  8. create table t_student(
  9. id int primary key,
  10. name varchar(22),
  11. classId int,
  12. constraint fk_stu_class1 foregin key(classId) references t_class(id)
  13. );
复制代码

第五关

编程要求
在数据库MyDb中创建表t_user,表结构如下:

分析 自增长:auto_increment
  1. mysql -u root -p 123123 -h 127.0.0.1
  2. use database MyDb
  3. create table t_user(
  4.     id int primary key auto_increment,
  5.    `username` varchar(32),
  6.    `sex` varchar(4) not null default '男'
  7. );
复制代码

1-2 MySQL 数据库和表的基本操作(一)

第一关:检察表的结构与修改表明

编程要求 根据提示,在右侧编辑器补充代码: 1)把数据表tb_emp改名为jd_emp; 2)检察该数据库下数据表的列表; 3)检察数据表jd_emp的基本结构
分析 对表的修改利用 alter 语句 修改表名:alter table 旧表名 rename 新表名;
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## modify the table name ##########
  5. alter table tb_emp rename jd_emp;
  6. ########## show tables in this database ##########
  7. show tables;
  8. ########## describe the table ##########
  9. describe jd_emp;
  10. ########## End ##########
复制代码

第二关:修改字段名与字段数据类型

编程要求 根据提示,在右侧编辑器补充代码: 1)把数据表tb_emp的字段Id改名为prod_id,数据类型不变; 2)把数据表tb_emp字段Name的数据类型改为varchar(30)。
分析 通过 alter 语句对已编辑的表举行修改: alter table 表名 + 操作 假如必要对字段举行修改,可以利用 change 和 modify 两种方法 1)change 可以修改字段名和字段的数据类型,但假如仅仅修改字段名仍必要写数据类型 2)modify 仅能修改字段的数据类型,但是只必要写一遍数据类型,比较方便。
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## change the column name ##########
  5. -- 即使仅仅修改列名但仍需要将数据结构重新写一遍
  6. alter table tb_emp change `id` prod_id int;
  7. ########## change the data type of column ##########
  8. alter table tb_emp MODIFY `Name` varchar(30);
  9. ########## End ##########
  10. DESCRIBE tb_emp;
复制代码

第三关:添加与删除字段

编程要求 根据提示,在右侧编辑器补充代码: 1)在数据表tb_emp的Name字段后添加字段Country,数据格式为varchar(20); 2)删除数据表tb_emp中的字段Salary。
分析 仍然是利用 alter 来对表举行修改的 alter table 表名 add 字段名 数据类型; alter table 表名 drop 字段名;
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## add the column ##########
  5. alter table `tb_emp`
  6. add Country varchar(20)
  7. after `Name`;
  8. ########## delete the column ##########
  9. alter table `tb_emp`
  10. drop `Salary`;
  11. ########## End ##########
  12. DESCRIBE tb_emp;
复制代码

第四关:修改字段的排列位置

编程要求 根据提示,在右侧编辑器补充代码: 1)将数据表tb_emp的Name字段移至第一列,数据格式不变; 2)将DeptId字段移至Salary字段的后边,数据格式不变。 -

分析 照旧利用 alter 来修改已编辑的表格 修改表格的次序必要用到 modify 语句 1)alter table 表名 modify 字段名 数据类型 first 2)alter table 表名 modify 字段名 数据类型 after 字段
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## modify the column to top ##########
  5. alter table `tb_emp`
  6. modify `Name` varchar(25)
  7. first;
  8. ########## modify the column to the rear of another column ##########
  9. alter table `tb_emp`
  10. modify `DeptId` int(11)
  11. after `Salary`;
  12. ########## End ##########
  13. DESCRIBE tb_emp;
复制代码

第五关:删除表的外键约束

编程要求 我们已经为你建立了主表tb_dept和子表tb_emp,在表tb_emp上添加了名称为emp_dept的外键约束,外键名称为DeptId,依靠于表tb_dept的主键Id,下面那是两张表的结构展示: -

请你根据提示,在右侧编辑器Begin-End中补充代码: 1)删除数据表tb_emp的外键约束emp_dept。
分析 删除外键:alter table 表名 drop foreign key 外键名;
  1.    USE Company;
  2.    #请在此处添加实现代码
  3.    ########## Begin ##########
  4.    ########## delete the foreign key ##########
  5.    alter table `tb_emp`
  6.    drop foreign key emp_dept;
  7.    ########## End ##########
  8.    SHOW CREATE TABLE tb_emp \G;
复制代码
1-3 MySQL 数据库-数据库和表的基本操作(二)

第一关:插入数据

编程要求 根据提示,在右侧编辑器Begin-End处补充代码: 1)我们为你新建了一个空数据表tb_emp,请你为它同时添加3条数据内容;-

2)必要你同时添加的数据内容为: (留意,是同时插入多条记录) -

分析 向表中插入数据必要利用 insert into 表名(字段名) value 语句 通过对括号中字段名的控制,可以向固定的字段添加元素,假如是向表中全部字段同时添加元素,则括号的部分可以省略。
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## bundle insert the value ##########
  5. insert into tb_emp
  6. values(1, 'Nancy', 301, 2300.00), (2, 'Tod', 303, 5600.00), (3, 'Carly', 301, 3200.00);
  7. ########## End ##########
  8. SELECT * FROM tb_emp;
复制代码

第二关:更新数据

编程要求 根据提示,在右侧编辑器Begin-End处补充代码: 1)我们为你新建了一个数据表tb_emp,并添加了3条数据内容; 2)3条数据内容如下表所示: -

请你将Carly改为Tracy,相应的,301改为302,3200.00改为4300.00。
分析 在前几题对表的字段举行修改后,现在可以对表内的元素举行增编削查,这个题用到了其中修改表元素的语句 update,利用 update 表名 set 字段1 = xxx, 字段2 = … where 过滤条件实现对表内容的修改 留意:假如不加 where 条件,则是对表中的这个字段的全部元素均修改,利用时务必留意。
  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;
复制代码

第三关:删除数据

编程要求 根据提示,在右侧编辑器Begin-End处补充代码: 我们为你新建了一个数据表tb_emp,并添加了3条数据内容; 3条数据内容如下表所示:
-

1)请你将Salary大于3000的数据行删除。
分析 此题练习的是对表中某一行举行删除的方法,利用 delete from 表名 where 和上题一样,假如不加 where 语句,则会删除表中全部的行。
  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;
复制代码
总结: 通过上面的练习,把握了对表中的行的操作,实现了对表中的数据的增(insert into)删(delete)和改(update),下面的专题将重点练习数据库语句中最重要的查询语句(select)。
1-4 MySQL 数据库-单表查询(一)

第一关:基本查询语句

编程要求 根据提示,在右侧编辑器Begin-End处补充代码: 我们为你新建了一个数据表tb_emp,结构如下: -

1)请你查询字段Name和Salary的内容; 2)请你查询整张表的内容。
分析 查询的基本语句是: select 字段名(可以是多个)from 表名 假如是 * 则表示查询整张表的内容
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## retrieving the Name and Salary ##########
  5. select `Name`, `Salary`
  6. from tb_emp;
  7. ########## retrieving all the table ##########
  8. select *
  9. from tb_emp;
  10. ########## End ##########
复制代码

第二关:带 IN 关键字的查询

编程要求 根据提示,在右侧编辑器Begin-End处补充代码: 我们为你新建了一个数据表tb_emp,结构如下: -

1)请你查询当Id不等于1时,字段Name和Salary的内容;
分析 在对 select 查询到的语句举行筛选的时间,假如碰到编号范围的问题可以用大于号和小于号来办理,但假如是检索其中编号跨度大的几个,则可以用 in 关键字来处理。 in 表示在之中的任意一个,而 not in 则表示不在其中的

第三关:带 BETWEEN AND 的范围查询

编程要求 根据提示,在右侧编辑器Begin-End处补充代码: 我们为你新建了一个数据表tb_emp,结构如下: -

1)请你查询当字段Salary范围在3000~5000时,字段Name和Salary的内容。
分析 利用 between and 来检索范围内的数据,对数据的检索是闭区间。
  1. USE Company;
  2. #请在此处添加实现代码
  3. ########## Begin ##########
  4. ########## retrieving the Name and Salary with BETWEEN AND statement ##########
  5. select `Name`, Salary
  6. from tb_emp
  7. where Salary between 3000 and 5000;
  8. ########## End ##########
复制代码
1-5 MySQL数据库 - 单表查询(二)

第一关:带 LIKE 字符匹配查询

编程要求 根据提示,在右侧编辑器Begin-End处补充代码; 我们为你新建了一个数据表tb_emp,结构如下:
-

请你查询全部Name以字母C为起始的员工的Name和Salary的内容;
分析 利用 like 操作符可以实现模糊查询,基本结构为 select 字段名 form 表名 where 字段名 like ‘…’ 单引号中可以放入两种字符,其中 _ 表示单个任意字符,而 % 表示零到多个任意字符
  1. USE Company;
  2. ######### Begin #########
  3. select `Name`, Salary
  4. from tb_emp
  5. where `Name` like 'C%'
  6. ######### End #########
复制代码

第二关:查询空值与取出重复结果

编程要求 根据提示,在右侧编辑器Begin-End处补充代码: 我们为你新建了一个数据表tb_emp,内容如下: -

1)利用关键字IS NULL返回数据表中字段DeptId为NULL的全部字段的内容,留意,返回的是指定行全部字段的内容; 2)利用关键字DISTINCT返回数据表中字段Name不重复的内容,留意,只需返回字段Name的内容。
分析 利用关键字 is null 可以查询表中的空数据, 而在 select 后面加上 distinct 字符可以到达对查询数据的去重。
  1. USE Company;
  2. ######### Begin #########
  3. select * from tb_emp
  4. where `DeptId` is null;
  5. ######### End #########
  6. ######### Begin #########
  7. select distinct `Name` from tb_emp;
  8. ######### End #########
复制代码

第三关:带 AND 与 OR 的多条件查询

编程要求 根据提示,在右侧编辑器Begin-End处补充代码: 我们为你新建了一个数据表tb_emp,内容如下: -

结构如下: -

1)利用关键字AND返回数据表中字段DeptId为301并且薪水大于3000的全部字段的内容,其中DeptId的倒数第二个字母为i的大写; 2)利用关键字IN返回数据表中字段DeptId为301和303的全部字段的内容。
分析 假如仅仅用单一条件无法查询到的话,可以利用 AND 关键字来限制更多的条件。 而 OR 关键字则是只必要满足其中一个条件就可以被返回。 这两个关键字是可以同时被利用的,但是 AND 关键字的优先级更高。 OR 和 IN 关键字可以实现雷同的结果,但是假如可以的话更推荐利用效率更高的 IN
  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 #########
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

络腮胡菲菲

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

标签云

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