的存储。在操作表之前,首先要用选定数据库,因为表都是建立在对应的数据库里面的。在这里我们使用之前建立的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. Android 蓝牙技术 实现终端间数据传输

    蓝牙技术在智能硬件方面有很多用武之地,今天我就为大家分享一下蓝牙技术在Android系统下的使用方法技巧.蓝牙是一种短距离的无线通信技术标准,蓝牙协议分为4层,即核心协议层.电缆替代协议层.电话控制协 ...

  2. EasyMvc入门教程-基本控件说明(2)定时器

    我们有时候希望系统能自动刷新后台数据或者做某个动作,那么定时器的作用就体现出来了. EasyMvc默认提供的服务器可以定时调前端方法与定时调后端方法,先看例子: 定时调客户端事件 实现代码: @Htm ...

  3. SSO 单点登录简单流程(cas)

    配置服务端(链接数据库) 第一步: 下载cas-server端,解压开, 将中的解压开,将该包中的内容放入cas文件夹(新建文件夹)中 然后将这个文件夹放入到服务端的服务器(tomcat)中 将解压开 ...

  4. CentOS下配置iptables防火墙 linux NAT(iptables)配置

    CentOS下配置防火墙 配置nat转发服务CentOS下配置iptables防火墙 linux NAT(iptables)配置 CentOS下配置iptables 1,vim /etc/syscon ...

  5. 【Excle数据透视】如何在数据透视表字段列表中显示更多的字段

    创建完数据透视表之后,由于字段太多,在列表中没有完全显示 解决方案 通过"字段节和区域节并排"功能来显示更多字段 修改后结果 字段已经完全显示出来了! "字段节和区域节层 ...

  6. memcpy( )的使用以及迭代器的使用

    memcpy() -- 拷贝内存内容 相关函数: bcopy(), memccpy(), memmove(), strcpy(), strncpy() 表头文件: #include <strin ...

  7. 身份证号码正则匹配-javascript

    function a(a, b) { return a.test(b) } function b(a) { return a = jQuery.trim(a), 0 == a.length } fun ...

  8. nfs部署和优化 -2

    客户端: cat /etc/passwd 显示用户 weifeng 500   服务端: vim /etc/exports /mnt 192.168.1.105(rw,sync,all_squash, ...

  9. RF --系统关键字开发

    需求: 接收一个目录路径,自动遍历目录下以及子目录下的所有批处理(.bat) 文件并执行. 首先在..\Python27\Lib\site-packages 目录下创建 CustomLibrary 目 ...

  10. Maven自动生成web.xml配置文件

    没有这个文件会报错误的: 1. 2.在Maven下面设置这个:  src/main/webapp OK生成了