任务三 MySQL 基础 (二)- 表操作

# 学习内容

1. MySQL表数据类型

常用数据类型如下:
整数:int,bit
小数:decimal
字符串:varchar,char
日期时间: date, time, datetime
枚举类型(enum)

2. 用SQL语句创建表

语句解释:

CREATE TABLE table_name(
    column1 datatype contrai,
    column2 datatype,
    column3 datatype,
    .....
    columnN datatype,
    PRIMARY KEY(one or more columns)
);

设定列类型 、大小、约束:
列表类型
大小:数据类型分为定长和变长数据类型,变长数据类型可以控制大小,如VARCHAR(n),n可取1-65535;
约束
主键primary key:物理上存储的顺序
非空not null:此字段不允许填写空值
惟一unique:此字段的值不允许重复
默认default:当不填写此值时会使用默认值,如果填写时以填写为准
设定主键

3. 用SQL语句向表中添加数据

alter table 表名 add 列名 类型;
多种添加方式(指定列名;不指定列名)

4. 用SQL语句删除表

DELETE:删除符合条件的表达式

DELETE FROM 表名 
WHERE 条件表达式;

DROP:删除表的结构

drop table 表名;

TRUNCATE:删除表中全部数据

TRUNCATE[TABLE] 表名;

不同方式的区别:

5. 用SQL语句修改表

修改列名:

alter table 表名 modify 列名 类型及约束;

修改表中数据

update 表名 set1=1,2=2... 
where 条件

删除行

DELETE FROM table_name
WHERE which rows to decide

删除列

alter table 表名 drop 列名;

新建列

alter table 表名 add 列名 类型;

新建行

INSTERT INTO table_name VALUES(value1,'value2')

# 作业

项目三:超过5名学生的课(难度:简单)
创建如下所示的courses 表 ,有: student (学生) 和 class (课程)。
例如,表:
±--------±-----------+
| student | class |
±--------±-----------+
| A | Math |
| B | English |
| C | Math |
| D | Biology |
| E | Math |
| F | Computer |
| G | Math |
| H | Math |
| I | Math |
| A | Math |
±--------±-----------+

编写一个 SQL 查询,列出所有超过或等于5名学生的课。
应该输出:
±--------+
| class |
±--------+
| Math |
±--------+
Note:
学生在每个课中不应被重复计算。

--创建表
CREATE TABLE course(
	student VARCHAR (20) NOT NULL,
	class0 VARCHAR(20)
);
--插入数据
INSERT INTO course VALUES
('A','Math'),
('B','English'),
('C','Math'),
('D','Biology'),
('E','Math'),
('F','Computer'),
('G','Math'),
('H','Math'),
('I','Math'),
('J','Math');
--查询语句
SELECT class0 FROM course GROUP BY class0 HAVING COUNT(student)>5;
--结果
+--------+
| class0 |
+--------+
| Math   |
+--------+

项目四:交换工资(难度:简单)
创建一个 salary表,如下所示,有m=男性 和 f=女性的值 。
例如:

id name sex salary
1 A m 2500
2 B f 1500
3 C m 5500
4 D f 500

交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求使用一个更新查询,并且没有中间临时表。
运行你所编写的查询语句之后,将会得到以下表:

id name sex salary
1 A f 2500
2 B m 1500
3 C f 5500
4 D m 500
--创建表
CREATE TABLE salary(
	id INT unsigned NOT NULL PRIMARY KEY auto_increment,
	name VARCHAR(20) NOT NULL,
	sex enum('m','f'),
	salary INT unsigned NOT NULL
);

--插入数据
INSERT INTO salary VALUES
(0,'A',1,2500),
(0,'B',2,1500),
(0,'C',1,5500),
(0,'D',2,500);

--修改数据
UPDATE salary SET sex=CASE sex
WHEN 1 THEN 2
WHEN 2 THEN 1
END;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  m 
--查询
SELECT * FROM salary;
--结果
+----+------+------+--------+
| id | name | sex  | salary |
+----+------+------+--------+
|  1 | A    | f    |   2500 |
|  2 | B    | m    |   1500 |
|  3 | C    | f    |   5500 |
|  4 | D    | m    |    500 |
+----+------+------+--------+
4 rows in set (0.00 sec)

猜你喜欢

转载自blog.csdn.net/Sioen/article/details/88068507
今日推荐