数据表操作
基础操作
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) );