Mysql练习-01

  1. 1. 一、timestamp时间戳类型:
  2. 2. 二、enum枚举类型
  3. 3. 三、check检查约束
  4. 4. 四、DML操作

喵呼呼o(=•ェ•=)m

一、timestamp时间戳类型:

在进行添加、修改操作(insert、update)的时候,时间会自动进行修改。

在设计表的时候进行设计timestamp类型,可设置默认值为(CURRENT_TIMESTAMP)当前时间戳。

二、enum枚举类型

例如:设置season季节字段为enum类型,值为(’春’,’夏’,’秋’,’冬’)

输入数字,会对应值列表的索引进行匹配,如我输入1,会给我选择‘春’,4就是 ‘冬’; 输入其它会报错。

三、check检查约束

如:

1
2
3
4
create table user(
id int primary key auto_increment,
age tinyint UNSIGNED CHECK(age<100)
)

当我输入的年龄在100以内可以,否则会报
1264 - Out of range value for column ‘age’ at row 1 的越界错误信息。

四、DML操作

1/2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

-- 1.创建学生表student和班级表class
CREATE TABLE student (
xh char(4),
xm varchar(10),
sex char(2),
birthday date,
sal double(7,2),
studentcid int(2)
)

-- error
CREATE TABLE class (
classid in(2),
cname varchar(20),
ccount int(3)
)

-- 2.基于上述学生表和班级表,完成如下问题
-- 2.1 批量添加 -> 添加三个班级信息为
insert into class(classid, cname, ccount) VALUES
(1, 'JAVA1班', null),
(2, 'JAVA2班', null),
(3, 'JAVA3班', null);

-- 2.2 添加学生信息如下:‘A001’,‘张三’,‘男’,‘01-5月-05’,100,1
insert into student(xh, xm, sex, birthday, sal, studentcid) values('A001','张三','男','01-05-05', 100, 1);

-- 2.3 添加学生信息如下:'A002','MIKE','男','1905-05-06',10
insert into student(xh, xm, sex, birthday, sal) values('A002','MIKE','男','1905-05-06', 10);

-- 2.4 插入部分学生信息: 'A003','JOHN','女’
insert into student(xh, xm, sex) values( 'A003','JOHN','女');

-- 2.5 将A001学生性别修改为'女'
update student set sex = '女' where xh = 'A001';

-- 2.6 将A001学生信息修改如下:性别为男,生日设置为1980-04-01
update student set sex='男', birthday='1980-04-01' where xh='A001';

-- 2.7 将生日为空的学生班级修改为Java3班
update student set studentcid=3 where birthday is Null;

-- 2.8 请使用一条SQL语句,使用子查询,更新班级表中每个班级的人数字段

3.使用如下语句,建立以下表

1
2
3
4
5
6
7
CREATE TABLE copy_emp   (
empno int(4),
ename varchar(20),
hiredate date,
deptno int(2),
sal double(8,2)
)

(1)在表copy_emp中插入数据,要求sal字段插入空值,部门号50,参加工作时间为2000年1月1日,其他字段随意

1
insert into copy_emp(empno, ename, hiredate, deptno, sal) values(1, 'gz', '2000-01-01', 20, null);

(2)在表copy_emp中插入数据,要求把emp表中部门号为10号部门的员工信息插入

1
insert into copy_emp(empno, ename, hiredate, deptno, sal) select empno, ename, hiredate, deptno, sal from emp where deptno = 10;

注:

  1. 我们可以从一个表中复制所有的列插入到另一个已存在的表中:

    INSERT INTO table2 SELECT * FROM table1;

  2. 或者我们可以只复制希望的列插入到另一个已存在的表中:

    insert into copy_emp

    (empno, ename, hiredate, deptno, sal)

    select empno, ename, hiredate, deptno, sal

    from emp

    where deptno = 10;

(3)修改copy_emp表中数据,要求10号部门所有员工涨20%的工资

1
update copy_emp set sal=sal*1.2 where deptno = 10;