MySQL---操作数据库
操作数据库--->操作数据库中的表--->操作数据库中表的数据
1.操作数据库
1.1、创建数据库
create database [if not exists] database_name;
1.2、删除数据库
drop database if exists database_name;
1.3、使用数据库
-- 如果你的表名或者字段名是一个特殊字符,就需要带 ``这个符号
use `school`
1.4、查看数据库
show databases; -- 查看所有的数据库
2.数据库的列类型
2.1、数值
-
tinyint:十分小的数据 1个字节
-
smallint:较小的数据 2个字节
-
mediumint:中等大小的数据 3个字节
-
int:标准的整数 4个字节 常用的
-
bigint : 较大的数据 8个字节
-
float:单精度浮点数 4个字节
-
double:双精度浮点数 8个字节
-
decimal:字符串形式的浮点数 金融计算的时候一般使用这个类型
注意:对于int类型,int(M),这个M指示的是最大显示宽度,并不是限制你只能插入规定的长度为M的数据,比如Int(1),可以插入1,也可插入100、1000。
2.2、字符串
-
char:字符串的大小固定 0-255
-
varchar:可变字符串 0-65535 对应Java中的String
-
tinytext:微型文本 2^8-1
-
text:文本串 2^16-1 保存大的文本
2.3、时间日期
java.util.Data
-
date YYYY-MM-DD,日期格式
-
time HH:mm:ss,时间格式
-
datatimw YYYY-MM-DD HH:mm:ss ,最常用的时间格式
-
timestamp 时间戳,1970.1.1到现在的毫秒数
-
year 年份表示
2.4、null
-
没有值,未知
-
注意,不要使用NULL进行计算,结果为NULL
3.数据库的字段属性
Unsigned:
-
无符号的整数
-
声明了该列不能声明为负数
zerofill:
-
0填充
-
不足的位数,使用0来填充,比如 定义int(3) , 5 ---- 005
自增:
-
通常理解为自增,自动在上一条记录的基础上+1(默认)
-
通常用来设计唯一的主键,必须是整数类型
-
可以自定义设计主键自增的起始值和步长
非空:
-
假设设置为 not null,如果不给它赋值,就会报错
默认:
-
设置默认的值
-
如果不指定该列的值,则会有默认的值
4.拓展
每个表都必须存在以下五个字段,做项目要用的,表示一个记录存在的意义:
id 主键
`version` 乐观锁
id_delete 伪删除
gmt_create 创建时间
gmt_updat 修改时间
5.创建数据库表
书写创建数据库表的语句的时候需要注意:
-
使用英文的圆括号"()"
-
表的名称和字段尽量使用 `` 括起来
-
字符串使用单引号或者双引号括起来
-
所有的语句后面加 "," 注意这个逗号应该是英文的,最后一个语句不用加
-
auto_increment表示自增
-
primary key 表示主键,最好放在最后面,能够让人一眼看到哪个属性是主键
create table if not exists `student` ( `id` int(4) not null auto_increment comment '学号', `name` varchar(30) not null default '' comment '姓名', `pwd` varchar(20) not null default '' comment '密码', `sex` varchar(2) not null default '' comment '性别', `birthday` datetime default null comment '生日', `address` varchar(100) default null comment '地址', `email` varchar(50) default null comment '邮箱', primary key (id) )engine=InnoDB default charset=utf8
格式:
create table [if not exists] `表名` ( `字段名1` 列类型 [属性] [索引] [注释], `字段名2` 列类型 [属性] [索引] [注释], `字段名3` 列类型 [属性] [索引] [注释], …… `字段名` 列类型 [属性] [索引] [注释] )[表类型][字符集设置][注释]
6.三个常用的命令
show create database school; show create table student; desc student;
1.查看创建数据库的语句
show create database school; CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8 */'
2.查看创建数据库表的语句
show create table student; CREATE TABLE `student` (\n `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '学号', `name` varchar(30) NOT NULL DEFAULT '' COMMENT '姓名', `pwd` varchar(20) NOT NULL DEFAULT '' COMMENT '密码', `sex` varchar(2) NOT NULL DEFAULT '' COMMENT '性别', `birthday` datetime DEFAULT NULL COMMENT '生日', `address` varchar(100) DEFAULT NULL COMMENT '地址', `email` varchar(50) DEFAULT NULL COMMENT '邮箱', PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8
3.显示表的结构:
desc student; 'id', 'int(4)', 'NO', 'PRI', NULL, 'auto_increment' 'name', 'varchar(30)', 'NO', '', '', '' 'pwd', 'varchar(20)', 'NO', '', '', '' 'sex', 'varchar(2)', 'NO', '', '', '' 'birthday', 'datetime', 'YES', '', NULL, '' 'address', 'varchar(100)', 'YES', '', NULL, '' 'email', 'varchar(50)', 'YES', '', NULL, ''
7.数据表的类型
-- 关于数据库引擎
/*
INNODB 默认使用
MYISAM 早些年使用
*/
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大,约为MYISAM的2倍 |
常规的使用操作:
-
MYISAM 节约空间,速度较快
-
INNODB 安全性高,事务的处理,多表多用户操作
在物理空间存在的位置:
-
所有的数据库文件都存在data目录下,一个文件夹就对应一个数据库
-
本质还是文件的存储
MySQL引擎在物理文件上的区别:
-
InnoDB在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件
-
MYISAM对应的文件
-
*.frm文件 - 表结构的定义文件
-
*.MYD - 数据文件(data)
-
*.MYI - 索引文件(index)
-
设置数据库表的字符集编码:
CHARSET=utf8
不设置的话,会是mysql的默认字符编码(不支持中文)
8.修改删除表
修改
-- 修改表名 alter table table_old_name rename as table_new_name -- 增加表的字段 alter table table_name add 字段名 列属性 -- 给表的字段增加外键约束 alter table table_name add constraint 约束名称 foreign key (`字段名称`) references table_name (`字段名称`) -- 修改表的字段(重命名、修改约束) alter table table_name modify 字段名字 [字段属性] alter table teacher modify age varchar(11) -- 修改约束 alter table table_name change 旧的字段名 新的字段名 [字段属性] alter table teacher change age age1 int(1) -- 字段重命名 -- 删除表的字段 alter table table_name drop 字段名 alter table teacher1 drop age1
change用于字段重命名
modify用来修改字段类型和约束
删除
drop table if exists table_name
所有的创建和删除操作尽量加上判断 ,以免报错
注意点:
-
`` 字段名,使用这个反引号括起来
-
注释 -- /**/
-
-
所有的符号用英文符号,不要用中文符号。
原文地址:https://www.cnblogs.com/yxym2016/p/12680779.html
- 分布式监控系统Zabbix-3.0.3-完整安装记录 - 添加shell脚本监控
- Flash/Flex学习笔记(52):使用TweenLite
- 设计一个界面,很简单!
- 配置Quartz.net Cluster以及远程管理
- [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
- Flash/Flex学习笔记(49):3D基础
- Flash/Flex学习笔记(51):3维旋转与透视变换(PerspectiveProjection)
- Linux系统批量化安装部署之Cobbler
- 解决JQuery中的ready函数冲突
- 关于监视容器我们了解的5件事
- C#检测SqlServer中某张表是否存在
- Cobbler自动化批量安装linux服务器的操作记录
- Twemproxy——针对MemCached与Redis的代理
- 谁适合学Python?学了Python可以做什么工作?
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 互联网视频直播&点播平台RTMP推流组件EasyRTMP在弱网环境下推流稳定吗?会不会有推流失败的问题?
- 安防融合视频云服务EasyCVR集成海康EHome协议实现设备录像回看返回会话ID为-1是什么情况?
- git .gitignore 忽略规则的匹配语法
- vue 初始化高德地图
- js -- 判断数组是否为空?
- 手机没网了,却还能支付,这是什么原理?
- grub异常
- 34.Python字符串替换方法translate
- 35.Python字符串格式运算符%
- 好一个 Spring Boot 开源在线考试系统!解决了我的燃眉之急
- OC基础--数据类型与表达式
- OC基础--字符串
- 编写优雅的 commit message 并自动生成 changelog
- RL实践2——RL环境gym搭建
- 【Java面试总结】多线程