添加常用约束

本教程介绍了如何在MySQL中创建表并添加各种约束,包括唯一约束、非空约束、默认约束和自动增长主键。通过实例展示了如何创建名为t_user的表,该表包含用户ID(自动增长)、用户名(非空且唯一)和性别(默认值为'男')字段。
摘要由CSDN通过智能技术生成

任务描述

本关任务:给表添加常用的约束。

相关知识

在数据库的使用过程中我们经常要限制字段的取值,比如有些字我们不能让它为空,我们就需要添加非空约束,本关我们就来学习如何添加这些常用的约束。

为了完成本关任务,你需要掌握: 1.怎么添加唯一约束; 2.怎么添加非空约束; 3.怎么添加默认约束; 4.怎么设置字段的值自动增加。

怎么添加唯一约束

唯一约束(Unique Constraint)要求该列唯一,允许为空,但是只能有一个空值。唯一约束可以确保一列或者几列不出现重复值。

定义部门表的部门名称唯一,SQL语句如下:关键词 UNIQUE

 
  1. CREATE TABLE t_dept(
  2. id INT PRIMARY KEY,
  3. name VARCHAR(22) UNIQUE,
  4. location VARCHAR(50)
  5. )

怎么添加非空约束

关键词:NOT NULL

例如:

 
  1. CREATE TABLE t_dept(
  2. id INT PRIMARY KEY,
  3. name VARCHAR(22) NOT NULL,
  4. location VARCHAR(50)
  5. )

怎么使用默认约束

默认约束:即给字段一个默认值。 关键词:DEFAULT

例如:

 
  1. CREATE TABLE t_emp(
  2. id INT PRIMARY KEY,
  3. name VARCHAR(22),
  4. sex VARCHAR(2) DEFAULT '男'
  5. ) DEFAULT CHARSET=utf8;

注意:

  • 如果是添加字符串型默认值要使用单引号,如果是整型则不需要加任何符号;
  • 如果要添加的是中文默认值,则需要加上DEFAULT CHARSET=utf8;使用英文字符则不需要。

设置表的属性值自动增加

在数据库应用中,经常有个需求就是,在每次插入新纪录时,系统自动生成字段的主键值,即:

idname
1张三
2李四
ID每次自动加一姓名
...XXX
10XXX

关键词:AUTO_INCREMENT,默认情况下初始值和增量都为1

例如:

 
  1. CREATE TABLE t_tmp
  2. (
  3. id int PRIMARY KEY AUTO_INCREMENT,
  4. name VARCHAR(32)
  5. )

以上这些你都可以在右侧的命令行中测试。

编程要求

在数据库MyDb中创建表t_user,表结构如下:

字段名称数据类型备注
idINT用户ID,主键,自动增长
usernamevarchar(32)用户名,非空,唯一
sexvarchar(4)性别,默认“男”

提示:若要给字段添加两个或者两个以上的约束,约束之间以空格隔开即可。

测试说明

我会对你创建的表进行测试。

预期输出:

提示:如果你想删掉表重新创建,你可以使用如下语句删除表。

 
  1. DROP TABLE 表名;
版本库代码路径:/data/workspace/myshixun/
root@evassh-6138126:~# mysql -u root -p123123 -h127.0.0.1
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 43
Server version: 5.5.59-0ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

mysql> create database MyDb;
Query OK, 1 row affected (0.00 sec)

mysql> USE MyDb;
Database changed
mysql> create table t_user(
    -> id INT primary key auto_increment;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2
mysql> create table t_user(
    -> id INT primary key auto_increment,
    -> username varchar(32) not NULL UNIQUE,
    -> sex varchar(4) DEFAULT '男'
    -> )DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.01 sec)

mysql> desc table t_user;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table t_user' at line 1
mysql> desc t_user;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| username | varchar(32) | NO   | UNI | NULL    |                |
| sex      | varchar(4)  | YES  |     | 男      |                |
+----------+-------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)

mysql> ^CCtrl-C -- exit!
Aborted
root@evassh-6138126:~# 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值