数据表操作
基础操作
1. 创建表(类似于一个 Excel 表)
create table tab_name(
field1 type[完整性约束条件],
- field2 type,
- ...
- fieldn type
- )[character set xxx];
数据库的增删查改和数据类型掌握后, 就可以开始在数据库里面建表了, 首先有一个主键的概念: 能够唯一区分出当前记录的字段称为主键, 主键要是非空且唯一的, 且字段一定要是数字类型, 下面我们创建一个员工表:
创建一个员工表 employee
- create table employee(
- id int primary key auto_increment ,
- name varchar(20),
gender bit default 1, -- gender char(1) default 1 ----- 或者 TINYINT(1)
- job varchar(20),
- salary double(4,2) unsigned,
resume text -- 注意, 这里作为最后一个字段不加逗号
- );
- /* 约束:
- primary key (非空且唯一) : 能够唯一区分出当前记录的字段称为主键!
- unique
- not null
- auto_increment 主键字段必须是数字类型.
- 外键约束 foreign key */
2. 查看表信息
desc tab_name 查看表结构
show columns from tab_name 查看表结构
show tables 查看当前数据库中的所有的表
show create table tab_name 查看当前数据库表建表语句
有些命令和 database 的很像, 这里就不演示了.
3. 修改表结构
什么是表结构的修改? 其实就是对字段 (类似 Excel 里面的表头) 的修改, 因为现在表里面还没有任何数据, 所以现在只能对字段进行增删改查.
(1)增加列(字段)
首先我们试一下增加一个字段:
alter table tab_name add [column] 列名 类型[完整性约束条件][first|after 字段名];
alter table employee add addr varchar(20) not null unique after name;
增加了一个名叫 addr 的字段, 数据类型是 varchar(20), 约束条件是非空且唯一, 位置在字段 name 后面, 我们现在查看一下表结构:
也可以同时增加多个字段, 注意字段名不要重复了:
- # 添加多个字段
- alter table employee
- add hobby varchar(20),
- add age int first,
- add birth TINYINT after name;
(2)修改一列类型
我们把 age 的类型和位置改一下, 最后的修改会覆盖之前的修改内容;
alter table tab_name modify 列名 类型 [完整性约束条件][first|after 字段名];
- alter table employee modify age tinyint ;
- alter table employee modify age int default 20 after id;
(3)修改列名
现在我们把 age 改成 Age, 并修改约束条件:
alter table tab_name change [column] 列名 新列名 类型 [完整性约束条件][first|after 字段名];
alter table employee change age Age int default 28 first;
(4)删除一列
现在把 Age 这一行删除:
alter table tab_name drop [column] 列名;
alter table employee drop Age;
那么, 删除多行或者删除一行又增加一行怎么写? 我们先把最后两行 resume 和 hobby 删除:
- alter table employee drop resume,
- drop hobby;
删除一行增加一行也是一样的, 分两行写就行了.
(5)修改表名
rename table 表名 to 新表名;
rename table employee to emp;
(6)修该表所用的字符集
和第一篇我们修改数据库字符集一样:
alter table student character set utf8;
4. 删除表
删除表就很简单了:
drop table tab_name;
5 添加 \ 删除主键
- alter table tab_name add primary key(字段名称,...)
- alter table users drop primary key;
6. 唯一索引
现在我们的表还没有数据, 当我们表里面有大量数据的时候, 我们再按主键去查找的话, 需要遍历, 耗时就很长了, 这个时候有一个唯一索引, 他的算法不是通过遍历去查找, 而是更优化的一种方法, 从而提升查找的效率, 大概能达到几百倍的提升, 下面就是唯一索引的一些语法:
alter table tab_name add unique [index|key] [索引名称](字段名称,...)
alter table emp add unique(name)-- 索引值默认为字段名 show create table emp;
alter table emp add unique key user_name(name);-- 索引值为 user_name
-- 添加联合索引
alter table emp add unique index name_age(name,birth);#show create table emp;
-- 删除唯一索引
alter table tab_name drop {index|key} index_name
完整性约束条件之主键约束
单字段主键
主键字段特点: 非空且唯一
- create table users(
- id INT primary key,
- name varchar(20),
- age TINYINT
- );
多字段联合主键
- <1> 一张表只能有一个主键
- <2> 主键类型不一定非是整型
- create table users2(
- id INT,
- name varchar(20),
- age TINYINT,
- primary key(name,id)
- );
来源: https://www.cnblogs.com/pengfy/p/10894985.html