Mysql-02-操作数据库

操作数据库

1. 结构化语言分类

1
操作数据库 > 操作表 > 操作表中的字段

几个基本的数据库操作命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*
update user set password=password('123456')where user='root'; 修改密码
flush privileges; 刷新数据库
show databases; 显示所有数据库
use dbname; 打开某个数据库
show tables; 显示数据库mysql中所有的表
describe user; 显示表mysql数据库中user表的列信息
create database name; 创建数据库
use databasename; 选择数据库

exit; 退出Mysql
? 命令关键词 : 寻求帮助
# 表示注释
*/

2. DDL语言

2.1 操作数据库

1
2
3
4
5
6
7
创建数据库 :  create database [if not exists] 数据库名; 

删除数据库 : drop database [if exists] 数据库名;

查看数据库 : show databases;

使用数据库 : use 数据库名;

3 数据库的列类型

数值

1
2
3
4
5
6
7
8
9
10
11
整数
tinyint --十分小的数据 1个字节
smallint --较小的数据 2个字节
mediumint --中等大小的数据 3个字节
int --标准的整数 4个字节 (常用)
bigint --较大的数据 8个字节

小数
float --浮点数 4个字节
double --浮点数 8个字节
decimal --(字符串形式的浮点数) 金融计算使用

字符串

1
2
3
4
char      --字符串       固定大小0-255
varchar --可变字符串 0-65535 (常用)
tinytext --微型文本 2^8-1
text --文本串 2^16-1

时间日期

1
2
3
4
5
date       YYYY-MM-DD	        日期格式
time HH:MM:SS 时间格式
datetime YYYY-MM-DD HH:MM:SS 最常用的 (常用)
timestamp 时间戳 格林威治时间 1970-1-1 到现在的毫秒数(常用)
year 年份表示

null

1
2
没有值   表示未知的值
=====注意:不要使用null进行数值运算,运算的结果都会是Null

4 数据库的字段属性 (重要!!!)

1
2
3
4
5
6
Unsigned       无符号的整数   声明了该列不能是负数
zerofill 0填充的
auto_increment 自增 通常设置是主键 通常可以设置主键的起始值和步长
null 默认设置
not null 非空 如果使用,不填值的话会报错
default 设置默认值 如果不指定值,则会有默认的值

5.1 创建表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 目标 : 创建一个school数据库
# 创建学生表(列,字段)
# 学号int 登录密码varchar(20) 姓名,性别varchar(2),出生日期(datatime),家庭住址,email
# 创建表之前 , 一定要先选择数据库


DROP TABLE IF EXISTS `student`

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 '123345' COMMENT '密码',
`gender` 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

# 逆向操作(重要)
# 查看数据库的定义
SHOW CREATE DATABASE school;
# 查看数据表的定义
SHOW CREATE TABLE student;
# 显示表结构
DESC student;
# 设置严格检查模式(不能容错了)
SET sql_mode='STRICT_TRANS_TABLES';

5.2 修改删除表

修改表(ALTER TABLE)

  • 修改表名:
1
ALTER TABLE 旧表名 RENAME AS 新表名
  • 添加字段:
1
ALTER TABLE 表名 ADD 字段名 列属性[属性值]
  • 修改字段:
1
ALTER TABLE 表名 MODIFY 字段名 列属性[属性值]
  • 删除字段:
1
ALTER TABLE 表名 DROP 字段名

删除表(Drop TABLE)

1
2
3
--语法:DROP TABLE [IF EXISTS] 表名
--IF EXISTS为可选 , 判断是否存在该数据表
--如删除不存在的数据表会抛出错误

6. 关于数据引擎

MySQL的数据表的类型 : MyISAM , InnoDB , HEAP , BOB , CSV等…

常见的 MyISAM 与 InnoDB 类型

MyISAM InnoDB
事物支持 不支持 支持
数据行锁定 不支持 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间的大小 较小 较大,约为MyISAM的两倍

常规使用操作:

  1. MYISAM 节约空间,速度较快
  2. INNODB 安全性高,支持事务的处理,多表多用户操作

Mysql引擎在物理空间的区别

MySQL数据表以文件方式存放在磁盘中

  • 包括表文件 , 数据文件 , 以及数据库的选项文件

  • 位置 : Mysql安装目录\data\下存放数据表 . 目录名对应数据库名 , 该目录下文件名对应数据表 .

  • InnoDB类型数据表只有一个 *.frm文件 , 以及上一级目录的ibdata1文件

    • .frm 存放表结构
    • .ibd 存放数据
  • MyISAM类型数据表对应三个文件 :

    • * . frm – 表结构定义文件
    • * . MYD – 数据文件(data)
    • * . MYI – 索引文件(index)

7. 设置数据库表的字符集编码

charset = utf8

可为数据库,数据表,数据列设定不同的字符集

设定方法 :

  • 创建时通过命令来设置 , 如 :CREATE TABLE 表名()CHARSET = utf8;
  • 如无设定 , 则根据MySQL数据库配置文件my.ini中的参数设定
打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2019-2022 Zhuuu
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信