一.认识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;