MySQL数据库(五)__2018.11.13

Not NULL:非空

标志字段不能为空值。

CREATE TABLE test_not_null(
	a VARCHAR(20),
	b VARCHAR(20) NOT NULL
);

INSERT test_not_null(a,b)VALUES('','');
INSERT test_not_null(a,b)VALUES(NULL,'');
INSERT test_not_null(a,b)VALUES(NULL,NULL);

b字段是不能为空值的。在插入的时候,一定要给他一个值,且不能为空值。

非空约束。

如果在插入值的时候没有给值,有默认值的话,则使用默认值。

--测试默认值

CREATE TABLE test_default(
	id INT UNSIGNED AUTO_INCREMENT KEY,
	username VARCHAR(20)NOT NULL,
	age TINYINT UNSIGNED DEFAULT 18,
	email VARCHAR(50) NOT NULL DEFAULT '[email protected]'
);

你赋值的话,就会用你赋的值,不会使用默认值。

INSERT test_default(username)VALUES('A');

INSERT test_default(username,age,email)VALUES('B',30,'[email protected]');
INSERT test_default(username,age,email)VALUES('C',NULL,'[email protected]');
INSERT test_default(username,age,email)VALUES('D',NULL,DEFAULT);

default配合not null使用。

测试枚举类型的默认值设置:

CREATE TABLE test_default1(
	id INT UNSIGNED AUTO_INCREMENT KEY,
	sex ENUM('a','b','c')NOT NULL DEFAULT 'a'
);

会使用到默认值。

不能使用‘’因为值不在枚举范围内。

unique key唯一性索引,可以插入NULL并且不算重复。

一个表中可以出现多个唯一字段。

指定一个字段的唯一性。

CREATE TABLE test_unique(
	id INT UNSIGNED AUTO_INCREMENT KEY,
	username VARCHAR(20)NOT NULL UNIQUE key,
	#我想让它是一个唯一字段
	email VARCHAR(50)UNIQUE,
	card CHAR(18)UNIQUE
);

INSERT test_unique(username,email,card)VALUES('A','[email protected]','1');

被标志着唯一性的字段,值不能重复。

一个表中可以有多个字段为唯一性索引。

这里的NULL值不算重复。

有了这些完整性约束条件,我们把之前的用户表重新写一下,看看真正的建表语句是什么样子的。

#用户表imooc_user
#用反引号把表名括起来,防止和MySQL关键字重复
#用comment对字段加注释,养成良好的习惯
CREATE TABLE IF NOT EXISTS `imooc_user`(
	`id` INT UNSIGNED AUTO_INCREMENT KEY COMMENT '用户编号',
	#可以省略unique Key的key
	`username` VARCHAR(20)NOT NULL UNIQUE COMMENT '用户名',
	#使用定长字符串
	`password` CHAR(20) NOT NULL COMMENT '密码',
	`email` VARCHAR(50) NOT NULL UNIQUE COMMENT '邮箱',
	`age` TINYINT UNSIGNED NOT NULL DEFAULT 18 COMMENT '年龄',
	`sex` ENUM('男','女','保密')NOT NULL DEFAULT '保密' COMMENT '性别',
	#电话号是唯一的不可能重复
	`tel` CHAR(11) NOT NULL UNIQUE COMMENT '电话',
	`addr` VARCHAR(50) NOT NULL DEFAULT '北京' COMMENT '地址',
	`card` CHAR(18) NOT NULL UNIQUE COMMENT '身份证号',
	`married` TINYINT(1) NOT NULL DEFAULT 0 COMMENT'0代表未结婚,1代表已结婚',
	`salary` FLOAT(8,2) NOT NULL DEFAULT 0 COMMENT '薪水'
)ENGINE=INNODB DEFAULT CHARSET=utf8;

查看表结构:

查看详细的建表信息:

married是一个bool类型。

CREATE TABLE test_bool(
	id INT,
	married BOOL
);

bool全称boolen。

括号里面表示的是显示字长度。

修改数据表。

动态修改表结构。

表结构操作(alter)

指定位置。

增加字段:alter table_name add 字段名称 字段属性 (完整性约束条件);

删除字段:drop 字段名称;

--测试添加和删除字段。

CREATE TABLE IF NOT EXISTS user1(
	id INT UNSIGNED AUTO_INCREMENT KEY
);

--添加用户名字段。

ALTER TABLE user1 ADD username VARCHAR(20);

--添加密码字段 password char(32) not null(默认添加到所有字段之后)

ALTER TABLE user1 ADD PASSWORD CHAR(32) NOT NULL;

--添加有限字段Email varchar(50)not NULL unique加到username之后。

ALTER TABLE user1 ADD email VARCHAR(50) NOT NULL UNIQUE AFTER username;

添加测试字段test tinyint(1) not null default 0;加到首位

ALTER TABLE user1 ADD test TINYINT(1) NOT NULL DEFAULT 0 FIRST;

--删除test字段

ALTER TABLE user1 DROP test;

--一次添加多个字段,删除多个字段:

#一次选中表,完成多次操作。对性能也是有提升的。
ALTER TABLE user1
ADD age TINYINT UNSIGNED NOT NULL DEFAULT 18,
ADD addr VARCHAR(100) NOT NULL DEFAULT '北京',
ADD email VARCHAR(50) NOT NULL DEFAULT '[email protected]',
DROP eamil;

猜你喜欢

转载自blog.csdn.net/weixin_40316053/article/details/84022231