本章开始MySQL,学习数据定义DDL


目录

  • 数据库
  • 什么是数据库
  • 数据库的作用
  • 数据库管理系统( DataBase Management System )
  • 数据库总览
  • MySQL 简介
  • 操作数据库
  • 结构化查询语句分类
  • 命令行操作数据库
  • 数据字段类型
  • 其他属性
  • 数据表的类型
  • 其他零碎的点


数据库

什么是数据库

  • 长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据 “仓库”

数据库的作用

  • 实现数据共享
  • 减少数据的冗余度
  • 数据的独立性
  • 数据实现集中控制
  • 数据一致性和可维护性
  • 以确保数据的安全性和可靠性
  • 故障恢复

数据库管理系统( DataBase Management System )

  • 数据库管理软件,科学组织和存储数据,高效地获取和维护数据

数据库总览

关系型数据库 ( SQL )

  • MySQL,Oracle,SQL Server,SQLite,DB2 …
  • 关系型数据库通过外键关联来建立表与表之间的关系

非关系型数据库 ( NOSQL )

  • Redis , MongoDB …
  • 非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定

MySQL 简介

MySQL 概念

  • MySQL 是现在流行开源的,免费关系型数据库

MySQL 历史

  • 由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品

MySQL 特点

  • 免费,开源数据库
  • 小巧,功能齐全
  • 使用便捷
  • 可运行于Windows或Linux操作系统
  • 可适用于中小型甚至大型网站应用

操作数据库

结构化查询语句分类

名称

解释

命令

DDL (数据定义语言)

定义和管理数据对象,如数据库,数据表等

CREATE、DROP、 ALTER

DML (数据操作语言)

用于操作数据库对象中所包含的数据

INSERT、UPDATE、DELETE

DQL (数据查询语 言)

用于查询数据库数据

SELECT

DCL (数据控制语言)

用于管理数据库的语言,包括管理权限及数据更改

GRANT、COMMIT、ROLLBACK

命令行操作数据库

//连接MySQL
mysql -u root -p
Enter password 输入密码
//刷新权限
flush privileges;

//显示所有数据库
show databases;
//创建数据库
create database [if not exists] 数据库名; //[ ]为可选择写或不写
//选择数据库
use 数据库名;
//删除数据库
drop [if exists] database 数据库名;

//显示选定数据库中所有的表
show tables; 
//显示选定数据库中dbtable表的列信息
describe 表名;
//删除选定数据库中的特定的表
drop [if exists] table 表名;
//增加字段
alter table 表名 add 字段名 类型 约束;
//修改字段
alter table 表名 change  字段名 新字段名 类型 约束;
//删除字段
alter table 表名 drop 字段名;

创建数据表

  • 反引号用于区别MySQL保留字与普通字符而引入的
create table [if not exists] `表名`( 
  '字段名1' 列类型 [属性][索引][注释], 
  '字段名2' 列类型 [属性][索引][注释], 
   ...
  '字段名n' 列类型 [属性][索引][注释] 
)[表类型][表字符集][注释];

数据字段类型

  • NULL 理解为 “没有值” 或 “未知值”
  • 不要用NULL进行算术运算,结果仍为NULL

mysql 是否只能是存储过程中循环 mysql可以存对象吗_mysql 是否只能是存储过程中循环

其他属性

  • UnSigned
  • 无符号的
  • 声明该数据列不允许负数
  • ZEROFILL
  • 0填充的,不足位数的用0来填充,如int(4),8则为0008
  • Auto_InCrement
  • 自动增长的,每添加一条数据,自动在上一个记录数上加 1(默认)
  • 通常用于设置主键,且为整数类型
  • 可定义起始值和步长,SET @@auto_increment_increment=3,影响所有使用自增的表(全局)
  • NULLNOT NULL
  • 默认为NULL,即没有插入该列的数值
  • 如果设置为NOT NULL,则该列必须有值
  • DEFAULT
  • 默认的,用于设置默认值
-- 创建一个student表,包含以下字段
-- 学号,登录密码,姓名,性别,出生日期,家庭住址,邮箱
-- 创建表之前 , 一定要先选择数据库

CREATE TABLE if not EXISTS `student` (
	`id` int(4) not NULL auto_increment COMMENT '学号',
	`name` VARCHAR(20) 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(50) DEFAULT NULL COMMENT '邮箱',
	PRIMARY KEY(`id`)
) ENGINE=INNODB DEFAULT charset=utf8

-- 查看数据库的定义
SHOW CREATE DATABASE dbstudy;
-- 查看数据表的定义
SHOW CREATE TABLE student;
-- 显示表结构
DESC student;
-- 设置严格检查模式(不能容错了)
SET sql_mode='STRICT_TRANS_TABLES';
-- 查看mysql所支持的引擎类型(表类型)
SHOW ENGINES;

数据表的类型

  • MyISAMInnoDB、HEAP、BOB、CSV …

对比 MyISAM 和 InnoDB

  • 适用 MyISAM:节约空间及相应速度
  • 适用 InnoDB:安全性,事务处理及多用户操作数据表

名称

MyISAM

InnoDB

事务处理

不支持

支持

数据行锁定

不支持(属于表锁)

支持

外键约束

不支持

支持

全文索引

支持

不支持

表空间大小

较小

较大,约 2 倍

其他零碎的点

-- 注释:
单行注释 # 注释内容 
多行注释 /* 注释内容 */ 
单行注释 -- 注释内容
(标准SQL注释风格,要求双破折号后加一空格符(空格、TAB、换行等))

-- SQL对大小写不敏感 (关键字)

-- 模式通配符
_ 任意单个字符
% 任意多个字符,甚至包括零字符 
单引号需要进行转义 \'

Hi, welcome to JasperのBlog!