一、MySQL数据库数据类型
<1> MySQL数据库中支持多种数据类型
- 数值型
- 字符型
- 日期型
<2> 常用的数据类型
- 整型 - int:整型,存储整数 - int(M): M表示预期值,与存储大小和数值的范围无关 - id int 1 - id int(3) zerofill 001 - zerofill 零填充 会在左侧补0 - tinyint 1 -128~127 - smallint 2 32767/65535 - int 4 21亿 - bigint 8 兆 - mediumint 3 八百多万/一千六百多万
- 浮点型 - float(M,D): 浮点型,存储小数 - salary float(6,2): 表示最多6位,小数占2位,最大存储数值为:9999.99 - double: 浮点型,小数
- 字符型 - char(M): 固定长度的字符串类型 name char(5) '1 ' - varchar(M): 可变长度的字符串类型 (推荐) name varchar(5) '1' - text: 大的字符串类型,4G字符串 - blob:字节类型
- 日期 - date: 日期类型,年月日 YYYY-MM-DD 日期格式 - time: 时间类型,时分秒 HH:mm:ss 时间格式 - year: 年份,年 YYYY格式的年份值 - timestamp: 年月日 时分秒,时间戳 1970年1月1日0时0分0秒 - 2037年的某一个时刻 YYYYMMDDhhmmss - datetime: 年月日 时分秒 YY-MM-DD hh:mm:ss
- 注意:选择合适的数据类型,是数据库优化的一部分,short it better 原则
二、MySQL数据库中的数据的使用
如何操作:编程语言
<1> SQL概述
- 结构化查询语言,可以用于查询和修改关系数据库的语言
- SQL语言,是数据库的核心语言,被ISO采纳为数据库语言国际标准,几乎所有的数据库都支持SQL
<2> 组成
- 数据定义语言(Data Definition Language, DDL): 用于管理和定义数据对象,包括数据库,数据表等 - create: 创建数据库和表 - drop: 删除表对象 - alter: 修改表结构
- 数据操作语言(Data Manipulation Language, DML): 用于操作数据库对象中所包含的数据 - insert: 添加数据 - delete: 删除数据 - update: 修改数据
- 数据查询语言(Data Query Language, DQL): 用于查询数据库对象中所包含的数据 - select: 查询数据
- 事务控制语言(Transaction Control Language, TCL): 包括提交事务、事务回滚 - commit: 提交事务 - rollback: 事务回滚 - savepoint: 事务节点
- 数据控制语言(Data Control Language, DCL): 用来管理数据库,包括管理权限以及数据更改 - grant: 授权 - revoke: 收回权限
1. 数据定义语言(DDL)
数据库的操作
<1> 创建数据库
- 语法格式: creat database if not exists 数据库名称 character set = 编码名称; // '[]'表示可有可无 - 例如: - create database ruochen; - create database if not exists ruochen; // 忽视错误,显示警告
<2> 查看数据库
- 语法格式 - show databases; // 查看所有的数据库 - show create database 数据库名称; // 查看某一个已经创建的数据库 - show warnings; // 查看警告 - create database db character set gbk; // 指定创建的数据库的字符集
<3> 修改数据库
- 语法格式: alter database if not exists 数据库名称 character set 新的编码名称 - 例如: - alter database db character set = utf8;
<4> 删除数据库
- 语法格式:drop database 数据库名称; - 例如: - drop database ruochen; // 删除数据库
数据表的操作
<1> 创建数据表
- 使用一个数据库: use 数据库名称
- select database(); // 查看当前正在使用的数据库
- 创建数据表语法: - create table 表名( 字段名 字段类型 约束, 字段名 字段类型 约束, ...... ) - 例如:创建用户表 - ceeate table user( uid int, username varchar(32), password varchar(32), birthday date, sex enum('男', '女') )
<2> 查询数据表
- show tables; // 显示当前数据库中所有的数据表
- show columns from 表名; // 查询某张表表结构
- desc 表名; // 查询某张表的表结构
<3> 修改数据表
- 修改表名 - 方式一: alter table 表名 rename as|to 新表名 - 例如:alter table user rename us; - 方式二:rename table 旧表名 to 新表名 ,旧表名 to 新表名, ....; - 例如:rename table user to us;
- 添加列 - 语法格式: - alter table 表名 add column 列名 列定义 first|after 列名; - 例如: - alter table user add sal double after password; // 在指定的列后面添加新的列 - alter table user add phone varcher(32); // 默认在列的最后添加新的列 - alter table user add hobby varchar(32) first; // 在列的最前面添加新的列
- 修改列定义 - 语法格式: - alter table 表名 modify 列名 列定义 first|after 列名; - 例如: - alter table user modify sex varchar(32) first;
- 修改列名 - 语法格式: - alter table 表名 change 列的列名 新的列名 新的列定义 first|after 列名; - 例如: - alter table user change hobby address varchar(20) after sal;
- 删除列 - 语法格式: - alter table 表名 drop column 列名; - 例如: - alter table user drop phone;
<4> 删除数据表
- 语法格式: - drop table 表名;
- 例如: - drop table user;
2. 数据操作语言(DML)
<1> 插入操作
- 语法格式: - insert into 表名 (列名1,列名2,....) values|value (数值1|表达式,数值2|表达式,....);
- 例如: - insert into teacher (id, name) values ('1', 'xian zheng ta yi ge yi'); - insert into teacher value(2, ' - wangjianlin', 'xian zheng ta yi ge yi'); // 如果前面不指定字段,默认采用所有字段,按照列的顺序添加
<2> 删除操作
- 语法格式: - delete from 表名 where 条件;
- 例如: - delete from teacher where id=1; // 指定条件删除记录 - delete from teacher; // 不带条件删除,删除所有记录
- 扩充:truncate table 表名; // 清空表,会清空表中所有数据 - 例如 - truncate table teacher;
- 面试题: - delete删除与truncate 有什么区别? - 删除方式 - delete:一条一条的删除,不清空 auto_increment 记录数 - truncate:直接将表中的数据进行清空, auto_increment 自增将被重置,从新开始
<3> 修改操作
- 语法格式: - update 表名 set 列名1=数值,列名2=数值,.... where 条件; - 例如: - update teacher set name='xiaosan',note='ming nian zai zhao yi ge' where id=1; // 带条件修改,修改指定记录 - update teacher set name='xiaosi'; // 不带条件,修改表中所有数据