观b站数据库入门视频笔记

登录

mysql -u root -p

查询

  • 查看所有数据库
    SHOW databases;
    选择数据库
    USE 数据库名;
  • 查看数据库中有哪些表
    SHOW tables
    查询表中数据(上节)
    SELECT * FROM 表名

创建

  • 创建数据库
    CREATE DATABASE 数据库名
    创建数据表
    CREATE TABLE students(name VARCHAR(20),id VARCHAR(20),sex CHAR(1),grade INT);
  • 查看数据表架构
    DESCRIBE students
  • 向表中添加数据
    INSERT INTO 表名
    VALUES('内容1','内容2');

常用数据类型

  1. 数值:TINYINT SMALLINT MEDIUMINT INT或INTEGER BIGINT FLOAT DOUBLE
  2. 日期/时间:DATE(YYYY-MM-DD) TIME(HH:MM:SS) YEAR(YYYY) DATETIME(YYYY-MM-DD- HH:MM:SS) TIMESTAMP(时间戳,YYYYMMDD HHMMSS)
  3. 字符串:CHAR VARCHAR YINYBLOB TINYTEXT BLOB(二进制形式的长文本数据) TEXT(长文本数据) MEDIUMBLOB MEDIUMTEXT LONGBLOB LONGTEXT
  • 删除数据
    DELETE FROM 表名 WHERE 条件
  • 修改数据
    UPDATE SET 改前='改后' WHERE 条件
  • 总结:增删改查——INSERT、DELETE、UPDATE、SELECT

MySQL建表约束

主键约束

它能够唯一确定一张表中的一条记录。使得该字段不重复且不为空。
添加单条约束:

CREATE TABLE user
(
	id INT PRIMARY KEY,--这里id不为空、不重复
	name VARCHAR(20)
);

添加联合约束:

CREATE TABLE user2
(
	id INT,
	name VARCHAR(20)
	password VARCHAR(20)
	PRIMARY KEY(id,name)--这里id和name都不能为空,不能同时重复
);

自增约束

CREATE TABLE user3
(
	id INT PRIMARY AUTO_INCREMENT,
	name varchar(20)
);
INSERT INTO user3(name) VALUES('张三');--没有设定id,但id按加入顺序从1开始自增
  • 如果创建表的时候没有添加主键约束:
    ALTER TABLE user4 ADD PRIMARY KEY(id);
  • 删除约束
    ALTER TABLE user4 DROP PRIMARY KEY;
  • 修改约束
    ALTER TABLE user4 MODIFY id INT PRIMARY KEY;

唯一约束

在建表时设置唯一约束:
格式一:这种格式可以同时设置多个

CREATE TABLE user5
(
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(20);
	UNIQUE(id,name);
--id和name都设置,此时不同时重复就可以添加,类似联合主键
)

格式二:

CREATE TABLE user6
(
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(20) UNIQUE//只设置name
);

建表后再添加唯一约束

CREATE TABLE user7
(
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(20);
)
ALTER TABLE user4 ADD UNIQUE(name);//新增name为唯一约束
  • 删除唯一约束
    ALTER TABLE user7 DROP INDEX name;
  • modify添加唯一约束
    ALTER TABLE user7 MODIFY name VARCHAR(20) UNIQUE;

总结:

  1. 建表的时候可以添加约束
  2. 使用ALTER…ADD…
  3. ALTER…MODIFY…
  4. 删除ALTER…DROP…

非空约束

修饰的字段不能为null

CREATE TABLE user9
(
	name VARCHAR(20) NOT NULL;
)

默认约束

如果没有传值使用默认值

CREATE TABLE user10
(
	id INT,
	name VARCHAR(20),
	age INT DEFAULT 10
);

外键约束

涉及到两个表:父表,子表
或 主表,副表

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)
);
  1. 主表classes中没有的数据值,在副表中是不可以使用的。
  2. 主表中的记录被副表引用,是不可以被删除的。
    例如:
INSERT INTO classes VALUES(1,'一班');
INSERT INTO classes VALUES(2,'二班');
INSERT INTO classes VALUES(3,'三班');
INSERT INTO classes VALUES(4,'四班');

INSERT INTO students VALUES(1005,'王五',5);--是错误的
DELETE FROM classes WHERE id=4;--错误

三大设计范式

范式,设计得越详细,对某些实际操作可能更好,但是不一定都是好的。

  • 第一范式:可以继续拆分,不满足第一范式
  • 第二范式:满足第一范式的条件下,除主键外的每一列都必须完全依赖于主键。如果出现不完全依赖,只可能发生在联合主键的情况下。
CREATE TABLE myorder
(
	product_id INT
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值