# 学习内容
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 表名 set 列1=值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)