10.30 MySQL数据表操作

操作数据表之前需要先打开数据表所在的数据库

Plain 复制代码
 use 库名
添加数据表
Plain 复制代码
create table [if not exists] 表名(
  字段名  数据类型  [约束],
  字段名  数据类型  [约束],
  ......
  字段名  数据类型  [约束]
)[ENGINE=MyISAM DEFAULT CHARSET=utf8 collate utf8_general_ci] ;
查看数据表
Plain 复制代码
show tables   查看当前数据下有哪此数据表
show create talbe 表名 查看建表信息
desc 表名 查看表结构
修改数据表
Plain 复制代码
/* 增加字段 */
alter table 表名 add [colum]  字段名 数据类型 [约束]
/* 修改字段名 */
alter table 表名 change 字段名  新字段名 数据类型 [约束]
/* 删除字段 */
alter table 表名 drop [colum]  字段名
/* 更改表名 */
alter table 表名 rename  [to]  新表名
删除数据表
Plain 复制代码
drop table  表名

约束

  • 约束保证数据的完整性和一致性

  • 约束类型包括

    • 非空约束 not null

    • 主键约束 primary key/key 【id】

    • 唯一约束 unique key 可以出现多次

    • 默认约束 default

    • 外键约束 foreign key

!\[f08a2bb3-96f0-484a-8155-43dd2bd02922.png]

!\[667ac6d1-947e-4696-a585-cc109a9d3371.png]

数据实体的完整性

!\[d2a90a68-c650-4c05-a0eb-81b3b3246a1d.png]

字段完整性 引用完整性 自定义完整性

非空约束

null | not null 空约束,字段值允许为null 非空约束,字段值不允许为null,必须赋值 增加非空约束

Plain 复制代码
create table mebmer(
  username varchar(30)  not null
);
自增长约束

auto_increment 自增长约束

必须与主键组合使用 默认情况下,起始值为1,增量为1

更改AUTO_INCREMENT初始值: ALTER TABLE 表名称 AUTO_INCREMENT=100 得到最后一次插入的值:last_insert_id()

Plain 复制代码
create table mebmer(
  id int unsigned primary key  auto_increment
);
主键约束

primary key 主键约束

每张表只能存在一个主键,id 主键必须保证记录的唯一性

主键自动为not null (不能为空)

主键不必与自增长约束同时存在

Plain 复制代码
create table mebmer(
  id int unsigned auto_increment,
  primary key (id)
);
唯一约束

unique key 唯一约束 用来保证记录的唯一性

唯一约束的字段可以为空值(null)

每张表中可以存在多个唯一约束

Plain 复制代码
/* 方法一:*/
create table mebmer(
  mobile varchar(11) unique
);
/* 方法二:*/
create table mebmer(
  mobile varchar(11),
  unique key (mobile)
);
默认约束

default 默认约束,当插入记录时,如果没有明确为字段赋值,则自动赋予默认值

Plain 复制代码
create table mebmer(
  sex enum('male','female') default 'male'
);
外键约束

foreign key 外键约束

数据表的存储引擎只能为InnoDB

外键列和参照列必须具有相似的数据类型

参照列必须存在索引

SQL 复制代码
create table group(
  id tinyint unsigned primary key auto_increment,
  group varchar(20) unique not null
);
create table mebmer(
  gid tinyint unsigned not null,
  constraint member_group_key  foreign key (gid) references group (id)
);
增加约束

除外键约束外的其它约束

SQL 复制代码
alter table 表名 change 字段名 新字段名  数据类型 约束
ALTER TABLE 表名 ADD UNIQUE/PRIMARY KEY(字段名称) -- 注意必须有()
alter table 表明 alter 字段名 set default 默认值
外键约束
SQL 复制代码
alter table 表名 add [constraint [约束名]]  foreign key (外键字段名)  references 被参照表 (被参照字段名)

删除约束

删除唯一约束
SQL 复制代码
ALTER TABLE 表名 DROP INDEX 字段名
删除主键约束
SQL 复制代码
ALTER TABLE 表名 DROP PRIMARY KEY
如果主键列存在自增长约束,删除主键约束前必须先删自增长约束
--- 删除自增长约束
alter table member5 change id id int(5) unsigned;
删除外键约束
SQL 复制代码
ALTER TABLE 表名 DROP FOREIGN KEY 约束名
删除默认值
SQL 复制代码
ALTER TABLE 表名  ALTER 字段名 DROP DEFAULT;

思考

学员姓名允许为空吗?

家庭地址允许为空吗?

电子邮件信息允许为空吗?

考试成绩允许为空吗?

在主键列输入的数值,允许为空吗?

一个表可以有多个主键吗?

案例

CSS 复制代码
/*
例:建立一个学生信息表(student)
定义列sno学号,类型为5位定长字符串,非空,不能重复
定义列sname姓名,类型为8位定长字符串,非空
定义列ssex性别,取值1或0
定义列sage年龄,类型为短整型
定义列sdept系名,数据类型为20位变长字符串

例:建立一个课程信息表(course)
定义列courseid课程号,类型为整型,非空,自动增长,主键
定义列cname课程名,类型为16位变长字符串,非空

例:建立一个学生考试成绩信息表(sc)
定义列grade成绩,类型为整型
自定义其他相关列
要求
把表字段补充完整,可以通过学生表查看学生相关课程的成绩
*/
相关推荐
晚风叙码35 分钟前
MySQL 表的约束详解:从空属性到外键
android·数据库·mysql·adb
刘胡子大叔8 小时前
MySQL 升到 8.4 前的兼容性自检清单
mysql
IT古董9 小时前
《FDE前沿部署工程师实战教程》33 - Enterprise AI Observability:从Agent Trace到全链路智能运维
数据库·人工智能
for_ever_love__9 小时前
MySQL 主从复制讲透:binlog 原理、搭建步骤与读写分离
java·数据库·mysql·binlog·读写分离·原理·主从复制
Nturmoils13 小时前
GROUP BY 先别想当然,查汇总前把规则跑清楚
数据库
最笨的羊羊13 小时前
Oceanbase数据库系列之:向量数据库核心知识
数据库·oceanbase
fish_xk13 小时前
mysql中的表的约束
数据库·mysql
谢亮_vipxieliang13 小时前
Go Channel 高级模式——从底层原理到扇出扇入实战
java·数据库·golang
ggaofeng15 小时前
自己编写邮件服务器和客户端
数据库
java1234_小锋15 小时前
【技术专题】Mysql8 数据库 - Mysql8 添加,更新,删除数据
数据库·mysql