【云原生进阶之数据库技术】第一章MySQL-2.2-数据库表基本操作

2024-02-23 08:35:01 浏览数 (2)

1 MySQL数据表操作

1.1 创建表结构

语法:create table table_name(col_name1 data_type1,col_name2 data_type2,....); 创建t_test数据表,字段为id,name(数据类型中的数字是字段长度)

代码语言:javascript复制
create table t_test(id char(20),name char(10));

完整创建定义:

代码语言:javascript复制
create [temporary] table [if not exists]table_name [([column_definition],~~~|[index_definition])] [table_option][select_statement];

创建数据表:

  • temporary创建临时表,此表只能对创建它的用户可见,当断开与数据库的连接时,会自动删除临时表
  • index-definition:表索引项定义
  • table_option:用于描述表的选项
  • select_statement:可以在语句的末尾添加一个select语句,在一个表的基础上创建一个表
代码语言:javascript复制
show create table tablename 查看数据表的定义

1.2 查看表结构

语法:describe table_name; desc table_name;

describe可以缩写为desc。

代码语言:javascript复制
describe t_test; 
desc t_test;

1.3 查看数据表

语法:show tables;

代码语言:javascript复制
show tables;

1.4 复制表结构

如果是复制其他数据库的表结构,在table_name2前加上数据库的名称

语法:create table new_table_name1 like old_table_namme2;

将数据库db_test中的t_test1表结构复制到当前数据库,命名为表结构t_test2。

代码语言:javascript复制
create table t_test1 like t_test2;

1.5 复制表数据

表结构一致

代码语言:javascript复制
insert into table_name_new select * from table_name_old;

表结构不一致

代码语言:javascript复制
insert into table_name_new(column1,column2...) select column1,column2... from table_name_old;

1.6 修改表名

语法:alter table old_table_name (旧名字) rename new_table_name(新名字);

代码语言:javascript复制
alter table t_test1 rename t_test2;

1.7 增加字段

语法:alter table table_name add col_name1(添加字段名)data_type (字段类型);

代码语言:javascript复制
alter table t_test add test_address varchar(255);
1.7.1 将添加的字段放入首位

语法:alter table table_name add col_name1(添加字段名)data_type (字段类型) first;

代码语言:javascript复制
alter table t_test add test_address varchar(255) first;
1.7.2 将添加的字段放入 test2字段之后

语法:alter table table_name add col_name1(添加字段名)data_type (字段类型) after test2(字段);

代码语言:javascript复制
alter table t_test add test1 varchar(20) after test2;

1.8 删除字段

语法:alter table t_reader drop reader_qq (删除的字段名);

代码语言:javascript复制
alter table t_test drop test1;

1.9 修改字段的数据类型

语法:alter table table_name modify col_name1(字段名) data_type (字段类型); 将test2的数据类型由varchar改为char。

代码语言:javascript复制
alter table table_name modify test2 char(100);

1.10 修改字段的名称

语法:alter table table_name change old_col_name(字段名) new_col_old(新字段名) data_type(字段数据类型);

代码语言:javascript复制
alter table t_test change test_address address char(100);

1.11 设置主键

作用:保证输入记录唯一性 方式: - 创建表时设置 - 创建表之后设置

语法:create table table_name(xs_id char(12),xs_name char(10) primary key (xs_id)); 创建studnet表时,将xs_id设置为主键。

代码语言:javascript复制
create table student (xs_id char(12),xs_name char(10),primary key(xs_id));

创建studnet表时,将xs_id和xs_name设置为主键。这种将多个字段设为主键的方式称为:组合主键。组合主键也是一个主键(唯一性)。

代码语言:javascript复制
create table student (xs_id char(12),xs_name char(10),primary key(xs_id,xs_name));

1.12 删除主键

语法:alter table table_name drop primary key;

代码语言:javascript复制
alter table studnet drop primary key;

1.13 外键

作用:确保数据完整性。如: - 实体完整性 - 用户定义完整性 - 参照完整性 只有当某个字段成为了主键后,该字段才能在其它表中成为外键。 语法:alter table table_name add constraint 外键名称 foreign key (设为外键的字段名)references t_table2(主键字段名);

将t_test1表中id字段设为主键,t_test2表中id字段设为外键。

代码语言:javascript复制
alter table t_test2 add constraint fk1 foreign key (id) references t_test1(id);

1.14 删除外键

语法: show create table table_name; 获取外键名称:

代码语言:javascript复制
show create table t_test2;

语法:alter table t_test2 drop foreign key 外键名称;

代码语言:javascript复制
alter table t_test2 drop foreign key fk1;

1.15 约束

什么是约束:在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。

常见的约束:

  • 非空约束(not null):约束的字段不能为NULL
  • 唯一约束(unique):约束的字段不能重复
  • 主键约束(primary key):约束的字段既不能为NULL,也不能重复(简称PK)
  • 外键约束(foreign key):...(简称FK)
  • 检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束。
1.15.1 非空约束
代码语言:javascript复制
create table t_user( 
    id int, 
    username varchar(255) not null(**在创建表时添加约束**), 
    password varchar(255) 
); 
insert into t_user(id,password) values(1,'123'); //编译错误,约束username字段不能为空! 
ERROR 1364 (HY000): Field 'username' doesn't have a default value 
insert into t_user(id,username,password) values(1,'lisi','123');
1.15.2 唯一性约束

唯一性约束修饰的字段具有唯一性,不能重复。但可以为null。

代码语言:javascript复制
drop table if exists t_user; 
create table t_user( 
    id int, 
    usercode varchar(255), 
    username varchar(255), 
    unique(usercode,username) //多个字段联合起来添加一个约束unique 【表级约束】 
);

ps:not null约束只有列级约束,没有表级约束。

1.15.3 主键约束
代码语言:javascript复制
drop table if exists t_user; 
create table t_user( 
    id int primary key, //列级约束 
    username varchar(255), 
    email varchar(255) 
);
  • 主键约束,不能为null也不能重复!
  • 主键约束 :primary key
  • 主键字段 : id字段添加primary key之后,id叫做主键字段
  • 主键值 :id字段中的每一个值都是主键值。
代码语言:javascript复制
create table t_user( 
    id int primary key, //列级约束 
    username varchar(255), 
    email varchar(255) 
);

主键的分类:

1)根据主键字段的字段数量来分:单一主键 and 复合主键

2)根据主键的性质来划分:自然主键 and 业务主键

  • 一个表的主键约束只能有一个
  • mysql提供主键自增。
1.15.5 外键约束

关于外键约束的相关术语:

  • 外键约束:foreign key
  • 外键字段:添加有外键约束的字段
  • 外键值:外键字段中的每一个值。

A表中的字段引用B表中的字段,则A是子表,B是父表

删除数据的时候,先删除子表,再删除父表。添加数据的时候,先添加父表,再添加子表。创建表的时候,先创建父表,再创建子表。删除表的时候,先删除子表,再删除父表。外键值可以为null

1.16 mysql常量

1.字符串常量:用单引号进行字符串

参考链接

【数据库】 mysql的四种安装方式_mysql安装-CSDN博客

超级详细的mysql数据库安装指南 - 知乎

Mysql超详细安装配置教程(保姆级) - 知乎

mysql安装教程--超详细图文讲解 - 知乎

MySQL基础(非常全)_mysql基础知识-CSDN博客

mysql基础知识 - 知乎

超全汇总!一篇讲完MySQL的入门干货 - 知乎

MySQL数据库的基础操作_mysql数据库操作-CSDN博客

【收藏级】MySQL基本操作的所有内容(常看常新) - 知乎

0 人点赞