【Mysql学习笔记(二)】

这篇博客详细介绍了MySQL中的数据类型,包括数值、日期/时间和字符串类型,并提供了选择数据类型的建议。此外,还涵盖了数据记录的增删改查操作,以及各种约束的使用,如主键约束、自增约束、外键约束、唯一约束和非空约束。通过实例展示了如何创建和修改约束,以及约束在实际操作中的应用。
摘要由CSDN通过智能技术生成

mysql数据类型与类型选择

MySQL 支持多种类型,大致可以分为三类:

  1. 数值
    MySQL 支持所有标准 SQL 数值数据类型。

  2. 日期/时间
    表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
    在这里插入图片描述

  3. 字符串(字符)类型。
    字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。
    在这里插入图片描述

数据类型如何选择?
日期 选择按照格式;
数字和字符串选择按照大小。

数据记录增删改查操作

增:

   INSERT INTO pet VALUES('kk1','cc1','dog1','1','1998-1-2',null);
   INSERT INTO pet VALUES('kk2','cc2','dog2','2','1998-2-2',null);
   INSERT INTO pet VALUES('kk3','cc3','dog3','1','1998-3-2','1998-12-2');
   INSERT INTO pet VALUES('kk4','cc4','dog4','2','1998-4-2',null);

+----------+-------+---------+------+------------+------------+
| name     | owner | species | sex  | birth      | death      |
+----------+-------+---------+------+------------+------------+
| Puffball | Diane | hamster | f    | 1999-03-30 | NULL       |
| kk1      | cc1   | dog1    | 1    | 1998-01-02 | NULL       |
| kk2      | cc2   | dog2    | 2    | 1998-02-02 | NULL       |
| kk3      | cc3   | dog3    | 1    | 1998-03-02 | 1998-12-02 |
| kk4      | cc4   | dog4    | 2    | 1998-04-02 | NULL       |
+----------+-------+---------+------+------------+------------+

删:

delete from pet where name='kk1';
+----------+-------+---------+------+------------+------------+
| name     | owner | species | sex  | birth      | death      |
+----------+-------+---------+------+------------+------------+
| Puffball | Diane | hamster | f    | 1999-03-30 | NULL       |
| kk2      | cc2   | dog2    | 2    | 1998-02-02 | NULL       |
| kk3      | cc3   | dog3    | 1    | 1998-03-02 | 1998-12-02 |
| kk4      | cc4   | dog4    | 2    | 1998-04-02 | NULL       |
+----------+-------+---------+------+------------+------------+

改:

update pet set name='changedkk2' where sex='f';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

查:

select * from pet;
+------------+-------+---------+------+------------+------------+
| name       | owner | species | sex  | birth      | death      |
+------------+-------+---------+------+------------+------------+
| changedkk2 | Diane | hamster | f    | 1999-03-30 | NULL       |
| kk2        | cc2   | dog2    | 2    | 1998-02-02 | NULL       |
| kk3        | cc3   | dog3    | 1    | 1998-03-02 | 1998-12-02 |
| kk4        | cc4   | dog4    | 2    | 1998-04-02 | NULL       |
+------------+-------+---------+------+------------+------------+

约束

主键约束和自增约束

主键约束

它能够唯一确定一张表中的一条记录,我们通过给某个字段添加约束,就可以使得该字段不重复并且不为空。
mysql> create table user(id int primary key,name varchar(20));
Query OK, 0 rows affected (0.05 sec)

mysql> insert into user values(1,‘张三’);
Query OK, 1 row affected (0.01 sec)

再一次插入张三:
mysql> insert into user values(1,‘张三’);
ERROR 1062 (23000): Duplicate entry ‘1’ for key ‘user.PRIMARY’

mysql> insert into user values(2,‘张三’);
Query OK, 1 row affected (0.00 sec)

mysql> insert into user values(null,‘张三’);
ERROR 1048 (23000): Column ‘id’ cannot be null

create table user2(
id int,
name varchar(20),
password varchar(20),
primary key (id,name)
);
可以对多个字段打上主键的标识“锁”,但这并不表示表拥有了多个主键,而是说这几个字段共同构成了主键。当然,他们之间也是有次序的。查看次序可以使用show index from table。
mysql> insert into user2 values(1,‘张三’,‘123’);
Query OK, 1 row affected (0.01 sec)

mysql> insert into user2 values(2,‘张三’,‘123’);
Query OK, 1 row affected (0.01 sec)
如果创建表的时候,忘记创建主键约束了,怎么修改?
create table user4(
id int,
name varchar(20)
);
±------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±------+
| id | int | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
±------±------------±-----±----±--------±------+

alter table user4 add primary key(id);
±------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±------+
| id | int | NO | PRI | NULL | |
| name | varchar(20) | YES | | NULL | |
±------±------------±-----±----±--------±------+
如何删除主键约束?
alter table user4 drop primary key;
如何修改主键约束?
alter table user4 modify id int primary key;

自增约束

(1)一个表只能有一个自增约束,因为一个表只有一个维护自增值的变量。
(2)自增约束的列只能是整数列
(3)自增约束的列必须是键列(主键,唯一键,外键),
create table user3(
id int primary key auto_increment,
name varchar(20)
);
mysql> insert into user3(name) values(‘张三’);
Query OK, 1 row affected (0.01 sec)

外键约束

涉及到两个表:父表,子表。主表,副表。
创建班级表:
create table classes(
id int primary key,
name varchar(20)
);
创建学生表:
create table students(
id int primary key,
name varchar(20),
class_id int,
foreign key(class_id) references classes(id)
);

insert into students values(1001,‘张三’,1);
insert into students values(1002,‘张三’,2);
insert into students values(1003,‘张三’,3);
insert into students values(1004,‘张三’,4);

insert into classes values(1,‘一班’);
insert into classes values(2,‘二班’);
insert into classes values(3,‘三班’);
insert into classes values(4,‘四班’);
注意
1、主表classes中没有的数据值(也就是id字段),在副表中(class_id字段),是不可以使用的。(也就是副表中class_id不能出现主表中没出现的id字段)。
insert into students(1005,‘王五’,5);(5这个class_id在主表中没有出现过)
2、主表中的数据被副表引用,是不可以删除的。
delete from classes where id=1;(副表中数据中有class_id为1的)

唯一约束

唯一约束与主键约束相似的是它们都可以确保列的唯一性。不同的是,唯一约束在一个表中可有多个,并且设置唯一约束的列允许有空值,但是只能有一个空值。而主键约束在一个表中只能有一个,且不允许有空值。比如,在用户信息表中,为了避免表中用户名重名,可以把用户名设置为唯一约束。
create table user5(
id int unique,
name varchar(20)
);
unique(id,name)表示两个键不同时重复就行
create table user6(
id int ,
name varchar(20),
unique(id,name)
);
drop删除约束
alter table user6 drop index id;
add 添加约束
alter table user6 add unique(id,name);
modify 添加约束
alter table user6 modify id int unique;

非空约束

修饰的字段不能为空 null
create table user7(
id int ,
name varchar(20) not null
);

默认约束

当我们插入字段值时,如果没有传值就会使用默认值。
create table user8(
id int,
name varchar(20),
age int default 10
);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值