目录
回顾
数据库是由多个表组成
表是由行和列组成
行表示一条数据 列表示一条数据中的某个单元格
3.1 约束字段
create table 表名(列名1 数据类型 [约束字段], 列名2 数据类型 [约束字段]...);
# 只有当单元格中的数据出现了Null关键字 才认为是空数据 空字符串 != Null
# 约束是可以自由组合
# 表中的主键只能有一个 一个表中只能设置一个主键约束
主键约束: primary key
作用:限制被描述的列的数据不能为空也不能重复
如果一个列被主键约束了 那么这个列为当前表的唯一列
# 在设计表的时候 都应该有一个唯一的列 也能提高数据的增删改查速度
唯一约束:unique
作用:限制被描述的列的数据不能重复 允许为null null:表示没有任何数据
非空约束:not null
作用:限制被描述的列的数据不能为空
默认值:default
作用:可以给一个列添加一个默认值 字符串和时间都需要用单引号包裹起来
自动增长:auto_increment
# 只能使用在整数类型的列上
# auto_increment要和主键约束一起使用 primary key auto_increment
作用:从1开始 每添加一条数据 在上一条的基础上+1
被自动增长描述的列不需要手动输入数据
3.2 查看表结构
desc 表名;
小技巧
如果是创建就用 create
删除 drop
修改 alter
3.3 列操作
3.3.1 添加
语法:alter table 表名 add 列名 数据类型 [约束字段];
alter table student_up add stu_height float(4, 1);
3.3.2 删除
语法:alter table 表名 drop 列名;
alter table student_up drop stu_height;
3.3.3 修改
change:修改列名、数据类型、约束字段
modify:数据类型、约束字段
修改列名语法:alter table 表名 change 原列名 新列名 数据类型 [约束字段];
把体重修改成身高 stu_height 类型修改成 double(5, 1) 约束字段添加 not null
alter table student_up change stu_weight stu_height double(5,1) not null;
# 如果使用change进行修改 但是不想修改列名 那么原列名和新列名保持一致就好了
alter table student_up change stu_height stu_height double(6,1);
# 如果不想修改列名 可以使用modify关键
modify语法:alter table 表名 modify 列名 新数据类型 [约束];
alter table student_up modify stu_height float(4,1);
3.4 数据库的基础操作
增:新增 insert
1.添加一行数据
插入数据语法1:
# insert into 表名 values(数据1, 数据2, 数据3...);
有多少个列 必须写多少个值 如果有默认值或者自动增长 则用null占位
数据和列的顺序要一一对应
insert into student_up values(4, '树下', '男', 16, 155.6);
插入数据语法2:
# insert into 表名(列名1, 列名2...) values(数据1, 数据2...);
优点1:数据和列名一一对应 保证数据的准确性
优点2:有默认值或者自动增长的列可以不写
insert into student_up(stu_name, stu_height) values('王大锤', 156.1);
2.添加多行数据
# insert into 表名(列名1, 列名2...) values(数据1, 数据2...),(数据1,数据2...)...;
insert into student_up(stu_name, stu_height) values('田大锤', 168.1),('柯南', 175);
删:删除
改:修改 update
修改整列数据
# update 表名 set 列名 = 新值;
update student_up set stu_age = 18;
修改指定的行 需要添加where条件子句来帮主我们完成
# update 表名 set 列名 = 新值 where 条件;
案例:把小王的年龄修改成19岁 可以使用十字锁定法来理解
set的列和where的行来锁定某一个要修改的单元格
update student_up set stu_age = 19 where stu_name = '小王';
案例2:把年龄大于18岁的同学的性别改成女...
update student_up set stu_sex = '女' where stu_age > 18;
案例3:把所有男同学的年龄+1
update student_up set stu_age = stu_age + 1 where stu_sex = '男';
案例4:把树下村落的名字修改成 王村落 性别修改成 女
update student_up set stu_name = '王村落', stu_sex = '女' where stu_name = '树下村落';
# 修改多个列的语法:update 表名 set 列1 = 值1, 列2 = 值2 ... where 条件;
查:查询 select
# 字符串类型和时间数据类型的数据需要使用单引号引起来
# 把表中的数据查询出来 以结果集的方式反馈出来
1.查询指定的列
select 列名1, 列名2,..... from 表名;
select stu_name, stu_sex from student_up;
# stu_name等要查询出来的列 叫做检索列
2.查询所有列
select * from 表名;
*:所有列
select * from student_up;
3.5 练习(一)
表一
表二
表三
表四
表五
表六
表七
表八
3.5.1 练习(二)
- 把创建表作业的teacher表数据使用语法插入
- 把张三的名字修改成 张麻子
- 把住在北京市海淀区的老师的性别修改成男
- 请查询老师表中 老师的教工号和名字还有出生日期
3.5.2 练习(三)
1、在product表中添加一个 数量的新列 number 类型是int
2、修改productName的类型为 char(200)
3、把number列修改成 dect描述列 类型是varchar(400)
4、删除dect列
5、查看这个表的表结构
3.6 解析
3.6.1 练习(一) 解析
表一:
表二:
表三:
表四:
这几个表要联合起来看 联合起来做
3.6.2 练习(二)解析
- 把创建表作业的teacher表数据使用语法插入
2、把张三的名字修改成 张麻子
3、把住在北京市海淀区的老师的性别修改成男
4、删除后 查询老师表中所有的信息
5、请查询老师表中 老师的教工号和名字还有出生日期
3.6.3 练习(三)解析
1、修改productName的类型为 char(200)
2、把number列修改成 dect描述列 类型是varchar(400)
3、删除dect列
4、查看这个表的表结构