MySQL数据表操作及外键约束

Posted 阳光小王子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据表操作及外键约束相关的知识,希望对你有一定的参考价值。

mysql数据表操作及外键约束

MySQL常用数据类型

int整 型
float单精度浮点,4字节32位
double双精度浮点,8字节64位
char固定长度的字符类型
varchar可变长度的字符类型
text文本
image图片
decimal(5,2)5个有效长度数字 ,小数点后面有2位

查看数据库结构

查看当前服务器中的数据库

SHOW  DATABASES;        #不区分大小写,以;结束
  • 不区分大小写

查看数据库中包含的表

  • 要先使用USE切换到数据库中
USE   数据库名;     #先切换到数据库中
SHOW  TABLES;

查看表的结构(字段)

USE  数据库名;
DESCRIBE   数据库名.表名;
或者
DESC  表名;              #可以直接查看数据库里的表

  • 我们一般用desc + 表名查看表

SQL语句

SQL语句用于维护管理数据库,包括数据查询,数据更新,访问控制,对象管理等功能。

SQL语言分类

  • DDL:数据定义语言,用于创建数据库对象,例如:库,表,索引等。
  • DML:数据操纵语言,用于对表中的数据进行管理
  • DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
  • DCL:数据控制语言,用于设置或者更改数据库用户或角色权限

创建新的数据库

CREATE  DATABASE  数据库名;

创建新的表

CREATE TABLE 表名(字段1 数据类型,字段2 数据类型,...,PRIMARY KEY (主键名));
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键
create table ky10 (id int(3) not null, name char(20), sex char(2), age int(3), passwd varchar(50), primary key (id));

删除指定数据表及数据库

  • 删除数据表(谨慎使用
DROP TABLE 数据库名.表名;  #如果不用use进入库中,则需要加上库名
  • 删除库(谨慎使用
DROP DATABASE 数据库名;

管理表中的数据记录

向数据表中插入新的数据记录

insert into 表名(字段1,字段2...) values (字段1的值,字段2的值...);
或者
insert into 表名 values(字段1对应的值,字段2对应的值,...);
select * from 表名 ;    #查询表的数据记录

查询数据记录

select 字段名1,字段名2...  from 表名;

  • 使用where进行过滤
select * from 表名  where  + 条件判断;

例:select name,age from ky10  where id=1;
#从表ky10中过滤出当id=1时的name及age元素

select  name from ky10\\G  
#后面可以不加分号,加分号也可以显示但是会报错
#以坚列方式显示名字

select * from 表名 limit 2;    #只显示头两行
select * from 表名 limit 2,3;  #显示第2行后的头3(显示第3到第5行记录内容)

修改、删除数据表中的指定数据记录

  • 修改指定记录
update 表名 set 字段名1=字段值1..  where + 条件表达式;
#一般update配合where条件表达式使用,要不然会修改整个表格数据

  • 删除指定记录
delete from 表名 where + 条件表达式;

修改表名和表结构

修改表名

alter table 旧表名 rename 新表名;

修改表结构

  • 增加字段
alter table 表名  add  字段名+(字符型/整数型..) Default ->默认值为地址不详;

修改字段名,添加唯一键

alter table 表名 change 旧列名 新列名 数据类型 unique key;
#unique key 给新列名设置唯一键

  • 设置唯一键
  • char与vachar区别
    char为固定字符长度,varchar为可变字符长度

删除字段

alter table 表名 drop 字段名;

补充扩展

use kgc;
create table if not exists info (
id int(4) zerofill primary key auto_increment,
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50));
---------------------------------------------------------
#切换到库kgc
#if not exists:检测要创建的表是否已存在,如果不存在则继续创建
#int(4) zerofill:若数值不满4位,则前面用0填充,如:0001
#auto_increment:表示此片段为自增长字段,每条记录自动增1,默认从1开始递增,自增长字段数据不可以重复;自增长字段必须是主键;
#如添加的记录数据没有指定此字段且添加失败也会自动递增一次
#unique key:表示此字段唯一键约束,此字段数据不可以重复,一张表中只能有一个主键,但是一张表中可以有多个唯一键.
#not null:表示此字段不允许为NULL

  • PS:如果执行第二条错误,它的id也会递增加1;

数据表高级操作

克隆表,将数据表的记录生成到新的表中

  • 方法一
create table test01 like class;
insert into test01 select * from class;
#通过like方法,复制class表结构生成test01表

  • 方法二
create table test02 (select * from class);

show create table test02\\G   #以坚列形式显示
select * from test02;        #查看表test02

清空表,删除表内所有数据

  • 方法一
delete from test01;
#delete清空表后,返回的结果内有删除的记录条目;
#delete工作时是一行一行的删除记录数据的;
#使用delete删除时,如果表中有自增长字段,删除后再插入新的记录,会从原来最大ID开始递增加

  • 方法二
truncate table test01;
#truncate清空表后,没有返回被删除的条目
#truncate工作时是将表结构按原样重新建立,在速度上truncate比delete清空表要快
#truncate清空表内数据后,ID会从1开始重新记录

创建临时表

create temporary table (字段1 数据类型,字段2 数据类型..,primary key (主键名));
mysql> create temporary table test03 (
    -> id int(4) zerofill primary key auto_increment,
    -> name varchar(10) not null,
    -> cardid int(18) not null unique key,
    -> hobby varchar(50));
#临时表创建完成后,使用show table是看不到临时表的,临时表会在连接退出后自动销毁
#临时表在退出前一样可以增删改查等操作

创建外键约束

create table test04 (hobid int(4),hobname varchar(50));    
#创建主表test04
create table test05 (id int(4) primary key auto_increment,name varchar(50),age int(4),hobid int(4));
#创建从表test05
#主表test04与从表test05都有一个相同关键字段(hobid),数据类型相同,字符长度相同
alter table test04 add constraint PK_hobid primary key(hobid);
#修改test04增加约束,主键名,主键约束字段--hobid
alter table test05 add constraint FK_hobid foreign key(hobid) references test04(hobid);
#修改test05外键约束名为FK_hobid外键约束字段
  • 插入记录先从主表插入,然后才能在从表插入记录

  • 删除要先删除从表记录,才能删除主表记录

以上是关于MySQL数据表操作及外键约束的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库 : 查询语句,连接查询及外键约束

MySQL表创建及外键

Java学习总结(十六)——MySQL数据库(中)分组,嵌套,连接查询及外键与关系表设计

mysql的存储类型以及索引

MySql两种存储引擎的区别

Mysql六大约束