目录
- 概念知识
- 一、管理逻辑库与数据表
- 二、常用数据类型和约束
- 2.1 数字数据类型
- 2.2 字符串数据类型
- 2.3 日期数据类型
- 2.4 字段约束
- 三、索引运行机制和使用原则
- 3.1 创建索引
- 3.2 添加与删除索引
- 3.3 索引的使用原则
概念知识
-
关系型数据库: 使用了关系模型的数据库系统,数据分类存放,数据之间可以有联系。多线程
产品: MySQL、DB2、Oracle、SQL Server
-
非关系型数据库(NoSQL): 数据分类存放,但数据之间没有关联关系的数据库系统,关系型数据库的一种补充。
产品: Redis、MemCache、MongoDB、Neo4J
例子: 新闻、秒杀库存、登录信息、消息通知。防止多线程争抢资源,Redis单线程,读写速度快
配置文件
一、管理逻辑库与数据表
sql语言的分类:
DML数据操作语言:对数据的增删改查
DCL数据控制语言 :创建用户、分配权限、事务管理
DDL数据定义语言:逻辑库、数据表、视图、索引
逻辑空间的操作:
# 查寻逻辑空间
SHOW DATABASES;
# 创建逻辑空间
CREATE DATABASE demo;
# 删除逻辑空间
DROP DATABASE demo;
数据库表结构的修改:
CREATE DATABASE my;# 切换my数据库
use my;# 显示数据库表
SHOW TABLES;# 创建数据库表
CREATE TABLE student(id INT UNSIGNED PRIMARY KEY,name VARCHAR(20) NOT NULL,sex CHAR(1) NOT NULL,birthday DATE NOT NULL,tel char(11) NOT NULL,remark VARCHAR(200)
);# 向数据库表中插入一行数据
INSERT INTO student VALUES(1, "李强", "男", "2002-02-12", "12765489865", NULL);
# 删除数据库表
DROP TABLE student;# 展示字段类型及约束
DESC student;# 向表中增加字段
ALTER TABLE student
ADD address VARCHAR(200) NOT NULL,
ADD home_tel VARCHAR(11) NOT NULL;# 删除表中的字段
ALTER TABLE student
DROP address,
DROP home_tel;# 修改字段类型和约束
ALTER TABLE student
MODIFY home_tel CHAR(11) NOT NULL;# 修改字段名称及类型、约束
ALTER TABLE student
CHANGE home_tel home_telp Char(11) NOT NULL;# 修改表名
ALTER TABLE student RENAME tb_student;
# 删除数据表
DROP TABLE t_student;
二、常用数据类型和约束
2.1 数字数据类型
2.2 字符串数据类型
2.3 日期数据类型
2.4 字段约束
数据库的范式: 构造数据库遵循的规则
- 原子性:要求每一列都是不可分割的基本数据项
- 唯一性:主键列标识
- 关联性:每列都与主键有直接关系,不存在传递依赖
约束名称 | 关键字 | 描述 |
---|---|---|
主键约束 | PRIMARY KEY | 字段值唯一,且不能为NULL |
非空约束 | NOT NULL | 字段值不能为NULL |
唯一约束 | NUIQUE | 字段值唯一,且可以为NULL |
外键约束 | FOREIGN KEY | 保持关联数据的逻辑性 |
外键约束是定义在子表上的
三、索引运行机制和使用原则
索引建立的好处:MySQL利用二叉树结构,对数据表的记录排序,加快检索速度
3.1 创建索引
CREATE TABLE 表名称(...,# []内的内容可写可不写INDEX [索引名称](字段)...
);
3.2 添加与删除索引
添加索引
CREATE INDEX 索引名称 ON 表名(字段);
ALTER TABLE 表名称 ADD INDEX [索引名](字段);
显示表中的所有索引
SHOW INDEX FROM 表名;
删除索引
DROP INDEX 索引名称 ON 表名;
3.3 索引的使用原则
- 数据量很大,经常被查询的数据表可以设置索引
- 索引只添加在经常被用做检索条件的字段上面
- 不要在大字段上创建索引
# 创建一个部门表
CREATE TABLE tb_dept(deptno INT UNSIGNED PRIMARY KEY,dename VARCHAR(20) NOT NULL UNIQUE,tel CHAR(4) UNIQUE,# 创建索引INDEX idx_tel(tel)
);# 删除索引
DROP INDEX idx_tel ON tb_dept;# 添加索引,两种方式
CREATE INDEX idx_tel ON tb_dept(tel);
ALTER TABLE tb_dept ADD INDEX idx_tel(tel);# 显示表中所有的索引
SHOW INDEX FROM tb_dept;# 创建一个员工表
CREATE TABLE tb_emp(empno INT UNSIGNED PRIMARY KEY,ename VARCHAR(20) NOT NULL,sex ENUM("男", "女") NOT NULL,deptno INT UNSIGNED NOT NULL,hiredate DATE NOT NULL,FOREIGN KEY (deptno) REFERENCES tb_dept(deptno) # 当前的deptno关联到tb_dept表的deptno字段
);