MySQL基础三-表操作&表联结

这是参加本次课程的第三篇作业,之前的作业都写在别的地方了,以后准备写在csdn。

mysql数据类型

mysql的数据类型主要分为三类,数值、字符串、日期与时间

数值型

数值型#### 日期及时间型
日期及时间型#### 字符型
字符型

mysql创建表语句

创建表的时候需要我们给出以下内容

  • 表名
  • 表中列的信息,例如列的数据类型,能否为空
		CREATE TABLE students(
		stu_id VARCHAR(50) NO NULL,
		stu_name VARCHAR(50) NO NULL,
		class VARCHAR(50) NO NULL,
		PRIMARY KEY ("stu_id")
		)

使用上面的语句就可以创建一个表了,在CREATE TABLE后面给出表名,括号中内容是新表的字段名与属性,同时后面需要设置字段的数据类型、大小、约束等属性。有一个很重要的点,就是最后一个语句之后不能跟逗号。否则会数据库管理系统会报错。
我们也看到了,最后有PRIMARY KEY关键字,这个关键字的作用是规定表的主键为stu_id字段。
主键:一张表中表示行的唯一性的一个列或是一组列。

向表中插入数据

想要实现向表中插入数据可以使用INSERT INTO语句。

		INSERT INTO studens (
			stu_id,
			stu_name,
			class) VALUE(
			"001",
			"nero",
			"one"
		)

使用上面的方式就可以向表中插入一行数据,如果你插入的是完整的一行,其实字段名是可省略的。同时如果你不需要插入完整的一行数据,只需向指定的某几列数据插入内容,只需写你需要插入的列的字段名即可,VALUE后面写需要插入的值。

上面是插入完整的一行数据,那如果我们需要插入检索出的数据怎么办,其实INSERT INTO也是支持WHERE的。

		INSERT INTO students (
			stu_name,
			class
			)VALUE(
			"godfrey",
			"two"
			)WHERE stu_id = 002;

上面的语句就是将内容插入到通过WHERE检索到的行中。

删除表&删除表中的数据

删除表

想要删除一张数据表的话,可以使用DROP TABLE关键字,只要在后面跟上表名即可。

		DROP TABLE students
删除表中的数据

删除表中的一行数据需要DELETE语句

		DELETE FROM students 
		WHERE stu_id = 001;

上面这个语句就删除了学号为001的学生数据。其中WHERE是可选的,如果不加WHERE的话,就删除掉了整个表中的数据,但是表没有被删除。

删除数据使用注意事项:
最好是加上WHERE语句,除非你就是要删除整张表中的数据。

使用SQL修改表

修改列名
	ALTER TABLE students CHANGE stu_id id VARCHAR(50); 

上面的语句表示将students表中的stu_id列修改为id,并且后面提供了数据类型

修改列定义
	ALTER TABLE students MODIFY stu_id INT;

上面的语句表示将students表中的stu_id列数据类型更改为INT型

修改表中数据

想要修改表中已有的数据可以使用UPDATE语句

	UPDATE students 
	SET stu_name = 'cindy',
			class = 'math'
	WHERE stu_id = 001;

这条语句表示将查询到stu_id为001的数据姓名更改为cindy,课程更改为math。

删除一行数据
	DELETE FROM students 
	WHERE stu_id = 001;

删除一条语句,需要提供表名和需要删除的信息。需要注意的一点是最好加上WHERE语句,否则会将表中的数据全部清空。

删除列
	ALTER TABLE students DROP COLUMN class;

这条语句表示删除sutdents中的class列。

添加列
		ALTER TABLE students ADD COLUMN teacher varchar(50);

这条语句表示向表添加一行名为teacher的列。

表联结

表联结的基础:关系表

概括的说,关系表就是在表中引用另一个表的数据,这样便不需要在多张表中出现重复的数据了。而且简化了表的管理,想要修改某个字段,只需更改一张表中的数据即可,这样相当于整个数据库的这个数据都会更新了。

表联结的类型

MySQL表联结的类型主要有这么几种,内联结、外联结、自联结、交叉联结几种。

几种联结的关系与区别

从大的概念上面区分联结可以分为两种,就是内联结与外联结。

  • 内联结又称为等值联结,就是根据给出的条件来判断是否联结的。如果满足条件,则两个表中的两个满足条件的数据组合在一起。

  • 如果不给出限制条件,则内联结返回的结果与交叉联结结果是一样的。而交叉联结返回的是两个表的笛卡尔积。

  • 自联结可以理解为将一张表当作两张表联结起来,你可以像操作两张表一样去操作一张表的联结。

  • 其中外联结又分为左联结与右联结。左联结与右联结是差不多的,我们拿左联结举例,就是说左边的表中的数据都会被展示出来,其中表中的数据若是满足则会与右表做联结,剩下的不满足条件就不做联结,右侧是NULL。

作业二:
题目:
在这里插入图片描述
code:

CREATE TABLE courses (
	students VARCHAR(50) NOT NULL,
	class VARCHAR(50) NOT NULL
);

INSERT INTO courses VALUES("A","Math");
INSERT INTO courses VALUES("B","English");
INSERT INTO courses VALUES("C","Math");
INSERT INTO courses VALUES("D","Biology");
INSERT INTO courses VALUES("E","Math");
INSERT INTO courses VALUES("F","Computer");
INSERT INTO courses VALUES("G","Math");
INSERT INTO courses VALUES("H","Math");
INSERT INTO courses VALUES("I","Math");
INSERT INTO courses VALUES("A","Math");

SELECT * FROM courses;

SELECT class,Count(*) AS count
FROM courses
GROUP BY class
HAVING COUNT(*) >= 5;

结果:
在这里插入图片描述

作业三:
题目:
在这里插入图片描述

code:

CREATE TABLE salary(
	id INT(10) NOT NULL,
	name VARCHAR(50) NOT NULL,
	sex VARCHAR(50) NOT NULL,
	salary INT(50) NOT NULL,
	PRIMARY KEY (id)
);

INSERT INTO salary VALUES (1,"A","m",2500);
INSERT INTO salary VALUES (2,"B","f",1500);
INSERT INTO salary VALUES (3,"C","m",5500);
INSERT INTO salary VALUES (4,"D","f",500);

SELECT * FROM salary;

UPDATE salary SET sex = (CASE
	    WHEN sex = 'f' THEN 'm'
			WHEN sex = 'm' THEN 'f'
	    END);

结果:
在这里插入图片描述

作业五
题目:
在这里插入图片描述

code:

--创建Person表
CREATE TABLE Person (
	 PersonId INT NOT NULL PRIMARY KEY,
	 FirstName VARCHAR(20) NULL,
	 LastName VARCHAR(20) NULL
	 );
	 
	INSERT INTO Person (PersonId, FirstName, LastName) VALUES (1, 'Carine', '
	Schmitt'), (2, 'Jean', 'King'), (3, 'Jeff', 'Young');

--创建Address表
CREATE TABLE Address (
	AddressId INT NOT NULL PRIMARY KEY,
	PersonId INT NULL,
	City VARCHAR(50) NULL,
	State VARCHAR(50) NULL);

INSERT INTO Address (AddressId, PersonId, City, State) VALUES (11, 3, 'Na
ntes', 'NV'), (12, 2, 'NYC', 'NY'), (13, 1, 'Melbourne', 'CA');

--使用内联结查询
SELECT FirstName,LastName,City,State 
FROM Person INNER JOIN Address ON Person.PersonId = Address.PersonId;

结果:
在这里插入图片描述
作业六
题目:
在这里插入图片描述

code:

--本质是使用自联结查询出相同的email数据
DELETE e1 FROM email e1, email e2
WHERE e1.Email = e2.Email AND e1.Id > e2.Id;

结果:
在这里插入图片描述

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值