MySQL学习笔记(实操)(6)

在这里插入图片描述

建立数据库

默认数据库为test,默认表为user, 其默认字段为id,name

mysql的基本操作:
|| 登录数据库mysql -u root -p
|| 查询数据库服务器中的所有数据库show databases;
|| 查询某数据库中某个表use database_name show table
|| 检索一个表select * from table_name // 检索表中的某一个字段where id=1

|| 在数据库服务器中创建一个数据库create database test;
|| 在数据库中创建一个表

	mysql> create table pet(
 	   -> name VARCHAR(20),
 	   -> owner VARCHAR(20),
 	   -> speices VARCHAR(20),
  	   -> sex CHAR(1),
 	   -> birth DATE,
 	   -> death DATE);

|| 向数据表中添加记录INSERT INTO user INSERT INTO user(id)

	mysql> insert into pet
   		-> values ('旺财','周星驰','狗','公','1999-01-01',NULL);

|| 查询表的结构describe pet (注意:select * from pet查看表的记录)
|| 修改表的结构 alter+add / alter+drop / alter+modify
alter table table_name add primary key(id);
alter table table_name drop primary key;
alter table table_name modify id int primary key;

|| 退出数据库服务器exit;

|| !!!学习重点!!!:删库辞职跑路最快最节省时间的两行代码,好好记住噢

 drop database if exists activiti_db;
 create database activiti_db;

常用数据类型:大概分为三类:

|| 数值:

tinyint    范围(-127,127)
smallint   范围(-32768,32768)// mediumint // bigint
int
float / double

|| 日期/时间

DATE		日期  							YYYY-MM-DD
TIME		时间 						    HH:MM:SS
YEAR		年份  							YYYY
DATETIME	混合日期时间 					YYYY-MM-DD HH:MM:SS
TIMESTAMP   混合日期时间(时间戳格式)		YYYYMMDDHHMMSS

|| 字符串(字符)

char  字符串
varchar 稍长一些的字符串
text   长文本数据

|| 数据类型选择的准则:日期按照格式选择类型,数值/日期时间根据大小范围选择
|| 删除表中记录delete from table where id = x;
|| 修改表中记录update pet set name='Fluffy' where name='fluffy';


mysql的建表约束:

|| 主键约束:primary key
约束字段的值不重复且不为空,作为一张表的主键
—>主键的值不可以相同,主键的值不为空
—>主键组的值的组合不能相同,主键组的值都不为空

主键:表中能过一个唯一字段或字段组即可确定一条记录,则该字段/字段组称为主键
/* 写法一:*/
mysql> create table user(
    -> id int primary key,
    -> name VARCHAR(20));

/* 写法二:*/
mysql> create table testTable1(
    -> id int,
    -> name VARCHAR(20),
    -> password VARCHAR(20),
    -> primary key(id,name));


/* 添加/删除主键约束写法*/
//alter table table_name add primary key(id);
//alter table table_name drop primary key;

/*修改主键约束*/
//alter + modify

//进行了主键约束的表中不允许以下的操作
mysql> insert into user values(1,'张三');
mysql> insert into user values(1,'张三')// 错误:主键值重复
mysql> insert into user values(NULL,'张三')// 错误:主键值为空

mysql> insert into testTable1 values(1, '张三','123');
mysql> insert into testTable1 values(2, '张三','123'); // 正确:主键值组合不重复
mysql> insert into testTable1 values(1, '张三','123'); // 错误:主键值组合重复
mysql> insert into testTable1 values(NULL, '张三','123'); // 错误:主键值为0

|| 自增约束:(与主键约束搭配)
自动管控主键的值,无需手动添加(减少出错)

mysql> create table user(
    -> id int primary key auto_increment,
    -> name VARCHAR(20)
    ->);

|| 唯一约束:
—>约束字段值不能重复
—>唯一约束组合:字段的值的组合不重复就行


/* 写法一:*/
mysql> create table user(
    -> id int primary key,
    -> name VARCHAR(20) unique   );

/* 写法二:*/
mysql> create table testTable1(
    -> id int,
    -> name VARCHAR(20),
    -> password VARCHAR(20),
    -> unique(id,name));


/* 添加/删除/修改唯一约束写法*/
//alter table table_name add unique(id);
//alter table table_name drop index name;
//alter table table_name modify name VARCHAR(20) unique;


/*唯一约束后无法进行以下操作*/
insert into user values(1,'sbb');
insert into user values(2,'sbb'); //错误:name值重复,违反unique唯一约束

|| 非空约束:
约束字段值不为空 not null

|| 默认约束:
约束字段值不为空且为默认值 defalut num(默认值)

|| 外键约束:
涉及到两个表:主表/副表 或 父表/子表
子表的外键的值必须来自于父表的某个字段

|| 注意事项:作为外键,所连接的表中的id必须是唯一值,因此得添加约束unique,或者primary key;

mysql> create classes(
    -> id int primary key,
    -> );
mysql> create table students(
    -> id int primary key auto_increment,
    -> name VARCHAR(20),
    ->  class_id int,
    -> foreign key(class_id) references classes(id)
    -> );

三大范式:

|| 第一范式:每个字段都必须是原子值,即字段不可再拆分(地址 --> 国家,省份,市)

|| 第二范式:在满足第一范式的前提下,非主键字段必须完全依赖于主键字段(非主键字段间可以产生依赖)

|| 第三范式:在满足第二范式的前提下,非主键字段必须唯一依赖于主键字段 ( 非主键字段之间同样不可以产生依赖)

|| 范式:原子值 + 主键依赖 + 主键唯一依赖

发布了49 篇原创文章 · 获赞 77 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/a13352912632/article/details/104407103