湖北专升本MySQL复习(MySQL数据库实用教程)——MySQL数据表的操作

表是数据库中存储的基本对象,是存储数据的容器,一个完整的表由表结构和表数据两部分组成。


表结构的设计

1.1创建数据表

例:创建学生信息表

create table 学生信息(
学号 char(10),
姓名 char(10),
性别 char(10),
年龄 int,
联系方式 char(11)
);

1.2 查看表的信息

语法格式: desc 表名;

desc 学生信息;

1.3 重命名表

语法格式:rename table 原数据表名 to 新数据表名;

rename table 学生信息 to student;

1.4 删除表

drop table 表名; 

drop table 表名1,表名2,...;   //可在同一语句中指定几个表对它们进行删除

drop table if exists 表名;  //如果不能肯定一个表是否存在,但如果它存在就删除它。


MySQL数据类型

1.1整数类型

特殊:如果只希望表示零和正整数,可以使用无符号整数。unsigned 用于定义大于等于0的数。

例如定义一个学生的年龄可使用“年龄 int unsigned”

整数类型
类型字节数说明
tinyint1字节最小整数
smallint2字节小型整数
medium3字节中型整数
int4字节标准整数
bigint8字节大整数

1.2小数类型

小数类型
数据类型单位说明
float8字节或4字节单精度浮点数

double

8字节双精度浮点数
decimal自定义长度小数位数确定的小数

decimal(length,precision) 用于表示精度确定的小数类型,length决定了该小数的最大位数,precision 用于设置精度(小数点后数字的位数)

例;创建商品表,设置数值型数据类型

create table 商品表 (
订单号 char(10),
商品名称 char(10),
商品价格 decimal(5,2),
商品销量 int,
折后价 float(5,2),
销售总额 double
);

1.3 字符串类型

常规字符串类型
类型说明
char(n)

固定长度为N的字符串,其中N的取值范围为0~255,英文一个字节,汉字两个字节

varchar(n)长度可变,最多8000个英文,4000个汉字
text长度可变,超大数据

char(N) :为固定长度字符串类型,当保存char值时,字符串实际的长度小于定义的长度。

varchar(N):为可变长度字符串类型,varchar的最大有效长度由最大度由最大行大小和使用的字符集确定。varchar存储变长数据可节约存储空间,但存储效率没有char高

text类型是一种特殊的字符串类型,text只能保存字符数据。

例:创建顾客信息表,表名为顾客信息

create table 顾客信息(
买家ID char(10),
姓名 char(10),
家庭住址 varchar(50),
联系电话 char(10),
备注 text
);

1.4 日期类型

日期类型
类型

说明

date日期
time时间
datetime日期和时间
timestamp时间标签
year年份

1.5 复合类型

复合类型
类型说明
enum('value1','value2'......)该类型的字段只能容纳所列值之一或为NULL
set('value1','value2'......)该类型的字段只能容纳一组值或为NULL

例:创建学生兴趣表,包含字段有学号、姓名、性别、爱好。

create table 学生信息表(
学号 char(10),
姓名 char(10),
性别 enum('男','女'),
爱好 set('唱','跳','Rap','篮球')
);

在创建表时,使用字符串类型时应遵循以下的原则:(了解即可)

1)从速度方面考虑,要选择固定的列,可以使用char类型

2)要节省空间,使用动态的列,可以使用varchar类型

3)要将列中的内容限制在一种选择,可以使用enum类型

4)允许在一个列中有多于一个的条目,可以使用set类型

5)如果搜索的内容不区分大小写,可以text类型


修改表的结构

1.1 增加字段

alter table 表名 add 新字段名 新数据类型 [first | after 旧字段名 ];

first:将新字段添加到表的最左边。

after 旧字段名:将新字段添加到表中原有的某个字段的后面。

1.2 删除字段

alter  table 表名 drop 字段名;

1.3 修改字段的数据类(modify)

alter table 表名 modify 字段名 新数据类型;

1.4 修改字段名(change)

alter table 表名 change 旧字段名  新字段名  数据类型;

alter table 顾客信息 add 顾客编号 char(10) first;
alter table 顾客信息 add 年龄 tinyint after 性别;
alter table 顾客信息 add 家庭住址 varchar(50) after 联系方式;
alter table 顾客信息 change 省份证 身份证 char(18);
alter table 顾客信息 modify 联系方式 char(11);
alter table 顾客信息 drop 爱好;

设置约束

为表设置约束是解决数据完整性的主要方法。MySQL数据库将数据的完整性解释为:存储在数据库中的所有数据值均正确。

在MySQL中,为表创建约束有两种方法:1)在创建表时添加约束;2)通过修改表结构添加约束。

1.1主键约束——当字段设置为主键时,该字段的值就不能为空,也不能重复。

主键的建立有三种方法,纯了以下两种,还有修改表结构添加约束

设置主键的方法有两种:

1) 字段名 数据类型 primary key; constraint 约束名称 primary key(字段名);

2) 如果一张表的单个字段无法定义为主键,则需要把多个字段共同设置为主键,即复合主键。

constraint 约束名称 primary key(字段名1,字段名2........);

create table 学生选课(
学号 char(10),
课程号 char(10),
成绩 int,
constraint x_k_pk primary key(学号,课程号)
);

例:为课程信息表中的“课程号”设置自动增长型字段,并设置为主键。

auto_increment 约束的字段可以是任何整数,默认情况下,该字段的值从1开始自增。MySQL中规定自增列必须为主键。

create table 课程信息(
课程号 int auto_increment primary key,
课程名称 char(10),
学分 int default 4
);

1.2 唯一约束

字段名 数据类型 unique;

1.3 非空约束——用来强调实现数据的域完整性,它用来设定某列值不能为空。

字段名 数据类型 not null;

1.4 默认约束

字段名 数据类型 default '值';      //值如果是数字时可以省略单引号。

1.5 外键约束

一张表中的字段值恰好引用了另外一张表的主键值,那么该字段值就是本表的外键。

外键不应该是本表的主键,但它可以与其它字段共同设置为该表的主键。

外键的作用:

1)禁止从表中插入主表中不存在的数据。

2)禁止由于修改主表中的主键的值,导致从表中相应的外键值孤立。

3)禁止删除在从表中有对应记录的主表记录。

设置外键约束的语法格式:

constraint 约束名称 foreign key(字段名) references 主表名(字段名);

create table 学生选课(
学号 char(10),
课程号 int,
成绩 int,
constraint x_k_pk primary key(学号,课程号),
constraint x_fk foreign key(学号) references 学生信息(学号),
constraint k_fk foreign key(课程号) references 课程信息(课程号)
);

create table book(
图书编号 char(10) primary key,
书名 varchar(30) unique,
作者 varchar(30) default'作者不详',
单价 decimal(5,2) default 0,
出版社 char(10) not null
);

1.6修改表结构添加约束

alter table 表名 add constraint 约束名称 约束类型(字段名,......);

其中约束类型只能是 primary key 和 foreign key 。

not null、unique、default约束可以通过修改表结构中的字段实现

例:alter table 学生选课 modify 成绩 int not null default 0;

alter table 学生选课 add constraint x_k_pk primary key(学号,课程号);
alter table 学生选课 add constraint x_fk foreign key(学号) references 学生信息(学号);
alter table 学生选课 add constraint k_fk foreign key(课程号) references 课程信息(课程);

1.7 删除约束

删除主键约束:alter table 表名 drop primary key;

删除外键约束:alter table 表名 drop foreign key 约束名;

alter table 学生选课 drop primary key;
alter table 学生选课 drop foreign key x_fk;

数据更新

1.1 插入数据

格式一:insert into 表名  [(字段列表)] values(字段值1,字段值2,字段值3,....);(普遍用这个)

格式二:insert into 表名 set 字段1=值1,字段2=值2,...;

insert into 学生信息 values
('1906010801','飞雪','女',21,'13691875603'),
('1906010802','西门吹雪','男',18,'13691875604'),
('1906010803','夜未央','女',28,'13691875613'),
('1906010804','菊花残','男',38,'13691875673'),
('1906010805','满地伤','男',26,'13691875663');

1.2 修改数据

修改数据时可以修改数据表中的一个字段或多个字段的全部值

update 表名

set 字段名1=值1[,字段名2=值2,....]

[where 条件表达式]

update 学生信息 set 联系方式='无';
update 学生信息 set 年龄=年龄-5 where 性别='女';
update 学生信息 set 联系方式='11011010' where 学号='1906010801';

1.3 删除数据

1)用delete语句删除记录:(如果没有指定where子句(省略where子句),那么该表的所有记录都将被删除,但表结构依然存在)

delete from 表名 [where 条件表达式];

2)使用truncate table 语句完全清空一个表

truncate table 表名;

truncate table 语句是不支持事物的回滚,并且不会触发触发器程序的运行。而delete语句删除的数据是可以恢复的。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值