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成绩,类型为整型
自定义其他相关列
要求
把表字段补充完整,可以通过学生表查看学生相关课程的成绩
*/
相关推荐
java_logo5 分钟前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris
广州灵眸科技有限公司7 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
Cloud云卷云舒10 小时前
云卷云舒:从Oracle/MySQL迁移到HaishanDB:迁移评估工具核心技术拆解
mysql·oracle·ai-native·haishandb·信创数据库替换
憧憬成为web高手10 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学10 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh12 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
用户713335851562413 小时前
MySQL - 事务、redo/undo 日志与 MVCC
mysql
z1234567898613 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD13 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
java_logo13 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程