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成绩,类型为整型
自定义其他相关列
要求
把表字段补充完整,可以通过学生表查看学生相关课程的成绩
*/
相关推荐
陌上丨4 小时前
Redis的Key和Value的设计原则有哪些?
数据库·redis·缓存
AI_56784 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
ccecw4 小时前
Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错
数据库·mysql
JH30734 小时前
达梦数据库与MySQL的核心差异解析:从特性到实践
数据库·mysql
数据知道4 小时前
PostgreSQL 核心原理:如何利用多核 CPU 加速大数据量扫描(并行查询)
数据库·postgresql
麦聪聊数据6 小时前
Web 原生架构如何重塑企业级数据库协作流?
数据库·sql·低代码·架构
未来之窗软件服务6 小时前
数据库优化提速(四)新加坡房产系统开发数据库表结构—仙盟创梦IDE
数据库·数据库优化·计算机软考
Goat恶霸詹姆斯7 小时前
mysql常用语句
数据库·mysql·oracle
大模型玩家七七8 小时前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
曾经的三心草8 小时前
redis-9-哨兵
数据库·redis·bootstrap