mysql数据表的基本操作
好久没梳理下Mysql基础命令了.今天抽空整理了下,虽然很简单...但是还是有必要巩固下基础滴啦
1.创建表:之前需要use database database_name 然后create table 表名();
例:创建员工表tb_employee1,结构如下表所示
字段名称 |
数据类型 |
备注 |
id |
int(11) |
员工编号 |
name |
varchar(25) |
员工名称 |
depld |
int(11) |
所在部门编号 |
salary |
float |
工资 |
mysql> create database aa; mysql> use aa; mysql> create table tb_employee1(id int(11),name varchar(25),depld int(11),salary float);
2.主键约束:主键又称主码,是表中一列或多列的组合。主键约束要求主键列的数据唯一,并且不能为空。主键能够唯一标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询速度。主键分为两种类型:单字段主键和多字段联合主键。
(1)单字段主键
mysql> create table tb_employee1(id int(11)primary key,name varchar(25),depld int(11),salary float); mysql> create table tb_employee1(id int(11),name varchar(25),depld int(11),salary float,primary key(id));
(2)多字段联合主键
mysql> create table tb_employee1(id int(11),name varchar(25),depld int(11),salary float,primary key(id,name));
3.外键约束:外键用来在两个表之间建立联系,它可以是一列或者多列。一个表可以有一个或者多个外键。外键对应的是参照完整性,一个表的外键可以是空值,若不为空值,则每一个外键必须等于另一个表中主键的某个值。
下面介绍几个概念。是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键。外键的主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的主键。例如:部分表的主键id,在表tb中有一个键deptld与这个id关联。
主表(父表):对于两个具有关联关系的表而言,相关字段中主键所在的那个表就是主表。
从表(自表):对于两个具有关联关系的表而言,相关字段中外键所在的那个表就是从表。
例:定义数据表tb_employee5,并且在该表中创建外键约束
创建一个部门表tb_dept1,表结构如下表所示
字段名称 |
数据类型 |
备注 |
id |
int(11) |
部门编号 |
name |
varchar(22) |
部门名称 |
location |
varchar(50) |
部门位置 |
mysql> create table tb_dept1(id int(11)primary key,name varchar(22),location varchar(50)); 定义数据表tb_employee5,让它的deptld字段作为外键关联到tb_dept1的主键id: mysql> create table tb_employee5(id int(11)primary key,name varchar(25),deptld int(11),salary float,constraint fk_emp_dept1 foreign key(deptld) references tb_dept1(id));
4.非空约束(not null):是指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。语法规则:字段名 数据类型 not null
例:定义数据表tb_employee6,指定员工的名称不能为空
mysql> create table tb_employee6(id int(11)primary key,name varchar(25)not null,deptld int(11),salary float);
5.唯一性约束:要求该列唯一,允许为空,但只能出现一个空值。唯一性约束可以确保一列或者多列都不能出现重复值。
(1)在定义完列之后直接指定唯一约束
语法规则:字段名 数据类型 unique
mysql> create table tb_dept2(id int(11)primary key,name varchar(22)unique,location varchar(50));
(2)在定义完所有列之后指定唯一约束
语法规则:constraint 约束名 unique(字段名)
mysql> create table tb_dept3(id int(11)primary key,name varchar(22),location varchar(50),constraint sth unique(name));
unique和primary key的区别:一个表中可以有多个字段声明为unique,但只能有一个primary key声明;声明为primary key的列不允许有空值,但是声明为unique的字段允许空值的存在。
6.默认约束:指定某列的默认值。如男性同学较多,性别就可以默认为“男”。如果插入一条新的记录时没有为这个字段赋值,那么系统自动会为这个字段赋值为男。
语法规则:字段名 数据类型 default 默认值
例:mysql> create table tb_employee7(id int(11)primary key,name varchar(25)not null,deptld int(11)default 1111,salary float);
7.设置数据表的属性值自动增加:在数据库应用中,经常希望在每次插入新数据时,系统会自动生成字段的主键值。可以为表主键添加auto_increment关键字来实现。在mysql中,默认情况下auto_increment初始值为1,每新增一条记录,字段自动加1.一个表只能有一个字段使用auto_increment约束,且每个字段必须为主键的一部分。auto_increment约束的字段可以是任何整数类型(tinyint/samllint/int/bigint)。
语法规则:字段名 数据类型 auto_increment
例:定义数据表tb_employee8,指定员工标号自动增加
mysql> create table tb_employee8(id int(11)primary key auto_increment,name varchar(25)not null,deptld int(11),salary float);
mysql> insert into tb_employee8(name,salary) values('lucy',1000),('lii',800),('cai',20000); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from tb_employee8; +----+------+--------+--------+ | id | name | deptld | salary | +----+------+--------+--------+ | 1 | lucy | NULL | 1000 | | 2 | lii | NULL | 800 | | 3 | cai | NULL | 20000 | +----+------+--------+--------+ 3 rows in set (0.00 sec)
8.查看数据表的结构
查看表基本结构:describe 表名 或 desc 表名
mysql> desc tb_employee8; +--------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(25) | NO | | NULL | | | deptld | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+----------------+
(1)NULL:表示该列是否可以存储null值
(2)key:表示该列是否已经编制索引。pri为该列主键的一部分;uni表示该列是unique索引的一部分;mul表示在列中某个给定值允许出现多次。
9.查看表详细结构
语法规则:show create table 表名\G
mysql> show create table tb_employee8\G *************************** 1. row *************************** Table: tb_employee8 Create Table: CREATE TABLE `tb_employee8` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(25) NOT NULL, `deptld` int(11) DEFAULT NULL, `salary` float DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 1 row in set (0.00 sec)
10.修改数据表:修改数据库中已经存在的数据表结构。常用的修改表的操作有:修改表名,修改字段数据类型或字段名,增加和删除字段,修改字段的排列位置,更改表的存储引擎,删除表的外键约束等。
(1)修改表名
alter table 旧表名 rename 新表名 例:mysql> alter table tb_dept3 rename tb_deptment3;
(2)修改字段数据类型
alter table 表名 modify 字段名 数据类型 例:mysql> alter table tb_dept1 modify name varchar(30);
(3)添加字段
alter table 表名 add 新字段名 数据类型 例1:mysql> alter table tb_dept1 add managerld int(20);(没有完整性约束条件的字段) 例2:mysql> alter table tb_dept1 add column1 varchar(12) not null;(添加有约束条件) 例3:mysql> alter table tb_dept1 add column2 int(11) first;(添加到第一列) 例4:mysql> alter table tb_dept1 add column3 int(11) after name;(添加到name后一列)
(4)删除字段
alter table 表名 drop 字段名 例:mysql> alter table tb_dept1 drop column3;
(5)修改字段排序
alter table 表名 modify 字段1 数据类型 first after 字段2 例1:mysql> alter table tb_dept1 modify id int(11) first; 例2:mysql> alter table tb_dept1 modify column2 int(11) after column1;
(6)更改表的数据引擎
alter table 表名 engine=更改后的存储引擎 例:mysql> alter table tb_dept1 engine=innodb;
(7)删除表的外键约束
alter table 表名 drop foreign key 外键约束名
(8)修改字段名
mysql> alter table customers change c_contact c_phone varchar(50);
11.删除数据表
drop table 表1 表2 。。。
删除被其他表关联的主表:先删除字表,再删除主表(或取消外键约束,删除主表)