本章开始MySQL,学习数据定义DDL
目录
数据库
什么是数据库
- 长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据 “仓库”
数据库的作用
- 实现数据共享
- 减少数据的冗余度
- 数据的独立性
- 数据实现集中控制
- 数据一致性和可维护性
- 以确保数据的安全性和可靠性
- 故障恢复
数据库管理系统( 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

其他属性
-
UnSigned
- 无符号的
- 声明该数据列不允许负数
-
ZEROFILL
- 0填充的,不足位数的用0来填充,如int(4),8则为0008
-
Auto_InCrement
- 自动增长的,每添加一条数据,自动在上一个记录数上加 1(默认)
- 通常用于设置主键,且为整数类型
- 可定义起始值和步长,SET @@auto_increment_increment=3,影响所有使用自增的表(全局)
-
NULL 和 NOT 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;
数据表的类型
- MyISAM、InnoDB、HEAP、BOB、CSV …
对比 MyISAM 和 InnoDB
- 适用 MyISAM:节约空间及相应速度
- 适用 InnoDB:安全性,事务处理及多用户操作数据表
名称 | MyISAM | InnoDB |
---|---|---|
事务处理 | 不支持 | 支持 |
数据行锁定 | 不支持(属于表锁) | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约 2 倍 |
其他零碎的点
-- 注释:
单行注释 # 注释内容
多行注释 /* 注释内容 */
单行注释 -- 注释内容
(标准SQL注释风格,要求双破折号后加一空格符(空格、TAB、换行等))
-- SQL对大小写不敏感 (关键字)
-- 模式通配符
_ 任意单个字符
% 任意多个字符,甚至包括零字符
单引号需要进行转义 \'
Hi, welcome to JasperのBlog!