MySQL-DDL与DML

一.认识SQL语句


🤡我们在数据库中希望操作数据库中的数据,就需要有和数据库直接沟通的语言,这个语言就是SQL:

  1. SQL称之为结构化查询语言。
  2. 使用SQL编写出来的语句,就称之为SQL语句。
  3. SQL语言用于对数据库进行操作。

😭事实上,常见的关系型数据库SQL语句都是比较相似的,所以你学会了MySQL中的SQL语句,之后去操作oracle或者其他关系型数据库,也是非常的方便。

🔔SQL语句的常用规范:

  1. 通常关键字使用大写的,比如CREATE TABLE SHOW等等;
  2. 一条语句结束后,需要以;结尾;
  3. 如果遇到关键字作为表明或者字段名称可以使用``包裹;

二.SQL语句的分类


😊常见的SQL语句分为四类:

  1. DDL语句:数据定义语言,可以通过DDL语句对数据库或者表进行,创建,删除,修改操作。
  2. DML语句:数据操作语言,可以通过DML语句进行添加,删除,修改等操作。
  3. DQL语句:数据查询语言,可以通过DQL从数据库中查询记录(重点)。
  4. DCL语句:数据控制语言,对数据库,表格的权限进行相关性访问控制操作。

三.DDL之对数据库进行操作


🎯首先我们需要在Navicat的某个数据库下新建一个查询,就可以在查询界面执行相应的SQL语句。

  1. 查看当前所有的数据库;
sql 复制代码
SHOW DATABASES;
  1. 使用某一个数据库
sql 复制代码
USE coderhub;
  1. 查看当前使用的数据库;
sql 复制代码
SELECT DATABASE();
  1. 创建一个数据,但是这样当有了这个数据库的时候会报错的,我们更推荐使用下方的写法。
sql 复制代码
CREATE DATABASE IF NOT EXISTS mycode;
  1. 删除某一个数据库,如果数据库不存在就会报错,我们需要判断是否存在。
sql 复制代码
DROP DATABASE IF EXISTS mycode;
  1. 修改数据库(不常用了解即可)
sql 复制代码
ALTER DATABASE coderhub CHARACTER SET = utf8 COLLATE = utf8_unicode_ci;

四.DDL之对表进行操作


🥴查看当前数据库中有哪些表。

sql 复制代码
SHOW TABLES;

🎪查看某张表的结构。

sql 复制代码
DESC user;

😶‍🌫️创建一张新的表。

sql 复制代码
CREATE TABLE IF NOT EXISTS `grades`(
  name VARCHAR(10),
  age INT,
  height DOUBLE
)

😊删除某张表

sql 复制代码
DROP TABLE IF EXISTS `user`;

🥴创建一个完整的表结构

sql 复制代码
CREATE TABLE IF NOT EXISTS `myuser`(
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(20) UNIQUE NOT NULL,
  level INT DEFAULT 0,
  telPhone VARCHAR(20) UNIQUE NOT NULL
);

五.SQL数据类型-数字类型


👽我们知道不同的数据类型的数据会划分为不同的数据类型,在数据库中也一样,MySQL支持的数据库的书库类型有:数字类型日期和时间字符串类型(字符和字节)空间类型和JSON数据类型。

  1. 数字类型:MySQL对数字类型支持的有很多
  1. 浮点数字类型:FLOAT DOUBLE(FLOAT是四个字节,DOUBLE是八个字节)
  2. 精确数据类型:DECIMAL NUMBERIC(DECIMAL是NUMERIC的实现形式)

六.SQL数据类型-日期类型


🤡MYSQL的日期类型也很多

  1. YEAR以YYYY格式显示范围是1901到2155,和0000;
  2. DATE类型用于具有日期部分但是没有时间部分的值,显示格式是YYYY-MM-DD显示值。
  3. DATETIME用于表示具有时间部分的日期,格式是YYYY-MM-DD hh:mm:ss显示值。
  4. TIMESTAMP数据用于包含日期时间的值,但是范围是UTC的时间范围1970-2038。

七.SQL数据类型-字符串类型


😭MySQL的字符串类型表示方式如下:

  1. CHAR类型在创建表时为固定长度,长度可以是0-255之间的任意值,在查询时候会删除后面的空格。
  2. VARCHAR类型的值是可变长度的字符串,长度可以指定0-65535之间的值,在被查询时候不会删除空格。
  3. BINARYVARBINARY类型用于存储二进制字符串,存储的是字节字符串。
  4. BLOB用于存储的二进制类型。
  5. TEXT用于存储大的字符串类型。

八.表约束


😊PRIMARY KEY:主键,在一张表中我们为了区分每一条数据的唯一性,必须有一个字段是永远不会重复的,并且不能为空,这个字段我们通常将它设置为主键。

  1. 主键是表中唯一的索引;
  2. 并且必须是NOT NULL的,如果没有设置NOT NULL,那么MySQL也会隐式设置为NOT NULL;
  3. 主键也可以是多列索引,PRMARY KEY(key_part...)我们一般称之为联合主键。
  4. 建议:开发中的组件字段应该是和业务无关的,尽量不要使用业务字段来做主键。

📆UNIQUE:某些字段在开发中我们希望是唯一的,不会重复的,

  1. 比如手机号,身份证号码,这些字段我们使用UNIQUE来约束,使用UNIQUE字段在表中必须是不同的。
  2. UNIQUE索引允许NULL包含的列具有多个值NULL。

🔔NOT NULL:不能为空。

  1. 某些字段我们要求用户必须插入值,不可以为空,这个时候我们就可以使用NOT NULL来约束。

🎯DEFAULT:默认值

  1. 某些字段我们希望在没有设置值的时候给予一个默认值,这个时候我们就可以使用DEFAULT来完成。

🎪AUTO_INCREMENT:自动增长。

  1. 某些字段我们不希望设置值的时候我们可以使用自动增长。

🚨外键也是最常见的一种表约束,等我们讲到多表关系的时候再进行讲解。

九.修改表结构


😊修改表结构:修改表名。

sql 复制代码
ALTER TABLE `myuser` RENAME TO `user`;

👽添加一个新的列

sql 复制代码
ALTER TABLE `user` ADD `publishTime` DATETIME;
ALTER TABLE `user` ADD `updateTime` DATETIME;

😶‍🌫️删除一列数据

sql 复制代码
ALTER TABLE `user` DROP `updateTime`;

🎯修改列的名称

sql 复制代码
ALTER TABLE `user` CHANGE `publishTime` `publishDate` DATE;

🤡修改列的数据类型

sql 复制代码
ALTER TABLE `user` MODIFY `id` INT;

十.什么是DML语句


🤡DML语句是数据库中的作用是进行数据库的操作,也被称为数据库操作语句。

sql 复制代码
CREATE TABLE IF NOT EXISTS `products`(
  `id` INT PRIMARY KEY AUTO_INCREMENT,
  `title` VARCHAR(20),
  `decription` VARCHAR(200),
  `price` DOUBLE,
  `publishTime` DATETIME  
)

十一.插入数据


😁DML插入语句,向数据库中插入一条数据。

sql 复制代码
INSERT INTO `products`(title,decription,price,publishTime) VALUES ('iphone100','iphone100只要价格998',998,'2021-10-09');
INSERT INTO `products`(title,decription,price,publishTime) VALUES ('huawei','huawei-mate70价格只要1000',1000,'2021-10-10');
INSERT INTO `products`(title,decription,price,publishTime) VALUES('vivo','vivo x60只需要1200',1200,'2021-10-11');

十二.删除数据


🥴删除表中的所有的数据,(谨慎使用)

sql 复制代码
DELETE from 'products';

👽根据id删除一条数据。

sql 复制代码
DELETE FROM `products` WHERE id = 3;

十三.修改数据


🎯更改表中的某个字段。

sql 复制代码
UPDATE `products` SET decription = '假的别买';

🎪更改表中的某个具体字段。

sql 复制代码
UPDATE `products` SET decription = '好手机666' WHERE id=2;

😶‍🌫️当我们修改某一个数据的时候,显示最新的时间。

sql 复制代码
ALTER TABLE `products` ADD `updateTime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

相关推荐
光影少年32 分钟前
react和vue图片懒加载及实现原理
前端·vue.js·react.js
AndyGoWei34 分钟前
react react-router-dom history 实现原理,看这篇就够了
前端·javascript·react.js
小仓桑37 分钟前
深入理解 JavaScript 中的 AbortController
前端·javascript
摸鱼也很难39 分钟前
解决 node.js 执行 npm下载 报无法执行脚本的错
前端·npm·node.js
换个名字不能让人发现我在摸鱼39 分钟前
裁剪保存的图片黑边问题
前端·javascript
PeterJXL42 分钟前
pnpm:包管理的新星,平替 npm 和 yarn
前端·npm·node.js·pnpm
小牛itbull42 分钟前
Mono Repository方案与ReactPress的PNPM实践
开发语言·前端·javascript·reactpress
黑色的糖果43 分钟前
vue2封装自定义插件并上传npm发布及使用
前端·npm·node.js
afabama1 小时前
nvm 安装某个版本的node,缺少npm包
前端·npm·node.js