Mysql 表约束(基础6)

准备基础环境:

mysql> create database mydb2;                      #创建一个名为 mydb2的数据库
Query OK, 1 row affected (0.00 sec)

mysql> show databases;                                 #查看创建的数据库, mydb2已经创建成功。
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb2 |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)

mysql> use mydb2;                  #进入新建的数据库。
Database changed
mysql> select database();       #查看当前所在的数据库。
+------------+
| database() |
+------------+
| mydb2 |
+------------+
1 row in set (0.00 sec)

mysql>

mysql> show tables;    #查看数据库,里面没有表
Empty set (0.00 sec)



##################非空约束##################

mysql> create table tb1(                   #创建表
-> id int,
-> name varchar(20) not null            #这里使用not null约束值不能为空。
-> );
Query OK, 0 rows affected (0.02 sec)

mysql> desc tb1;                             #查看表结构,name字段不为空。

#测试插入一条数据,name字段的值为空。结果会报错。

mysql> insert into tb1(id) value(1);           #如果name字段不使用not null约束的话,这种方式是可以的;但是目前有了约束name字段必须有值。
ERROR 1364 (HY000): Field ‘name‘ doesn‘t have a default value

mysql> insert into tb1(name) value(‘小明‘);   #单独插入name字段的值是可以的,因为id字段没有约束。

Query OK, 1 row affected (0.00 sec)

mysql> insert into tb1(name) value(‘NULL‘);         #在Mysql里面,NULL不等于空。
Query OK, 1 row affected (0.00 sec)

mysql> insert into tb1(id,name) value(1,‘andy‘);         #此时插入完整的数据。
Query OK, 1 row affected (0.01 sec)

mysql> select * from tb1;                      #查看结果,可发现name字段的值 ‘小明‘ 他对应的 id 字段为 null。并且name字段的值为 ‘NULL‘ 也添加进去了。
+------+--------+ 
| id | name |
+------+--------+
| 1 | andy |
| NULL | 小明 |
| NULL | NULL |
+------+--------+
3 rows in set (0.00 sec)

 



 #####使用alter修改表结构#####

mysql> desc tb1;            #查看当前表结构。当前name字段 Null为 NO

mysql> alter table tb1 modify name varchar(20);        #使用 alter 修改表结构,相当于重新定义tb1表中的字段name属性。
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc tb1;            #查看当前表结构。当前name字段 Null为 YES

mysql> alter table tb1 modify name varchar(20) not null;         #使用alter吧name再重新定义为 not null
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> select * from tb1;    #查看修改后的表结构。此时name字段 Null为NO

原文地址:https://www.cnblogs.com/longxd/p/8846707.html

时间: 2024-10-08 11:07:05

Mysql 表约束(基础6)的相关文章

MySQL数据库基础知识

day02 MySQL数据库基础知识 一.基础知识概述: 基础决定你这门课程的学习成败!只有学习好这些基础知识以后,你才能真正的运用自如.才能够对数据库有更深入的了解,道路才会越走越远. 二.基础知识: 1.数据库(database):数据库就好比是一个物理的文档柜,一个容器,把我们整理好的数据表等等归纳起来. 创建数据库命令:        create database 数据库名; 2.查看数据库         show databases; 3.打开指定的数据库         use 

MYSQL数据库基础

MySQL数据库基础 本文的所有操作是基于CMD命令行操作方式,且可适当参考<打通MySQL的操作权限>中的内容,该文算是针对前期的环境配置问题提供了一个较为全面的解决方案,与本文是一个相(yao)辅(xiang)相(hu)成(ying)的关系. 一.连接相关 1. 启动MySQL服务器:net start mysql 2. 连接MySQL数据库:mysql -uroot -h127.0.0.1 -ppassword 3. 断开MySQL数据库:连接到MySQL服务器后,可通过在MySQL提示

mysql 触发器基础:

触发器,顾名思义,基于某具体的DML语句的触发或执行,来执行一个动作.mysql触发器在6个不同的集成点进行定义:before insert:插入之前执行触发器 after insert:插入之后执行触发器before update:插入之前执行触发器after update:插入之后执行触发器before delete:删除之前执行触发器 after delete:删除之后执行触发器 每个点只能定义一个触发器,触发器只可以应用在for each row上,没有每个语句级的功能.也没有代替触发器

Mysql索引基础

Mysql索引基础 基本概念: 索引是一种特殊的数据库结构,可以用来快速查询数据库表中的特定记录.索引是提高数据库性能的重要方式.索引创建在表上,是对数据库表中一列或多列的值进行排序的一种结构.可以提高查询速度.MySQL中,所有的数据类型都可以被索引. 索引的优点: 增加查询速度 利用索引的唯一性来控制记录的唯一性 降低查询中分组和排序的时间 可以加速表与表之间的连接 索引的缺点: 存储索引占用磁盘空间 执行数据修改操作(INSERT.UPDATE.DELETE)产生索引维护 每次修改表结构都

mysql的基础操作指令整理|环境redhat6

1.安装 yum-y install mysql mysql-server service mysqld start|stop|restart        ##启动|停止|重启 chkconfig mysqld on|off                  ##开机启动|关闭 此时输入:mysql就能启动进入(记得是start状态) 2.改密 mysqladmin –uroot password             ##创建密码 mysqladmin–uroot –pxxoo passw

MySQL的基础命令&lt;一&gt;

MySQL常用基础操作命令(5.5) 一.MySQL的启动与关闭 1.MySQL的启动与停止的实质 启动的实质:mysqld_salf --default-file=/data/3306/my.cnf 停止的实质:mysqladmin uroot -p"密码" -s /date/3306/mysql.sock shutdown 二.MySQL的密码有关问题 1.单实例MySQL的启动 [[email protected] mysql-5.1.72]# cp support-files/

PHP移动互联网开发笔记(6)——MySQL数据库基础回顾

最近看了一些架构方面的资料,但是发现基础知识都不怎么牢固,接下来的一段时间,我会定期总结基础知识. 一.数据类型 1.整型 数据类型 存储空间 说明 取值范围 TINYINT 1字节 非常小的整数 带符号值:-128~127 无符号值:0~255 SMALLINT 2字节 较小的整数 带符号值:-32768~32767 无符号值:0~65535 MEDIUMNT 3字节 中等大小的整数 带符号值:-8388608~8388607 无符号值:0~16777215 INT 4字节 标准整数 带符号值

mysql数据库基础的简单操作指南

最近在学习mysql,本文是做的关于mysql学习的笔记,跟大家分享一下,希望对大家学习mysql知识有所助益.mysql现在几乎已经成了网站建设的主流数据库,很多php网站系统都采用了mysql数据库.比mssql最大的优势在于开源,免费.希望与大家共同进步. mysql数据库基础的简单操作指南:首先进入mysql:mysql -u root -p 1.建库: create database 库名称; 例如:create database mydata;(创建一个名为“mydata”的库):

mysql数据库基础(一)

Mysql列子查询及IN,ALL,SOME,ANY的使用 table1: s1 2 10 table2: s2 5 12 20 列子查询中使用IN,ANY,SOME和ALL操作符. IN:在指定项内,同IN(项1,项2,..) ANY:与比较操作符联合使用,接在比较操作符后面表示与子查询返回的任何值比较为TRUE,则返回TRUE. SOME:ANY的别名,较少使用. ALL:与比较操作符联合使用,表示与子查询返回的所有值比较都为TRUE,则返回TRUE. 细节:IN 是 = ANY 的别名,二者

Linux下MySQL的基础(一)

MYSQL的基础 1. MySQL服务器中帮助的使用 格式:     mysql> help command eg:     mysql> help create database     Name: 'CREATE DATABASE'     Description:     Syntax:        CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name         [create_specification] ...     crea