初识MySQL
数据库(DB)分类:
- 关系型数据库: (SQL)
- MySOL,Oracle,Sql Sever,DB2,SOLlite
- 通过表和表之间,行和列之间的关系进行数据你的存储,学员信息表,考勤表,……
- 非关系型数据库: (NoSQL) Not Only
- Redis,MongDB
- 非关系型的数据库,对象存储,通过对象自身的属性来决定
DBMS(数据库管理系统):
- 数据库的管理软件,科学有效的管理数据,维护和获取数据
- MySOL,是关系型数据库管理系统
基本操作指令
mysql -u root -p --连接数据库
set password for 用户名 @localhost = password('新密码'); --修改密码
flush privileges --刷新权限
-------------------------------------------------------------------------------
--所有语句结尾都用;
show databases; --查看所有数据库
mysql> use school; --切换数据库 use 数据库名
show tables; --查看数据库中所有的表
dicribe student; --显示数据可中所有的表的信息
create database wang; --创建新数据库
exit; --退出连接
--单行注释(SQL本身的注释)
/**/ 多行注释数据库语言:
DDL 定义
DML 操作
DQL 查询
DCL 控制
操作数据库
- mysql中关键字不区分大小写,建议小写
- 字段名用反引号`` 包裹
操作数据库(增删改查)
- 创建数据库
CREATE DATABASE abc;
CREATE DATABASE IF NOT EXISTS abc;-- 添加判断是否已经存在
-- 查看创建对应数据库的语句
SHOW CREATE DATABASE `school`;- 删除数据库
DROP DATABASE IF EXISTS abc;- 使用数据库
-- 反引号,如果表明或者字段名为一个特殊字符(比如 select user等) 则要带上
USE `school`;- 查看数据库
SHOW DATABASES; -- 查看所有数据库数据库的列类型
数值
数据类型 | 属性和大小 |
tinyint | 十分小的数据,1字节 |
smallint | 比较小的数据,2字节 |
mediumint | 中等大小的数据,3字节 |
int(常用) | 标准整数,4字节 |
bigint | 较大的数据,8字节 |
float | 浮点数,4字节 |
double | 浮点数,8字节 |
decimal | 字符串形式的浮点数,金融计算的时候一般用decimal |
字符串
字符串类型 | 属性和大小 |
char | 固定大小的字符串 0-255 |
varchar | 可变大小的字符串 0-65535 常用的变量 String |
tinytext | 微型文本 2^8 -1 |
text | **文本串 2^16-1 保存大文本 ** |
时间日期
java.utill.Date
时间类型 | 格式 |
date | YYYY-MM-DD |
time | HH:mm:ss |
datetime | YYYY-MM-DD HH:mm:ss 最常用时间格式 |
timestamp | 时间戳,1970.1.1到现在的毫秒数!! |
year | 年份表示 |
null
没有值,未知
- 注意,不要用null进行运算,结果为null
字段属性(重点)
属性 | 说明 |
Unsigned | 限定为无符号整数,不能为负数 |
zerofill | 使用0去填充不足的位 |
autoincreament | 自增长,自动在上一条记录的基础上+1(默认),幅度可调 |
notNULL | 不能为空,若没有赋值则报错 |
default | 设置默认值,不赋值则使用默认值填充 |
每个表必须存在以下5个字段,表示一个表存在的意义
- id 主键自增
- version 乐观锁
- is_delete 伪删除
- gmt_create 创建时间
- gmt_updata 修改时间
操作表
创建表
基本操作
/*
CREATE TABLE [IF NOT EXISTS] 表名(
`字段名` 数据类型和长度 [属性] [索引] [注释],
`字段名` 数据类型和长度 [属性] [索引] [注释],
`字段名` 数据类型和长度 [属性] [索引] [注释],
[PRIMARY KEY (`字段名`) ]
)[表类型][字符集][注释];
*/
-- AUTO_INCREMENT 自增
-- 字符串用单引号括起来
-- 所有语句后加,(英文),最后一个不用加
-- DEFAULT NULL 默认为空
-- PRIMARY KEY 设置主键,一般是id
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`password` VARCHAR(20) NOT NULL DEFAULT'123456' COMMENT'密码',
`name` VARCHAR(30) NOT NULL DEFAULT'匿名' COMMENT'姓名',
`sex` VARCHAR(2) NOT NULL DEFAULT'女' COMMENT'性别',
`birthday` DATETIME DEFAULT NULL COMMENT'出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT'家庭住址',
`email` VARCHAR(20) DEFAULT NULL COMMENT'邮箱',
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
--查看创建对应表的语句
SHOW CREATE TABLE `students`;
--查看表的结构
DESC `students`;数据表的类型
-- 关于数据库引擎
/*
INNODB 默认使用
MYISAM 早些年使用
*/MYISAM | INNODB | |
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
大小 | 较小 | 较大,约2倍 |
- 常规使用操作
- MYISAM:节约空间,速度较快
- INNODB:安全性高,事务的处理,多表多用户男的操作
修改和删除表
修改
-- 重命名表
-- ALTER TABLE `旧名` RENAME AS `新名`;
ALTER TABLE `teacher` RENAME AS `teachers`;
-- 添加字段
--ALTER TABLE `表名` ADD `字段` 约束;
ALTER TABLE `teachers` ADD `age` INT(11);
-- 修改字段的约束
-- ALTER TABLE `表名` MODIFY `字段名` 约束;
ALTER TABLE `teachers` MODIFY `age` INT(3);
-- 重命名字段 也可以同时修改约束,不推荐
-- ALTER TABLE `表名` CHANGE `旧字段名` `新字段名` 约束;
ALTER TABLE `teachers` CHANGE `age` `age1` INT(11);删除
-- 删除表的字段
--ALTER TABLE `表名` DROP `字段名`;
ALTER TABLE `teachers` DROP `age1`;
















