文章目录
1. 数据库概述
数据库可分为:
- 关系型数据库(SQL):通过表和表之间,行和列之间的关系进行数据的存储。例如:MySQL、Oracle、Sql Server
- 非关系型数据库(NoSQL):对象存储,通过对象的自身的属性来决定。例如:Redis
MySQL的优势及特点:
- 在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
- MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
- MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言
- MySQL由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
摘自
2. 新建数据库和表
3. 添加数据
4. 操作数据库
--一些基本命令
mysql -u -root -p --在命令行中连接数据库
--sql语句使用;结尾
show databases; --查询所有数据库
use school; --切换数据库 use+数据库明
show tables; --查看所有表
describe student --查看表中信息
create database sqlname; --创建数据库
exit; --断开链接
/*
多行注释
*/
在sqlyog中的History可以看到SQL语句
数据库XXX语言 CRUD-增删改查
DDL-定义、DML-操作、DQL-查询、DCL-控制
4.1 数据库层面
-- sql语句不区分大小写
create database IF NOT EXISTS KK; -- 如果不存在创建数据库
DROP IF EXISTS KK; -- 如果存在移除数据库
USE `school`; -- 使用数据库, 如果数据库名是关键字,需要用反引号括起来
SHOW databases; -- 查看所有数据库
4.1.1 数据库的列类型
数值
- 整数
- tinyint 很小的数据,1bit
- smallint 2bits
- mediuminy 3bits
- int 常用 4bits
- bigint 8bits
- 浮点数
- float 4bits
- double 8bits (精度问题)
- decimal 字符串形式的浮点数(金融计算时使用)
字符串
- char 固定大小 0-255
- varchar 可变字符串 0-65535(相当于String)
- tinytext 卫星文本 2^8-1
- text 文本串 2^16-1
时间日期
- date YYYY-MM-DD 日期
- time HH: mm: ss 时间
- datetime 日期+时间
- timestamp 时间戳(1970.1.1到现在的毫秒数)
- year 年份
null:没有值,未知,尽量不要使用null进行运算
4.1.2 数据库的字段属性(重点)
- Unsigned:无符号整数,不能声明为负数
- zerofill:不足的位数用0填充
- Auto Incr? 自增:
- 通常理解为自动在上一条记录的基础上+1
- 通常用来设计唯一的主键,可自定义设置主键自增的起始值和步长
- Not Null?非空 选中后,不填数据会报错
- default 设置默认的值
4.2 数据库表层面
4.2.1 创建表
格式
CREATE TABLE [IF NOT EXISTS] `表名`(
`字段名` 列类型 [属性 索引 注释],
...
`字段名` 列类型 [属性 索引 注释],
PRIMARY KEY(`主键`)
)[表类型][字符集设置][注释]
CREATE TABLE IF NOT EXISTS `kids` (
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '生日',
PRIMARY KEY (`id`) -- 一般一个表只有一个主键
)ENGINE=INNODB DEFAULT CHARSET=utf8
-- 常用命令
SHOW CREATE DATABASE school -- 查看创建数据库语句
SHOW CREATE TABLE kids
DESC kids -- 显示表的结构
4.2.2 数据表类型
数据库引擎 | 事务支持 | 数据行锁定 | 外键约束 | 全文索引 | 表空间大小 |
---|---|---|---|---|---|
MYISAM(速度较快) | 不支持 | 不支持 | 不支持 | 支持 | 较小,节约空间 |
INNODB(安全性高) | 支持 | 支持 | 支持 | 不支持 | 较大,约为MYISAM2倍 |
-- 字符集编码
CHARSET=utf8 -- 不设置会出现乱码。MySQL默认编码是Latin1,不支持中文
4.2.3 修改删除表
ALTER TABLE kids RENAME AS teachers; -- 修改表名 ALTER TABLE 旧表名 RENAME AS 新表名
ALTER TABLE teachers ADD age INT(11); -- 增加表的字段
-- 修改表的字段(1.重命名 2.修改约束)
ALTER TABLE teachers CHANGE age age1 INT(2); -- 重命名
ALTER TABLE teachers MODIFY age VARCHAR(11); -- 修改约束
-- 删除表的字段
ALTER TABLE teachers DROP age1;
-- 删除表
DROP TABLE IF EXISTS +表名;