的存储。在操作表之前,首先要用选定数据库,因为表都是建立在对应的数据库里面的。在这里我们使用之前建立的test数据库

mysql> use test;

Database changed

创建表的语法:

Create table 表名(属性名 数据类型[完整性约束条件],属性名 数据类型[完整性约束条件],…..)

这里创建一个example的表,其中包含三个元素,id,name,sex。其中id为整型,name为可变长度字符串,sex为bool值

mysql> create table example(id INT,name VARCHAR(20),sex BOOLEAN);

Query OK, 0 rows affected

通过show tables来查看对应数据库的表格。

mysql> show tables;

+----------------+

| Tables_in_test |

+----------------+

| example        |

+----------------+

1 row in set

如果想查看表的结构,用desc example来查看。

mysql> desc example;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id    | int(11)     | YES  |     | NULL    |       |

| name  | varchar(20) | YES  |     | NULL    |       |

| sex   | tinyint(1)  | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set

那么在反馈的结果中看到有Null, Key,Default这些字段。这些字段是什么意思呢,这些字段就是约束条件。是对字段属性的约束。我们来看下重新建立example表。其中在id后面天剑了not null primary key

mysql> create table example(id INT not null primary key, name varchar(20),sex BOOLEAN);

Query OK, 0 rows affected

对应的表结构中也体现了对应的变化。

mysql> desc example;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id    | int(11)     | NO   | PRI | NULL    |       |

| name  | varchar(20) | YES  |     | NULL    |       |

| sex   | tinyint(1)  | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set

表的约束条件有以下几个:

1 primary key: 标识该属性为该表的主键,可以唯一标识对应的元组

2 foreign key: 为该表的外键,是与之联系的某表的主键

3 not null:表明该属性不能为空

4 unique:标识该属性的值是唯一的。也就是不重复

5 auto_increament:标识该属性为自动增加。也就是每次增加一行数据,该属性为自动加一

6 default: 为该属性设置默认值

我们来介绍几个重要的约束条件:

(1)primary key也就是主键。主键就好比是每个人的身份证。能唯一标识一个记录。因此主键的值是唯一的,不能重复。另外主键也起到索引的作用,主键能帮助mysql以最快的速度查找到表中的某一条信息。

我们可以设置单字段主键也可以设置多字段主键

命令如下

mysql> create table example1(id INT,name varchar(20),sex BOOLEAN,primary key(id,name));

Query OK, 0 rows affected

mysql> desc example1;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id    | int(11)     | NO   | PRI | 0       |       |

| name  | varchar(20) | NO   | PRI |         |       |

| sex   | tinyint(1)  | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set

(2)foreign key:外键。外键其实链接表于表之间关系。比如学校的学生信息数据库。假设这名学生有3名课程,语文,数学,英语。那么这些课程的成绩专门存储在成绩表中grade,另外还有一个表是存储这名学生的信息的student, student里面stu_id,且是主键,stu_id是grade的外键。如果stu_id=1的学生退学了,在student中会删除掉该学生的信息,那么同步grade表中stu_id=1的信息也必须同步删除。这就是外键的作用,外键能够将多个表信息的更新联动起来。

创建一个表的外键如下:example1引用的是example的id

mysql> create table example1(id INT primary key, grade INT,constraint con foreign key(id) references example(id));

Query OK, 0 rows affected

需要注意的是外键关联的必须是父表的主键。前面的例子中example 中的id必须为主键,否则在创建外键的时候为创建失败。

表的修改:

修改表名:

mysql> alter table example rename grade_example;

Query OK, 0 rows affected

mysql> show tables;

+----------------+

| Tables_in_test |

+----------------+

| example1       |

| grade_example  |

+----------------+

2 rows in set

修改属性:

mysql> desc grade_example;   #name为20字节的可变字符长度

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id    | int(11)     | NO   | PRI | NULL    |       |

| name  | varchar(20) | YES  |     | NULL    |       |

| sex   | tinyint(1)  | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set

mysql> alter table grade_example modify name varchar(30);

Query OK, 0 rows affected

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc grade_example;    #修改后name为30字节的可变字符长度

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id    | int(11)     | NO   | PRI | NULL    |       |

| name  | varchar(30) | YES  |     | NULL    |       |

| sex   | tinyint(1)  | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set

修改字段名以及属性类型:

mysql> desc grade_example;   #sex为整型

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id    | int(11)     | NO   | PRI | NULL    |       |

| name  | varchar(30) | YES  |     | NULL    |       |

| sex   | tinyint(1)  | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set

mysql> alter table grade_example change sex grade int;

Query OK, 0 rows affected

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc grade_example;   #修改后变成grade 也是整型

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id    | int(11)     | NO   | PRI | NULL    |       |

| name  | varchar(30) | YES  |     | NULL    |       |

| grade | int(11)     | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set

增加字段:

mysql> desc grade_example;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id    | int(11)     | NO   | PRI | NULL    |       |

| name  | varchar(30) | YES  |     | NULL    |       |

| grade | int(11)     | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set

mysql> alter table grade_example add class varchar(20) unique after grade;

Query OK, 0 rows affected

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc grade_example;    #在grade后面添加class属性。Class属性为可变字符串且是唯一的

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id    | int(11)     | NO   | PRI | NULL    |       |

| name  | varchar(30) | YES  |     | NULL    |       |

| grade | int(11)     | YES  |     | NULL    |       |

| class | varchar(20) | YES  | UNI | NULL    |       |

+-------+-------------+------+-----+---------+-------+

4 rows in set

删除字段:

mysql> desc grade_example;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id    | int(11)     | NO   | PRI | NULL    |       |

| name  | varchar(30) | YES  |     | NULL    |       |

| grade | int(11)     | YES  |     | NULL    |       |

| class | varchar(20) | YES  | UNI | NULL    |       |

+-------+-------------+------+-----+---------+-------+

4 rows in set

mysql> alter table grade_example drop class;

Query OK, 0 rows affected

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc grade_example;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id    | int(11)     | NO   | PRI | NULL    |       |

| name  | varchar(30) | YES  |     | NULL    |       |

| grade | int(11)     | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set

修改表的存储引擎:

mysql> alter table grade_example engine=MyISAM;

删除表: 这里看到删除失败,是因为grade_example表中有外键存在,首先要删除外键。首先example1有建立到grade_example的外键

mysql> drop table grade_example;

1217 - Cannot delete or update a parent row: a foreign key constraint fails

mysql> alter table example1 drop

foreign key con;

Query OK, 0 rows affected

Records: 0  Duplicates: 0  Warnings: 0

mysql> drop table grade_example;

Query OK, 0 rows affected

mysql 二:操作表的更多相关文章

  1. 转载:Centos7 从零编译Nginx+PHP+MySql 二

    序言 这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先 ...

  2. python Mysql (二)

    Mysql (二) 一. 事务 a.数据库开启事务命令 1 2 3 4 #start transaction 开启事务 #Rollback 回滚事务,即撤销指定的sql语句(只能回退insert de ...

  3. MySQL二进预编译制安装

    +++++++++++++++++++++++++++++++++++++++++++标题:MySQL二进预编译制安装时间:2019年2月25日内容:MySQL二进制预编译安装重点:MySQL二进制预 ...

  4. MySQL学习——操作表

    MySQL学习——操作表 摘要:本文主要学习了使用DDL语句操作表的方法. 创建表 语法 create table 表名 [表定义选项] [表选项]; 表定义选项 用来创建定义表的结构,由列名(col ...

  5. MYSQL(二)

    上一篇文章讲的是mysql的基本操作,这一篇会有一点难以理解,本节主要内容mysql视图,存储过程,函数,事务,触发器,以及动态执行sql 视图view 视图是一个虚拟表,其内容由查询定义.同真实的表 ...

  6. MySQL(二) 数据库数据类型详解

    序言 今天去健身了,感觉把身体练好还是不错的,闲话不多说,把这个数据库所遇到的数据类型今天统统在这里讲清楚了,以后在看到什么数据类型,咱度应该认识,对我来说,最不熟悉的应该就是时间类型这块了.但是通过 ...

  7. Linux Ubuntu从零开始部署web环境及项目 -----tomcat+jdk+mysql (二)

    上一篇介绍如何在linux系统下搭建ssh环境 这篇开始将如何搭建web服务器 1,下载文件 在官网下载好 tomcat.jdk.mysql的linux压缩包 后缀名为.tar.gz 并通过xftp上 ...

  8. Mysql(二):库操作

    一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等performance_schema: MyS ...

  9. Mysql(二)函数与连接

    一.函数 1.if函数 if(exp1, exp2, exp3)     判断exp1是否为true(不为0,并且不为nlll),如果为true,返回 exp2的值,否则返回exp3的值. selec ...

随机推荐

  1. BeanFactory和ApplicationContext的异同

    相同: Spring提供了两种不同的IOC 容器,一个是BeanFactory,另外一个是ApplicationContext,它们都是Java interface,ApplicationContex ...

  2. c# datetime是一年中的第几周

    public static int WeekOfYear(DateTime dt, CultureInfo ci) { return ci.Calendar.GetWeekOfYear(dt, ci. ...

  3. hosts不支持泛解析

    hosts不支持泛解析,只能是一个域名对应一个IP. 如果想要实现只能用一些第三方的DNS软件做解析.

  4. Android Studio 完美解决 “Android SDK Manager 无法更新“、 ”connection error” 的问题

    一.Android SDK Manager 无法更新 1. 打开SDK Mannger, 并选中启动单独的SDK Mannger.

  5. Linux 设备驱动模型

    Linux系统将设备和驱动归一到设备驱动模型中了来管理 设备驱动程序功能: 1,对硬件设备初始化和释放 2,对设备进行管理,包括实参设置,以及提供对设备的统一操作接口 3,读取应用程序传递给设备文件的 ...

  6. Hibernate get load的区别

    这两个函数都是用来从数据库中加载对象,其区别说起来主要有以下两点: 1.如果数据库中不存在该对象,那么load是抛出一个ObjectNotFound的异常,而get是返回一个空指针 2.加载机制不同 ...

  7. 黑苹果+win10双系统折腾笔记

    寒假趁机在家折腾一下黑苹果 笔记本配置:神船K610D I7 4600 ,其他配置思路一样,驱动要自己找 镜像和工具:OS X Yosemite 10.10.3 镜像 WIN10 TLSB 2016 ...

  8. node在Fedora 22系统下开发环境搭建

    事实上,环境搭建在linux系统还是比較简单的,下载已经编译好的包,配置一下环境变量. 或者下载源代码,自己编译. 这里记录一下,主要是node版本号变化节奏很块的情况下.怎样配置一次环境变量就不要再 ...

  9. VC6 在使用VC助手(Visual AssistX)在Win7下不能使用↑↓←→及回车键选择的解决的方法

    VC6使用Visual AssistX版本号的问题,换一个版本号.如"Visual Assist X 10.8.2029"就可以解决. http://pan.baidu.com/w ...

  10. Robot Framework ---Selenium API

    一.浏览器驱动 通过不同的浏览器执行脚本. Open Browser Htpp://www.xxx.com chrome 浏览器对应的关键字: firefox FireFox ff internete ...