MySQL数据库-基础操作常见问题(一)

建立数据库之编码格式:

当建立数据库时,必须制定编码格式:

  • 如果是在Linux系统中,默认是"utf8";
  • 如果是在windows系统环境下,默认是"gbk";

常见的数据类型和数据约束:

数据类型:

  • 整数:int,bit
  • 小数:decimal 如:decimal(5, 2) 五位数,两位小数位
  • 字符串:varchar,char 如:varchar(20)不定长字符表示,最大长度是20
  • 日期时间: date, time, datetime
  • 枚举类型(enum)

数据约束:

  • 主键 primary key: 物理上存储的顺序. MySQL 建议所有表的主键字段都叫 id, 类型为 int unsigned.
  • 非空:not null
  • 唯一,不重复:unique
  • 默认值: default当不填写字段对应的值会使用默认值,如果填写时以填写为准
  • 外键 foreign key: 对关系字段进行约束, 当为关系字段填写值时, 会到关联的表中查询此值是否存在, 如果存在则填写成功, 如果不存在则填写失败并抛出异常.

本次考试,遇到的题目是:

–要求1: 创建名为“school”的数据库,在该数据库中创建包含名为“users”的表;
–要求2: users表包含id、name、age、sex、phone_num字段,其中id为主键,name为姓名(name不允许为空不允许重复),–age为年龄,sex为性别(只能是“男”或“女”)、phone_num为电话号码(11位);

mysql> create database school;
mysql> use school;
mysql> create table user(
    -> id int unsigned primary key auto_increment not null,
    -> name varchar(20) not null,
    -> age tinyint,
    -> sex enum('男', '女'),
    -> phone_num varchar(11)
    -> );

到此为止,就出现问题了:

  • 建表的时候显示:

ERROR 1291 (HY000): Column ‘sex’ has duplicated value ‘?’ in ENUM

  • 而且也没有满足name不允许重复的条件,所以正确的操作应该如下:
  • 建库:设定编码格式
create database school charset='utf8';
  • 设置name字段的约束为unique
mysql> create table user(
    -> id int unsigned primary key auto_increment not null,
    -> name varchar(20) not null unique,
    -> age tinyint,
    -> sex enum('男', '女'),
    -> phone_num varchar(11)
    -> );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值