Day10 MySQL基础03

MySQL基础03

-- 容易发生的错误情况:设置了null还设置 DEFAULT(设置了空并添加默认值)
-- 一些括号,`号,以及逗号都得切换英文

-- 一行一行的检查



SHOW CREATE DATABSE school -- 查看创建数据库的语句
CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8 */


SHOW CREATE TABLE student  -- 查看student数据表的定义语句
CREATE TABLE `student` (
  `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
  `name` varchar(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
  `sex` varchar(2) NOT NULL DEFAULT '女' COMMENT '性别',
  `birthday` datetime DEFAULT NULL COMMENT '出生日期',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8



DESC student  -- 显示表的结构

2.5数据表的类型

InnoDB 默认使用

MyISAM 早些年使用的

MyISAMINNODB
实务支持不支持支持
数据行锁定不支持支持
外键约束不支持支持
全文索引支持不支持
表空间的大小较小较大,约为前者的两倍

常规使用操作:

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

在物理空间存在的位置

所有的数据库文件都存在data目录下

本质还是文件的存储

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

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

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

CHARSET=utf8

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


2.6修改删除表

修改、删除

ALTER TABLE teacher RENAME AS LTT      -- 修改表名
-- teacher旧表名
-- LTT新表名


-- 增加表的字段
ALTER TABLE LTT ADD age INT(11)
-- age  字段名
-- (11)列属性



-- 修改表的字段(重命名  修改约束)
ALTER TABLE LTT MODIFY age varchar(11)-- 修改约束
ALTER TABLE LTT CHANGE age age1 INT(1)-- 字段重命名

字段重命名,修改字段类型和约束


-- 修改表的字段
ALTER TABLE LTT DROP age1

-- 删除表
DROP TABLE [IF EXISTS] LTT

-- 所有的创建和删除操作尽量加上判断,以免报错


3.MySQL数据管理(重点)

3.1外键(了解)

方式1,在创建表的时候,增加约束(麻烦,比较复杂)

删除有外键关系的表的时候,必须要先删除引入别人的表(从表),再删除被引用的表

CREATE TABLE `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL  DEFAULT '匿名' COMMENT '姓名',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
`gradeid` INT(10) DEFAULT NULL COMMENT '学生的年级',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
PRIMARY KEY (`id`),
KEY `FK_gradeid`(`gradeid`),
CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

创建表的时候没有外键关系,

ALTER TABLE `student` ADD CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`)

-- ADD CONSTRAINT添加约束
-- FOREIGN KEY外键(作为外键的字段)
-- REFERENCES引用

以上的操作都是物理外键,数据库级别的外键,我们不建议使用(避免数据库过多造成困扰,这里了解即可)

最佳实践

  • 数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)
  • 想使用多张表的数据,想使用外键(程序去实现)

3.2 DML语言(全部记住)

  • 即数据库操作语言
  • 数据库意义:数据存储,数据管理

3.3添加

  • insert 添加
-- 插入语句(添加)(十分常用的话)
INSERT INTO 表名([字段名1,字段名2])VALUES('值1'),('值2')
INSERT INTO `grade`(`gradename`) VALUES('12')
-- 在已有的字段名中添加

-- 由于主键自增我们可以省略(如果不写表的字段,他就会一一匹配)
INSERT INTO 表名 VALUES('值1'),('值2')

-- 一般写插入语句,我们一定要数据和字段一一对应

-- 插入多段字符
INSERT INTO `grade`(`gradename`) VALUES('大一'),('大二'),('大三'),('大四')

INSERT INTO `student`(`name`,`sex`,`gradeid`)VALUES('张三','男','001'),('张1','男','002'),('张2','男','003')

注意事项:

  • 字段是可以省略的,但是后面的值必须要一一对应,不能少
  • 可以同时插入多条数据

3.4修改

  • update 修改

update 修改谁 (条件) set 原来的值=新值

-- 修改数据
UPDATE `student` SET `name`='傻逼' WHERE id='1';

-- 所有的name全改了
UPDATE `student` SET `name`='傻逼' 

-- 修改多个属性
UPDATE `student` SET `name`='傻逼',`sex`='女' WHERE id='1';
操作符含义范围结果
=等于
<>或者!=不等于
>
<
>=
<=
BETWEEN…and…在某个范围内[2,5]
AND&&和
OR||或
-- 通过多个条件定位数据
UPDATE `student` SET `name`='傻逼',`sex`='女' WHERE `name`='张三' AND sex='女'
  • 数据库的列尽量加上 ` 符号
  • 条件,筛选的条件,如果没有指定则会修改所有的列
  • value是一个具体的值,也可以是一个变量
  • 多个设置的属性之间,使用英文逗号隔开
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值