数据表的基本操作
内容导读
- 掌握如何创建数据表
- 掌握查看数据表结构的方法
- 掌握如何修改数据表
- 熟悉删除数据表的方法
创建表
首先创建数据库, SQL 语句如下:
CREATE DATABASE test_db;
选择创建表的数据库, SQL 语句如下:
USE test_db;
创建 tb_empl 表, SQL 语句为:
create table tb_emp1(id int(11),name varchar(25));
查看数据表:
SHOW TABLES;
使用主键约束
主键:要求主键列的数据唯一,并且不允许为空。主键能够惟一地标识表中的一条记录
1.单字段主键
在定义列的同时指定主键
create table tb_emp2(
id int(11) primary key,
name varchar(25)
);
在定义完所有列之后指定主键
create table tb_emp3(
id int(11) ,
name varchar(25),
primary key(id)
);
2.多字段联合主键
create table tb_emp4(
id int(11) ,
name varchar(25),
primary key(id,name)
);
使用外键约束
外键用来在两个表的数据之间建立链接
外键的作用是保持数据的一致性、完整性。
create table tb_dept1(
id int(11)primary key,
name varchar(22) not null,
location varchar(22)
);
create table tb_emp5(
id int(11) ,
name varchar(25),
deptId int(11),
CONSTRAINT fk_emp_deptl FOREIGN KEY(deptld) references tb_deptl(id)
);
关联指的是指相关表之间的联系,子表的外键必须关联父表的主键
使用非空约束
Not NUll:指字段的值不能为空 插入数据时候没有指定值 系统报错
create table tb_emp6(
id int(11) ,
name varchar(25) not null,
primary key(id,name)
);
使用唯一性约束
唯一性约束(Unique Constraint]要求该列唯一,允许为null,但只能出现一个空值。
1.在定义完列之后直接指定唯一约束
create table tb_dept2(
id int(11)primary key,
name varchar(22) unique
);
2.在定义完所有列之后指定唯一约束
create table tb_dept2(
id int(11)primary key,
name varchar(22) unique,
CONSTRAINT STH UNIQUE(name)
);
主键与唯一约束的区别:
一个表中可以有多个字段声明为UNlQUE,但只能有一个PRIMARY KEY
主键不允许为null 但是UNlQUE可以为null
使用默认约束
如果插入一条新的记录时没有为这个字段赋值,使用默认值
create table tb_emp7(
id int(11) ,
name varchar(25) not null,
sex varchar(8) default 'female'
);
设置表的属性值自动增加
在MySQL中AUTO_INCREMENT的初始值是l,每新增1条记录,字段值自动加1
create table tb_emp8(
id int(11) primary key AUTO_INCREMENT,
name varchar(25)
);
##查看表结构##
查看表基本结构语旬DESCRIBE
describe/desc语句可以查看表的字段信息
describe tb_dept1;
desc tb_emp1;
查看表详细结构语句SHOW CREATE TABLE
加上参数\G之后, 可使显示结果更加直观, 易于查看。
SHOW CREATE TABLE tb_emp1\G;
修改表
修改表名
ALTER TABLE<旧表名>RENAME [TO] <新表名>;
ALTER TABLE tb_dept3 rename to tb_deptment3;
修改字段的数据类型
ALTER TABLE <表名> MODIFY <字段名> <数据类型>
desc tb_dept1;
ALTER TABLE tb_deptl MODIFY name VARCHAR(30);
修改字段名
ALTER TABLE<表名>CHANGE<I白字段名><新字段名><新数据类型>;
ALTER TABLE tb_deptl CHANGE location loc VARCHAR(30);
添加字段
ALTER TABLE<表名>ADD<新字段名><数据类型> [约束条件) [FIRST I AFTER已存在字段名];
“FIRST或AFTER已存在字段名” 用于指定新增字段在在中的位直
添加无完整性约束条件的字段
ALTER TABLE tb_deptl ADD managerld int(10);
添加有完整性约束条件的字段
ALTER TABLE tb_deptl ADD column1 VARCHAR(l2) not null;
在表的第一列添加一个字段
ALTER TABLE tb_dept1 ADD column2 int(ll) FIRST;
4.在表的指定列之后添加一个字段
ALTER TABLE tb_deptl ADD column3 INT(11) AFTER name;
删除字段
ALTER TABLE <表名>DROP<字段名>;
ALTER TABLE tb_deptl DROP column2;
修改字段的排列位置
```sql
ALTER TABLE<表名>MODIFY<字段1><数据类型>FIRST|AFTER<字段2>;
修改字段为表的第一个字段
ALTER TABLE tb_deptl MODIFY column1 VARCHAR(12) FIRST;
修改字段到袤的指定列之后
ALTER TABLE tb_deptl MODIFY column1 VARCHAR(12) AFTER location;
更改表的存储引擎
ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>;
ALTER TABLE tb_deptment3 ENGINE=MyISAM;
删除表的外键约束
ALTER TABLE<表名> DROP FOREIGN KEY<外键约束名>
CREATE TABLE tb_emp9
(
id int(11) primary key,
name varchar(25),
CONSTRAINT fk_emp_dept FOREIGN KEY (deptld) REFERENCES tb_deptl(id)
);
ALTER TABLE tb_emp9 DROP FOREIGN KEY fk_emp_dept;
删除表
删除没有被关联的表
DROP TABLE [IF EXISTS]表 l, 表2, ...表n;
DROP TABLE IF EXISTS tb_dept2;
删除被其他表关联的主表
先删除与它关联的子表,再删除父表
解除关联子表 tb_emp1 的外键约束
ALTER TABLE tb_emp1 DROP FOREIGN KEY fk_emp_dept;
DROP TABLE tb_dept2;