mysql 二:操作表
的存储。在操作表之前,首先要用选定数据库,因为表都是建立在对应的数据库里面的。在这里我们使用之前建立的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 二:操作表的更多相关文章
- 转载:Centos7 从零编译Nginx+PHP+MySql 二
序言 这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先 ...
- python Mysql (二)
Mysql (二) 一. 事务 a.数据库开启事务命令 1 2 3 4 #start transaction 开启事务 #Rollback 回滚事务,即撤销指定的sql语句(只能回退insert de ...
- MySQL二进预编译制安装
+++++++++++++++++++++++++++++++++++++++++++标题:MySQL二进预编译制安装时间:2019年2月25日内容:MySQL二进制预编译安装重点:MySQL二进制预 ...
- MySQL学习——操作表
MySQL学习——操作表 摘要:本文主要学习了使用DDL语句操作表的方法. 创建表 语法 create table 表名 [表定义选项] [表选项]; 表定义选项 用来创建定义表的结构,由列名(col ...
- MYSQL(二)
上一篇文章讲的是mysql的基本操作,这一篇会有一点难以理解,本节主要内容mysql视图,存储过程,函数,事务,触发器,以及动态执行sql 视图view 视图是一个虚拟表,其内容由查询定义.同真实的表 ...
- MySQL(二) 数据库数据类型详解
序言 今天去健身了,感觉把身体练好还是不错的,闲话不多说,把这个数据库所遇到的数据类型今天统统在这里讲清楚了,以后在看到什么数据类型,咱度应该认识,对我来说,最不熟悉的应该就是时间类型这块了.但是通过 ...
- Linux Ubuntu从零开始部署web环境及项目 -----tomcat+jdk+mysql (二)
上一篇介绍如何在linux系统下搭建ssh环境 这篇开始将如何搭建web服务器 1,下载文件 在官网下载好 tomcat.jdk.mysql的linux压缩包 后缀名为.tar.gz 并通过xftp上 ...
- Mysql(二):库操作
一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等performance_schema: MyS ...
- Mysql(二)函数与连接
一.函数 1.if函数 if(exp1, exp2, exp3) 判断exp1是否为true(不为0,并且不为nlll),如果为true,返回 exp2的值,否则返回exp3的值. selec ...
随机推荐
- BeanFactory和ApplicationContext的异同
相同: Spring提供了两种不同的IOC 容器,一个是BeanFactory,另外一个是ApplicationContext,它们都是Java interface,ApplicationContex ...
- c# datetime是一年中的第几周
public static int WeekOfYear(DateTime dt, CultureInfo ci) { return ci.Calendar.GetWeekOfYear(dt, ci. ...
- hosts不支持泛解析
hosts不支持泛解析,只能是一个域名对应一个IP. 如果想要实现只能用一些第三方的DNS软件做解析.
- Android Studio 完美解决 “Android SDK Manager 无法更新“、 ”connection error” 的问题
一.Android SDK Manager 无法更新 1. 打开SDK Mannger, 并选中启动单独的SDK Mannger.
- Linux 设备驱动模型
Linux系统将设备和驱动归一到设备驱动模型中了来管理 设备驱动程序功能: 1,对硬件设备初始化和释放 2,对设备进行管理,包括实参设置,以及提供对设备的统一操作接口 3,读取应用程序传递给设备文件的 ...
- Hibernate get load的区别
这两个函数都是用来从数据库中加载对象,其区别说起来主要有以下两点: 1.如果数据库中不存在该对象,那么load是抛出一个ObjectNotFound的异常,而get是返回一个空指针 2.加载机制不同 ...
- 黑苹果+win10双系统折腾笔记
寒假趁机在家折腾一下黑苹果 笔记本配置:神船K610D I7 4600 ,其他配置思路一样,驱动要自己找 镜像和工具:OS X Yosemite 10.10.3 镜像 WIN10 TLSB 2016 ...
- node在Fedora 22系统下开发环境搭建
事实上,环境搭建在linux系统还是比較简单的,下载已经编译好的包,配置一下环境变量. 或者下载源代码,自己编译. 这里记录一下,主要是node版本号变化节奏很块的情况下.怎样配置一次环境变量就不要再 ...
- VC6 在使用VC助手(Visual AssistX)在Win7下不能使用↑↓←→及回车键选择的解决的方法
VC6使用Visual AssistX版本号的问题,换一个版本号.如"Visual Assist X 10.8.2029"就可以解决. http://pan.baidu.com/w ...
- Robot Framework ---Selenium API
一.浏览器驱动 通过不同的浏览器执行脚本. Open Browser Htpp://www.xxx.com chrome 浏览器对应的关键字: firefox FireFox ff internete ...