赞
踩
编程要求
在右侧命令行中连接MySQL
,并创建一个名为MyDb
的数据库。
连接数据库的用户名为:root
,密码为:123123
。
分析
-- 连接到MySQL mysql -u root -p 123123 -h 127.0.0.1 -- 创建数据库 create database MyDb;
编程要求
在右侧命令行中操作,创建数据库TestDb,在TestDb下创建表t_emp,表结构如下:
-
分析
mysql -uroot -p123123 -h127.0.0.1 create database TestDb; use TestDb create table t_emp( id int, name varchar(32), deptId int, salary float );
编程要求
在数据库MyDb中,创建两张表t_user1,t_user2,表结构如下,请为两张表分别创建主键约束,t_user1 的主键为 userId,t_user2 的主键为联合主键,将字段 name 和 phone 作为t_user2 的联合主键。
t_user1
-
t_user2
-
分析 主键的创建方式有两种,在数据类型的后面加上 primary key 或者在表定义的最后加上 primary key(…),复合主键的定义就是采用这种方式。
create database MyDb use MyDb create table t_user1( userId int primary key, name varchar(32), password varchar(11), phone varchar(11), email varchar(32) ); create table t_user2( name varchar(32), phone varchar(11), email varchar(32), primary key(name,phone) );
编程要求
创建两张表如下,给t_student
表添加外键约束,外键为classId
,外键名称为fk_stu_class1
。
t_class
-
t_student
-
分析 外键必须是主表中由主键修饰的字段,或者是 unique 修饰的字段,给外键设定外键名可以使用 constraint 外键名 foreign key 字段名 references 主表名(主键名)。
mysql -uroot -p123123 -h127.0.0.1 use MyDb create table t_class( -- 指定为主键 id int primary key, name varchar(22) ); create table t_student( id int primary key, name varchar(22), classId int, constraint fk_stu_class1 foregin key(classId) references t_class(id) );
编程要求
在数据库MyDb
中创建表t_user
,表结构如下:
分析 自增长:auto_increment
mysql -u root -p 123123 -h 127.0.0.1 use database MyDb create table t_user( id int primary key auto_increment, `username` varchar(32), `sex` varchar(4) not null default '男' );
编程要求 根据提示,在右侧编辑器补充代码: 1)把数据表tb_emp
改名为jd_emp
; 2)查看该数据库下数据表的列表; 3)查看数据表jd_emp
的基本结构。
分析 对表的修改使用 alter 语句 修改表名:alter table 旧表名 rename 新表名;
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## modify the table name ########## alter table tb_emp rename jd_emp; ########## show tables in this database ########## show tables; ########## describe the table ########## describe jd_emp; ########## End ##########
编程要求 根据提示,在右侧编辑器补充代码: 1)把数据表tb_emp
的字段Id
改名为prod_id
,数据类型不变; 2)把数据表tb_emp
字段Name
的数据类型改为varchar(30)
。
分析 通过 alter 语句对已编辑的表进行修改: alter table 表名 + 操作 如果需要对字段进行修改,可以使用 change 和 modify 两种方法 1)change 可以修改字段名和字段的数据类型,但如果仅仅修改字段名仍需要写数据类型 2)modify 仅能修改字段的数据类型,但是只需要写一遍数据类型,比较方便。
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## change the column name ########## -- 即使仅仅修改列名但仍需要将数据结构重新写一遍 alter table tb_emp change `id` prod_id int; ########## change the data type of column ########## alter table tb_emp MODIFY `Name` varchar(30); ########## End ########## DESCRIBE tb_emp;
编程要求 根据提示,在右侧编辑器补充代码: 1)在数据表tb_emp
的Name
字段后添加字段Country
,数据格式为varchar(20)
; 2)删除数据表tb_emp
中的字段Salary
。
分析 仍然是利用 alter 来对表进行修改的 alter table 表名 add 字段名 数据类型; alter table 表名 drop 字段名;
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## add the column ########## alter table `tb_emp` add Country varchar(20) after `Name`; ########## delete the column ########## alter table `tb_emp` drop `Salary`; ########## End ########## DESCRIBE tb_emp;
编程要求 根据提示,在右侧编辑器补充代码: 1)将数据表tb_emp
的Name
字段移至第一列,数据格式不变; 2)将DeptId
字段移至Salary
字段的后边,数据格式不变。 -
分析 还是使用 alter 来修改已编辑的表格 修改表格的顺序需要用到 modify 语句 1)alter table 表名 modify 字段名 数据类型 first 2)alter table 表名 modify 字段名 数据类型 after 字段
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## modify the column to top ########## alter table `tb_emp` modify `Name` varchar(25) first; ########## modify the column to the rear of another column ########## alter table `tb_emp` modify `DeptId` int(11) after `Salary`; ########## End ########## 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 外键名;
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## delete the foreign key ########## alter table `tb_emp` drop foreign key emp_dept; ########## End ########## SHOW CREATE TABLE tb_emp \G;
编程要求 根据提示,在右侧编辑器Begin-End
处补充代码: 1)我们为你新建了一个空数据表tb_emp
,请你为它同时添加3
条数据内容;-
2)需要你同时添加的数据内容为: (注意,是同时插入多条记录) -
分析 向表中插入数据需要使用 insert into 表名(字段名) value 语句 通过对括号中字段名的控制,可以向固定的字段添加元素,如果是向表中所有字段同时添加元素,则括号的部分可以省略。
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## bundle insert the value ########## insert into tb_emp values(1, 'Nancy', 301, 2300.00), (2, 'Tod', 303, 5600.00), (3, 'Carly', 301, 3200.00); ########## End ########## 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 条件,则是对表中的这个字段的所有元素均修改,使用时务必注意。
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## update the value ########## update `tb_emp` set `Name` = 'Tracy', `DeptId` = '302', `Salary` = 4300.00 where Id = 3; ########## End ########## SELECT * FROM tb_emp;
编程要求 根据提示,在右侧编辑器Begin-End
处补充代码: 我们为你新建了一个数据表tb_emp
,并添加了3
条数据内容; 3
条数据内容如下表所示:
-
1)请你将Salary
大于3000
的数据行删除。
分析 此题练习的是对表中某一行进行删除的方法,利用 delete from 表名 where 和上题一样,如果不加 where 语句,则会删除表中所有的行。
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## delete the value ########## delete from tb_emp where Salary > 3000; ########## End ########## SELECT * FROM tb_emp;
总结: 通过上面的练习,掌握了对表中的行的操作,实现了对表中的数据的增(insert into)删(delete)和改(update),下面的专题将重点练习数据库语句中最重要的查询语句(select)。
编程要求 根据提示,在右侧编辑器Begin-End
处补充代码: 我们为你新建了一个数据表tb_emp
,结构如下: -
1)请你查询字段Name
和Salary
的内容; 2)请你查询整张表的内容。
分析 查询的基本语句是: select 字段名(可以是多个)from 表名 如果是 * 则表示查询整张表的内容
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## retrieving the Name and Salary ########## select `Name`, `Salary` from tb_emp; ########## retrieving all the table ########## select * from tb_emp; ########## End ##########
编程要求 根据提示,在右侧编辑器Begin-End
处补充代码: 我们为你新建了一个数据表tb_emp
,结构如下: -
1)请你查询当Id
不等于1
时,字段Name
和Salary
的内容;
分析 在对 select 查询到的语句进行筛选的时候,如果遇到编号范围的问题可以用大于号和小于号来解决,但如果是检索其中编号跨度大的几个,则可以用 in 关键字来处理。 in 表示在之中的任意一个,而 not in 则表示不在其中的
编程要求 根据提示,在右侧编辑器Begin-End
处补充代码: 我们为你新建了一个数据表tb_emp
,结构如下: -
1)请你查询当字段Salary
范围在3000~5000
时,字段Name
和Salary
的内容。
分析 利用 between and 来检索范围内的数据,对数据的检索是闭区间。
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## retrieving the Name and Salary with BETWEEN AND statement ########## select `Name`, Salary from tb_emp where Salary between 3000 and 5000; ########## End ##########
编程要求 根据提示,在右侧编辑器Begin-End
处补充代码; 我们为你新建了一个数据表tb_emp
,结构如下:
-
请你查询所有Name
以字母C
为起始的员工的Name
和Salary
的内容;
分析 利用 like 操作符可以实现模糊查询,基本结构为 select 字段名 form 表名 where 字段名 like ‘…’ 单引号中可以放入两种字符,其中 _ 表示单个任意字符,而 % 表示零到多个任意字符
USE Company; ######### Begin ######### select `Name`, Salary from tb_emp where `Name` like 'C%' ######### End #########
编程要求 根据提示,在右侧编辑器Begin-End
处补充代码: 我们为你新建了一个数据表tb_emp
,内容如下: -
1)使用关键字IS NULL
返回数据表中字段DeptId
为NULL
的所有字段的内容,注意,返回的是指定行所有字段的内容; 2)使用关键字DISTINCT
返回数据表中字段Name
不重复的内容,注意,只需返回字段Name
的内容。
分析 使用关键字 is null 可以查询表中的空数据, 而在 select 后面加上 distinct 字符可以达到对查询数据的去重。
USE Company; ######### Begin ######### select * from tb_emp where `DeptId` is null; ######### End ######### ######### Begin ######### select distinct `Name` from tb_emp; ######### End #########
编程要求 根据提示,在右侧编辑器Begin-End
处补充代码: 我们为你新建了一个数据表tb_emp
,内容如下: -
结构如下: -
1)使用关键字AND
返回数据表中字段DeptId
为301
并且薪水
大于3000
的所有字段的内容,其中DeptId
的倒数第二个字母为i
的大写; 2)使用关键字IN
返回数据表中字段DeptId
为301
和303
的所有字段的内容。
分析 如果仅仅用单一条件无法查询到的话,可以使用 AND 关键字来限制更多的条件。 而 OR 关键字则是只需要满足其中一个条件就可以被返回。 这两个关键字是可以同时被使用的,但是 AND 关键字的优先级更高。 OR 和 IN 关键字可以实现相同的结果,但是如果可以的话更推荐使用效率更高的 IN
USE Company; ######### Begin ######### select * from tb_emp where DeptId = 301 AND Salary > 3000; ######### End ######### ######### Begin ######### select * from tb_emp where DeptId = 301 or DeptId = 303; ######### End #########
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。