MySQL学习之《操作数据库》

操作数据库

前言

趁着学习MySQL的兴趣十分浓厚,于是我爆肝学习了一天,学了些关于数据库操作的知识,自己码了些笔记。(ps:是看狂神说学习的,大部分笔记都是和网课一起码的,另外强烈安利狂神秦疆老师!!!)

1.0、怎么操作数据库

操作数据库 > 操作数据库中的表 > 操作数据库中表的数据

注意:mysql输入指令不区分大小写

1.1、操作数据库(了解)

1、创建数据库

create database [if not exists] westos

2、删除数据库

drop database [if exists] westos

3、使用数据库

--tab键上面.如果你的表名\字段名是一个特殊字符,就用` `引起来
use `school`

4、查看所有数据库

show databases --查看所有数据库

对比:SQLyog可视化操作

学习思路:

  • 对照SQLyog可视化历史记录查看sql
  • 固定的语法或关键字必须要强行记住!

1.2、数据库的数据(列)类型

数值

  • tinyint 十分小的数据 1个字节
  • smallint 较小的数据 2个字节
  • mediumint 中等大小的数据 3个字节
  • int 标准大小数据 4个字节
  • big 较大的数据 8个字节
  • float 单精度浮点数 4个字节
  • double 双精度浮点数 8个字节
  • decimal 字符串形式的浮点数 金融计算的时候,一般使用decimal

字符串

  • char 固定大小的字符串 0~255
  • varchar 可变字符串 0-65535 对应 java中 String
  • tinytext 微型文本 2^8 ~ 1
  • text 文本串 2^16 ~ 1 保存大文本

时间日期

类似于Java中的java.util.Date

  • date YYYY-MM-DD 日期
  • time HH:mm:ss 时间格式
  • datetime YYYY-MM-DD HH:mm:ss 最常用的时间格式
  • timestamp 时间戳 1970.1.1到现在的毫秒数 较为常用
  • year 年份表示

null

  • 没有值,位置
  • 注意,不要使用NULL进行运算,结果为NULL

1.3、数据库的字段属性(重点)

Unsigned :

  • 无符号的整数
  • 声明了该列不能声明为负数

zerofill:

  • 0填充的
  • 不足的位数,用0来填充

自增:

  • 通常理解为自增,自动在上一条记录的基础上+1 (默认)
  • 通常用来设计唯一的主键,必须是整数类型
  • 可以自定义设计主键自增的起始值和步长

非空 NULL not null

  • 假设设置为 not null ,如果不给它赋值,就会报错
  • NULL,如果不填写值,默认为null

默认

  • 设置默认的值!
  • sex,默认值为 男 ,如果不指定该列的值,则会有默认的值

1.4、创建数据库表

创建一个student的表,内容包括 id ,name , pwd , sex , birthday , address , email

id是表示学号,用int,属性是主键,非空,自增

name表示姓名,用varchar,属性是非空,默认匿名

pwd表示登录密码,用varchar,属性是非空,默认123456

sex表示性别,用varchar,属性是非空,默认男性

birthday表示生日,用datatime,默认是null

address表示地址,用varchar,默认是null

email表示邮箱,用varchar,默认是null

使用InnoDB,utf8,utf8_general_ci

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 '123456' 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

可以用SQLyog反向查看语句

show create database school --查看创建数据库语句
show create table student --产看student数据库表的语句
desc student --显示student表的结构

1.5、数据表的类型

如今默认使用 InnoDB
而早些年使用MYISAM

MYISAM INNODB
事务支持 ×
数据行锁定 ×
外键约束 ×
全文索引 ×
表空间的大小 较小 较大

适用场合:

  • MYISAM:节约空间、速度较快
  • INNODB:安全性、事务处理、多用户操作数据表

在物理空间存在的位置

所有的数据库文件存在data目录下,一个文件夹就对应一个数据库

本质还是文件的存储!

MySQL引擎在物理文件上的区别

  • INNODB 在数据库表中只有一个 *.frm文件,以及上级目录下的 ibdata1文件
  • MYISAM对应文件
    • *.frm 表结构的定义文件
    • *.MYD 数据文件(data)
    • *.MYI 索引文件(index)

设计数据库表的字符集编码

charset=utf8

不设置的话,会是mysql默认字符集编码,Latin1,不支持中文

在my.ini中配置默认编码(不建议)

character-set-server=utf8

1.6、修改删除表

修改

--修改表名 alter table 九标名 rename as 新表名
alter table teacher rename as teacher1
--teacher 旧表名
--teacher1 新表明
--增加表的字段 alter table 表名 add 字段名 列属性
alter table teacher1 add age int(11)
--修改表的字段(重命名,修改约束) modify、change
alter table teacher1 modify age varchar(11) --修改约束
--alter table 表名 modify 字段名 列属性()
alter table teacher1 change age age1 int(1) --字段重命名
--alter table 表名 change 旧字段名 新字段名 列属性()

删除

--删除表的字段 drop
alter table teacher1 drop age1 --删除teacher1中的age1
--删除表(如果表存在再删除)
 drop table if exists teacher1 --一般用 if exists,防止报错!

最后提醒一下注意点

  • 用`` 将字段名引起来
  • 注释 用-- 或 /* */
  • sql关键字大小写不敏感
  • 所有的符号用英文

后话

怎么说呢,学习使我快乐!年前赶快肝进度,毕竟大作业都没怎么动。趁着时间有余,多看些网课,多写点代码,多做点笔记,这样的寒假才算充实且快乐呀!
ps:关于MySQL的配置安装可以参考我的上一篇博客:MySQL学习之《MySQL配置安装》,我的MySQL学习的下一篇博客是:MySQL学习之《数据管理》

猜你喜欢

转载自blog.csdn.net/woodwhale/article/details/113786629