初识数据库
- DataBase —— 数据库 DB (存数据)
- 定义:是按照 数据结构 来组织、存储和管理数据的仓库” 是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合
- 作用:存储数据 管理数据
数据库分类
- 关系型数据库(SQL):MySQL,Oracle,Sql Server,DB2, SQLlite
通过表和表之间 列和列之间的关系进行储存数据 各个表事件是有联系的
数据库 = 多张表 + 各表之间的关系
- 非关系型数据库(NOSQL):Redis,MongDB
通过对象的自身的属性来决定
DBMS — 数据库管理系统 (管理数据)
- MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件 之一
连接数据库
- 使用命令行 —— 在cmd中以管理员身份打开
所有命令后面加分号 ;
C:\WINDOWS\system32>mysql -uroot -p123456
flush privileges; —————————— 刷新权限
show databases; —————————— 查看所有的数据库
use school —————————— 切换数据库 use 数据库名 Database changed
show tables; —————————— 查看数据库中所有的表 describe student; -- 显示数据库中所有的表的信息
create database westos; —————————— 创建一个数据库
exit; —————————— 退出连接
- 单行注释: - -
- 多行注释:/* */
- DDL —————— 数据库定义语言
- DML —————— 数据库操作语言
- DQL —————— 数据库查询语言
- DCL —————— 数据库控制语言
操作数据库
- 1. 创建数据库
CREATE DATABASE IF NOT EXISTS Teacher;
- 2. 使用数据库
USE school
注意:若表名 或者 字段名是一个特殊字符,就需要带 ``
- 3. 删除数据库
DROP DATABASE IF EXISTS Teacher
- 4. 查看所有的数据库
SHOW DATABASES
数据类型
数值
数据类型 | 格式 | 字节数 |
---|---|---|
tinyint | 十分小的数据 | 1字节 |
smallint | 可变字符串 | 2字节 |
mediumint | 中等大小数据 | 3字节 |
int | 标准整数 | 4字节 (常用) |
bigint | 较大的数据 | 8字节 |
float | 浮点数 | 4字节 |
double | 浮点数 | 8字节 |
decimal | 字符串形式的浮点数 |
字符串
数据类型 | 格式 | 字节数 |
---|---|---|
char | 字符串固定大小 | 0~255 |
varchar | 可变字符串 | 0~65535 |
tinytext | 微型文本 | 2^8 - 1 |
text | 文本串 | 2^16 -1 ( 保存大文本 eg:博客) |
时间日期
数据类型 | 格式 |
---|---|
date | YYYY-MM-DD |
time | HH:mm:ss |
datetime | YYYY-MM-DD HH:mm:ss (最常用的时间格式) |
timestamp | 时间戳(1970.1.1 到现在的毫秒数) |
year | 年份 |
null
空值 未知
字段属性
- Unsigned ———— 声明了该列不能为负数
- zerofill ———— 不足的位数,使用0来填充
- 自增 ———— 自动在上一条记录的基础上 + 1
- 默认:通常用来设计唯一的主键
必须是整数类型
可以自定义设计主键自增的起始值和步长
- 非空NOT NULL ———— 若不给它赋值则报错 (若不填值 默认为null)
- 默认 ———— 设置默认的值
创建数据库
- 引擎:InnoDB
- 字符集:utf8
- 核对:utf8_general_ci
创建学生表 有 id name pwd sex birthday address email 主键为 id
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(10) NOT NULL DEFAULT '某某某' COMMENT '姓名',
`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`address` VARCHAR(50) DEFAULT NULL COMMENT '地址',
`email` VARCHAR(30) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
)ENGINE = INNODB DEFAULT CHARSET = utf8
注意
- 1. 所有语句以逗号结尾 最后一行不需要
- 2. 一般一个表只有一个主键
- 3. 表的名称和字段需要用 ` (piao) 括起来
- 4. 字符串使用单引号括起来
常用命令
SHOW CREATE DATABASE school —————————— 查看创建数据库的语句
SHOW CREATE TABLE student —————————— 查看student数据表的定义语句
DESC student —————————— 显示表的结构
修改数据库
- 表改名 —— rename
ALTER TABLE teacher RENAME AS teacher1
- 增加字段 —— add
ALTER TABLE teacher1 ADD sex VARCHAR(2)
- 字段重命名 —— change
ALTER TABLE teacher1 CHANGE age age1 INT(3)
- 修改字段约束 —— modify
ALTER TABLE teacher1 MODIFY age VARCHAR(5)
modify ———— 修改字段类型和约束 不能字段重命名
- 删除表 —— drop
DROP TABLE IF EXISTS teacher1
MYSQL数据管理
外键
语法:
-
- 定义外键 : KEY
FK_gradeid
(gradeid
)
- 定义外键 : KEY
-
- 给这个外键加约束:CONSTRAINT
FK_gradeid
FOREIGN KEY (gradeid
) REFERENCESgrade
(gradeid
)
- 给这个外键加约束:CONSTRAINT
- 方法一:在创建表时创建外键
CREATE TABLE IF NOT EXISTS student(
`id` INT(5) NOT NULL AUTO_INCREMENT COMMENT '学生id',
`name` VARCHAR(20) NOT NULL COMMENT '学生姓名',
`pwd` VARCHAR(20) NOT NULL COMMENT '密码',
`gradeid` INT(10) NOT NULL COMMENT '年级',
PRIMARY KEY(`id`),
KEY `FK_gradeid` (`gradeid`),
CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`)
)ENGINE = INNODB DEFAULT CHARSET = UTF8
- 方法二:创建完表之后加外键
ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);
DML操作语言
添加数据 —— insert
- 添加指定字段的数据
INSERT INTO `grade`(`gradename`) VALUES('大一')
- 添加多个字段的数据
INSERT INTO `student`(`id`,`name`,`pwd`) VALUES('1','张三','123456')
- 添加多条数据
INSERT INTO `student`(`id`,`name`)
VALUES('2','李四'),('3','王五'),('4','赵六')
- 注意:字段后面可以省略 不过必须 一 一 对应
修改数据 —— update
操作符 | 含义 |
---|---|
!= | 不等于 |
between … and | [ ] 在…之间 |
and | 两个均满足 |
or | 满足其中一个即可 |
- 1. 指定条件下修改一个字段
UPDATE `student` SET `name`= 'JACK' WHERE id= 4
若不指定 则修改全部的数据
- 2. 指定条件下修改多个字段
UPDATE `student` SET `name`= 'Rose',`pwd` = '456789' WHERE id= 5
- 3. 通过多个条件确定修改的字段
UPDATE `student` SET `name`= 'Mary',`pwd` = '456789' WHERE id BETWEEN 2 AND 4
UPDATE `student` SET `name`= 'KD',`pwd` = '666' WHERE `name` = 'Mary' AND `sex` = '女'
UPDATE `student` SET `name`= '小明',`pwd` = '000' WHERE `id`= 4 OR `pwd` = '555'
删除数据 —— delete
- 删除指定数据
DELETE FROM `student` WHERE `id` = 2
truncate 命令和 delete 命令删除数据 区别
-
- 相同点:清空所有数据 不会删除表结构
-
- 不同点:
-
- delete:不会重新设置自增列
DELETE FROM `student`
-
- Truncate:重新设置自增列 计数器归零
TRUNCATE `student`