一.认识SQL语句
🤡我们在数据库中希望操作数据库中的数据,就需要有和数据库直接沟通的语言,这个语言就是SQL:
- SQL称之为结构化查询语言。
- 使用SQL编写出来的语句,就称之为SQL语句。
- SQL语言用于对数据库进行操作。
😭事实上,常见的关系型数据库SQL语句都是比较相似的,所以你学会了MySQL中的SQL语句,之后去操作oracle或者其他关系型数据库,也是非常的方便。
🔔SQL语句的常用规范:
- 通常关键字使用大写的,比如CREATE TABLE SHOW等等;
- 一条语句结束后,需要以;结尾;
- 如果遇到关键字作为表明或者字段名称可以使用``包裹;
二.SQL语句的分类
😊常见的SQL语句分为四类:
- DDL语句:数据定义语言,可以通过DDL语句对数据库或者表进行,创建,删除,修改操作。
- DML语句:数据操作语言,可以通过DML语句进行添加,删除,修改等操作。
- DQL语句:数据查询语言,可以通过DQL从数据库中查询记录(重点)。
- DCL语句:数据控制语言,对数据库,表格的权限进行相关性访问控制操作。
三.DDL之对数据库进行操作
🎯首先我们需要在Navicat的某个数据库下新建一个查询,就可以在查询界面执行相应的SQL语句。
- 查看当前所有的数据库;
sql
SHOW DATABASES;
- 使用某一个数据库
sql
USE coderhub;
- 查看当前使用的数据库;
sql
SELECT DATABASE();
- 创建一个数据,但是这样当有了这个数据库的时候会报错的,我们更推荐使用下方的写法。
sql
CREATE DATABASE IF NOT EXISTS mycode;
- 删除某一个数据库,如果数据库不存在就会报错,我们需要判断是否存在。
sql
DROP DATABASE IF EXISTS mycode;
- 修改数据库(不常用了解即可)
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数据类型。
- 数字类型:MySQL对数字类型支持的有很多
- 浮点数字类型:FLOAT DOUBLE(FLOAT是四个字节,DOUBLE是八个字节)
- 精确数据类型:DECIMAL NUMBERIC(DECIMAL是NUMERIC的实现形式)
六.SQL数据类型-日期类型
🤡MYSQL的日期类型也很多
- YEAR以YYYY格式显示范围是1901到2155,和0000;
- DATE类型用于具有日期部分但是没有时间部分的值,显示格式是YYYY-MM-DD显示值。
- DATETIME用于表示具有时间部分的日期,格式是YYYY-MM-DD hh:mm:ss显示值。
- TIMESTAMP数据用于包含日期时间的值,但是范围是UTC的时间范围1970-2038。
七.SQL数据类型-字符串类型
😭MySQL的字符串类型表示方式如下:
- CHAR类型在创建表时为固定长度,长度可以是0-255之间的任意值,在查询时候会删除后面的空格。
- VARCHAR类型的值是可变长度的字符串,长度可以指定0-65535之间的值,在被查询时候不会删除空格。
- BINARY 和VARBINARY类型用于存储二进制字符串,存储的是字节字符串。
- BLOB用于存储的二进制类型。
- TEXT用于存储大的字符串类型。
八.表约束
😊PRIMARY KEY:主键,在一张表中我们为了区分每一条数据的唯一性,必须有一个字段是永远不会重复的,并且不能为空,这个字段我们通常将它设置为主键。
- 主键是表中唯一的索引;
- 并且必须是NOT NULL的,如果没有设置NOT NULL,那么MySQL也会隐式设置为NOT NULL;
- 主键也可以是多列索引,PRMARY KEY(key_part...)我们一般称之为联合主键。
- 建议:开发中的组件字段应该是和业务无关的,尽量不要使用业务字段来做主键。
📆UNIQUE:某些字段在开发中我们希望是唯一的,不会重复的,
- 比如手机号,身份证号码,这些字段我们使用UNIQUE来约束,使用UNIQUE字段在表中必须是不同的。
- UNIQUE索引允许NULL包含的列具有多个值NULL。
🔔NOT NULL:不能为空。
- 某些字段我们要求用户必须插入值,不可以为空,这个时候我们就可以使用NOT NULL来约束。
🎯DEFAULT:默认值
- 某些字段我们希望在没有设置值的时候给予一个默认值,这个时候我们就可以使用DEFAULT来完成。
🎪AUTO_INCREMENT:自动增长。
- 某些字段我们不希望设置值的时候我们可以使用自动增长。
🚨外键也是最常见的一种表约束,等我们讲到多表关系的时候再进行讲解。
九.修改表结构
😊修改表结构:修改表名。
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;