01 基础入门
-
题目1: 创建一个学生表(students),包含以下字段:
-
id(整数,主键,自动递增)
-
name(姓名,最多50字符)
-
age(年龄,整数)
-
gender(性别,1字符)
-
-
CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), age INT, gender CHAR(1), email VARCHAR(100) );
- 扩展思考:
- 如果要让name字段不能为空,应该怎么做? 加上NOT NULL
- 如果要让email字段具有唯一性,应该怎么做?UNIQUE constraint
- 除了VARCHAR,还可以用什么类型存储姓名?各有什么优缺点?
-
![image]()
- 题目2: 查看 students 表的结构
- 答案:
DESC student; - 扩展思考:
- DESC student 和 SHOW COLUMNS FROM student 有什么区别?
-
- 如何查看建表的完整SQL语句?(提示:SHOW CREATE TABLE)
-
SHOW CREATE TABLE student;
- 如何查看数据库中所有的表?
-
SHOW TABLES;
- DESC student 和 SHOW COLUMNS FROM student 有什么区别?
-
题目3: 插入3条学生记录:
- 张三,20岁,男,zhangsan@example.com
- 李四,22岁,女,lisi@example.com
- 王五,21岁,男,wangwu@example.com
- 答案1:
效率低:
INSERT INTO student(name,age,gender,email) VALUES('张三',20,'男','zhangsan@example.com'); INSERT INTO student(name,age,gender,email) VALUES('李四',22,'女','lisi@example.com'); INSERT INTO student(name,age,gender,email) VALUES('王五',21,'男','wangwu@example.com'); - 答案2:
INSERT INTO student(name,age,gender,email) VALUES('张三',20,'男','zhangsan@example.com'),('李四',22,'女','lisi@example.com'),('王五',21,'男','wangwu@example.com');
- 扩展思考:
- 如果分3次执行单条INSERT,和一次执行批量INSERT,哪个更快?为什么?
-
- 如果你想让id从1001开始,应该怎么做?
- 方案1:创建表时直接指定 AUTO_INCREMENT 起始值
-
CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), age INT, gender CHAR(1), email VARCHAR(100) ) AUTO_INCREMENT = 1001;
- 方案2:修改已有表的 AUTO_INCREMENT 值,修改前表中还没有数据
-
ALTER TABLE student AUTO_INCREMENT = 1001;
- 当前最大值的影响:假如表中已经有id大于1001的数据,比如2000,设置了id从1001开始,插入数据后还是按照2001开始
- 处理已有数据的表:
-- 方法1:清空表并重置(谨慎使用!) TRUNCATE TABLE student; -- 清空所有数据,AUTO_INCREMENT重置为1 ALTER TABLE student AUTO_INCREMENT = 1001; -- 设置为1001
- 如果插入时某个邮箱重复了会怎样?(如果email有UNIQUE约束)
- 插入失败
- SELECT name, age 和 SELECT * 有什么区别?
-
-
![image]()
- 能否改变查询结果的字段顺序?如 SELECT age, name 可以的
- 如何给查询结果的列名起别名?(提示:使用AS)
- 题目4: 查询所有学生的姓名和年龄
- 答案:
SELECT age,gender FROM student;
- 题目5: 删除表 students
- 答案:
DROP TABLE student;
- 扩展思考:
- DROP TABLE students 和 DELETE FROM students 有什么区别?
![image]()
-
- 如果想保留表结构只删除数据,应该用什么命令?
- delete 或者 truncate
- 如何避免误删表?(提示:可以先用IF EXISTS判断)
- DROP TABLE students 和 DELETE FROM students 有什么区别?




浙公网安备 33010602011771号