Mysql基础讲解(二)

一、数据类型

1、数值类型

下表显示了需要的每个整数类型的存储和范围

存储(字节)有符号数值取值范围无符号数值取值范围
TINYINT1-128 ~ 1270 ~ 255
SMALLINT2-32768 ~ 327670 ~ 65535
MEDIUMINT3-8388608 ~ 83886070 ~ 16777215
INT4-2147483648 ~ 21474836470 ~ 4294967295
BIGINT8-2^63 ~ 2^63-10 ~ 2^64-1

id        int(11), 中的 11 表示的是显示宽度(Display Width),而不是值的范围。显示宽度是指当数值的位数少于显示宽度时,在显示数值时会在前面填充空格以达到指定的宽度。如果数值的位数超过显示宽度,则会显示全部数值,忽略这个宽度设置。 

 2、日期和时间类型

3、字符串类型

类型名称说明存储需求
CHAR(n)固定长度非二进制字符串M 字节,1<=M<=255
VARCHAR(n)变长非二进制字符串L+1字节,在此,L< = M和 1<=M<=255
TINYTEXT非常小的非二进制字符串L+1字节,在此,L<2^8
TEXT小的非二进制字符串L+2字节,在此,L<2^16
MEDIUMTEXT中等大小的非二进制字符串L+3字节,在此,L<2^24
LONGTEXT大的非二进制字符串L+4字节,在此,L<2^32
ENUM枚举类型,只能有一个枚举字符串值1或2个字节,取决于枚举值的数目 (最大值为65535)
SET一个设置,字符串对象可以有零个或 多个SET成员1、2、3、4或8个字节,取决于集合 成员的数量(最多64个成员)

char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。

注意,char(n)是固定长度的数据类型,varchar(n)是可变长度数据类型  

二、数据约束

主键 primary key:

主键具有唯一标识性即设定了主键的列的值必须是唯一的并且非空。常用做列表里id的标识约束,类型为int unsigned

-- 在创建表时创建主键
CREATE TABLE students (  
    id INT NOT NULL,  
    name VARCHAR(50) NOT NULL,  
    age INT,  
    PRIMARY KEY (id)  
);
-- 使用多列做复合主键
CREATE TABLE orders (  
    order_id INT NOT NULL,  
    customer_id INT NOT NULL,  
    order_date DATE,  
    PRIMARY KEY (order_id, customer_id)  --order_id和customer_id两列做复合主键
);

-- 在表创建后添加主键
ALTER TABLE students  
ADD PRIMARY KEY (id);

非空:

即此字段不能设置为空

create table t1(
name varchar(10) not null
);

唯一标识unique:

即此字段不能出现重复的值

create table t1(
name char(10) primary key,
grade int unique
);

默认default :

不填写,字段对应默认值,填写的话已填写的为准

外键 foreign key:

主键保证了表中每一行数据的唯一性,而外键保证了表与表之间的数据关联

-- 表不存在时,在表里面创建
CREATE TABLE 子表 (
    列名 数据类型,
    ...
    FOREIGN KEY (外键列名) REFERENCES 父(主)表(父表列名)
);

--例
create table employees (
    id int PRIMARY KEY,
    name varchar(100),
    department_id int,
    foreign key (department_id) references departments(id)
);

-- 表存在时
ALTER TABLE 子表
ADD CONSTRAINT 外键约束名
FOREIGN KEY (外键列名) REFERENCES 父表(父表列名);

-- 例
alter table employees
add constraint fk_department
foreign key (department_id) references departments(id);


自增长: 

auto_increment 每新增一条记录,id主动加一

-- 在创建时前设置
create table tab1(
id int auto_increment,
name varchar(10) not null,
primary key(id)
)

--表存在后创建
alter table tab1 modify column id auto_increment;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值