MySQL

  • 数据库是所有软件体系中最核心的存在 !

查询数据库版本 mysql --version

1. 什么是数据库?

数据库(DB,DateBase)

概念:数据仓库,软件,安装在操作系统(window,linux,mac,...)之上! 可以存储大量数据,500W

作用:存储数据,管理系统

2. 数据库分类

关系型数据库:(SQL)

  • MySql,Orale,sql,Sql Server,DB2,SQLLite
  • 通过表和表,行和列之间的关系进行数据的存储, 学员信息表,考考勤表,...

非关系型数据库: (NoSql) Not Only

  • Redis,MongDB

  • 非关系型数据库,对象存储,通过对象的自身属性来决定。

DBMS(数据库管理系统)

  • 数据库管理软件,科学有效的管理我们的数据,维护和获取数据;
  • MySQL,数据库管理系统,
    • 数据库管理系统----管理和操作数据
    • 数据库-----存储数据

3. MySQL服务的启动和退出

登录: mysql [-h主机名 -p端口号] -u用户名 -p密码

退出: exit 或者 ctrl+c

4. mysql常用命令

describe是查看表结构,select是查看表内数据。

sc delete mysql; -- 清空服务

mysql -uroot -p123456 -- 连接数据库

update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost'; -- 修改密码

flush privileges; -- 刷新权限
----------------------------------------------------------------------
-- 所有的语句都使用;结尾
show databases;-- 查看所有的数据库

use school -- 切换数据库use数据库名
show tables; -- 查看数据库中所有表
desc student; -- 显示数据库中所有表的信息
create database ice; -- 创建一个数据库
select database(); -- 查看当前数据库
exit; -- 退出连接
-- 单行注释

每一个sqlyog的执行操作,本质就是对应一个sql,可以在历史记录中查看

5. 数据库XXX语言

DDL--定义 DML--操作 DQL--查询 DCL--控制

6. 创建表

引擎InnoDB 字符集utf8 核对utf8_general_ci

7. 操作数据库

操作数据库 > 操作数据库中的表 > 操作数据库表中的数据

MySQL关键字不区分大小写

  1. 创建数据库
CREATE DATABASE [IF NOT EXISTS] WESTOR
  1. 删除数据库
DROP DATABASE [IF EXISTS] WESTOR
  1. 使用数据库
use `school`
  1. 查看数据库
SHOW DATABASES -- 查看所有的数据库

8.数据库的类型

数值

  • tinyint 十分小的数据 1个字节

  • smallint 较小的数据 2个字节

  • mediumint 中等大小的数据 3个字节

  • int 标准的整数 4个字节 常用的 int

  • bigint 较大的数据 8个字节

  • float 浮点数 4个字节

  • double 浮点数 8个字节 (精度问题)

  • decimal 字符串形式的浮点数 金融计算的时候一般用decimal

字符串

  • char 字符串的固定大小 0-255

  • varchar 可变字符串 0-65535 常用的变量 String

  • tinytext 微型文本 2^8-1

  • text 文本串 2^16-1 保存大文本

时间日期

java.util.Data

  • data YYYY-MM-DD 日期格式
  • time HH:mm:ss 时间格式
  • datatime YY-MM-DD HH:mm:ss 最常用的时间格式
  • timestamp 时间戳 1970.1.1到现在的毫秒数! 也较为常用!
  • year 年份表示

null

  • 没有值,未知

  • 注意:不要使用NULL进行运算,结果为NULL

9.数据库的字段属性(重点)

Unsigned:

  • 无符号的整数

  • 声明了该列不能为负

zerofill:

  • 0填充的
  • 不足的位数补0

自增:

  • 默认在上一条记录的基础上自增1

  • 通常用来设计唯一主键--index,必须是整数类型

  • 可以自定义设计主键自增的起始值和增长

    非空 NULL not null

  • 假设设置为not null ,如果不赋值,会报错

  • NULL ,如果不写值,就是null

-- 目标创建一个school数据库
-- 创建学生表(列,字段)使用sql创建
-- 学号int 登陆密码varchar(20) 姓名,性别varchar(2),家庭住址,email
-- 使用英文(), 表的名称和字段尽量用``括起来
-- AUTO_INCREMENT 自增
-- 字符串使用单引号''括起来
-- 所有语句后面加英文逗号, 最后一句不用加
-- PRIMARY KEY 主键,一般一个表只有唯一一个主键!


CREATE TABLE IF NOT EXISTS `students`(
	`id` INT(3) NOT NULL AUTO_INCREMENT COMMENT '学号',
	`name` VARCHAR(3) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
	`sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
	`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
	`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
	PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

格式

CREATE TABLE [IF NOT EXISTS] `表名`(
	`字段名` 列类型 [属性] [索引] [注释],
    `字段名` 列类型 [属性] [索引] [注释],
    ...
    `字段名` 列类型 [属性] [索引] [注释]    
)[表类型][字符集设置][注释]

注意:创建表的括号里要用逗号;

创建外键约束:

constraint emp_depid_fk foreign key(dep_id) references department(id) ) on update cascade on delete cascade

-- 清空表中所有记录
truncate table 表名;
-- 创建外键约束
constraint teacher_id_fk foreign key (teacher_id) references teacher(id),

三大范式--

脏读:

虚读:update中

幻读:insert和delete中

posted @ 2021-11-30 21:31  ice204  阅读(43)  评论(0)    收藏  举报