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成绩,类型为整型
自定义其他相关列
要求
把表字段补充完整,可以通过学生表查看学生相关课程的成绩
*/
相关推荐
weixin_307779134 小时前
C#程序实现将Teradata的存储过程转换为Snowflake的sql的存储过程
数据库·数据仓库·c#·云计算·迁移学习
李高钢4 小时前
c#获取当前程序所在目录避坑
开发语言·数据库·c#
金仓拾光集5 小时前
金仓数据库践行社会责任:以技术驱动绿色计算与数据普惠
运维·数据库·oracle·kingbase·数据库平替用金仓·金仓数据库
不像程序员的程序媛5 小时前
mysql 配置引起的报错
mysql
金仓拾光集5 小时前
金仓数据库赋能地铁AFC系统升级:核心技术实现与落地
运维·数据库·ux·kingbase·kingbasees·数据库平替用金仓·金仓数据库
2503_928411566 小时前
10.31 MySQL数据记录操作
数据库·sql·mysql
CryptoRzz6 小时前
印度实时股票数据源接口对接文档-IPO新股、k线数据
java·开发语言·数据库·区块链
是2的10次方啊6 小时前
MySQL索引:SQL性能分析工具详解(进阶篇)
mysql
码农阿豪6 小时前
平滑过渡,破解多库并存:浙人医基于金仓KFS的医疗信创实战解析
数据库·kingbasees