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语句,在一个表的基础上创建一个表
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字段中的每一个值都是主键值。
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基本操作的所有内容(常看常新) - 知乎