本文章以MySQL为例带你入门SQL语句。
目录
一、 DDL语句
DDL(数据定义语言)是SQL语言的一个组成部分,用于创建、修改和删除数据库中的各种对象,如表、索引和数据库本身。DDL语句的核心功能是定义数据库的结构。
数据库操作
查询所有的数据库
SHOW DATABASES;
(sql语句不区分大小写,但是安装规范关键字应该大写)
值得一提的是安装MySQL并初始化后,默认会创建以下4个数据库:
1. information_schema 用于存储数据库管理系统(DBMS)中的元数据。元数据指的是有关数据库结构、表、列、索引、视图、权限等的信息,而不是存储实际的数据。它是一个虚拟的数据库,允许用户查询数据库对象的相关信息。
具体来说,information_schema
包含了多个系统视图,用户可以通过这些视图获取不同类型的信息。常见的视图包括:
-
TABLES
: 存储数据库中所有表的信息(如表名、所属数据库等)。 -
COLUMNS
: 存储每个表的字段的信息(如字段名、数据类型、是否可为NULL
、默认值等)。 -
KEY_COLUMN_USAGE
: 存储列和主键、外键等约束的关系。 -
SCHEMATA
: 存储所有数据库的信息。 -
VIEWS
: 存储视图的相关信息。 -
USER_PRIVILEGES
: 存储用户权限的相关信息。 -
ROUTINES
: 存储存储过程和函数的信息。 -
CONSTRAINTS
: 存储表约束的相关信息。
这些视图帮助数据库管理员、开发人员和用户查看数据库的结构,而不需要访问内部的数据存储方式。
2. mysql 用于存储与 MySQL 数据库管理系统本身的配置、权限、用户管理以及系统操作相关的信息。这个数据库包含了一些表,用来管理 MySQL 的基本运行机制和控制用户权限。
3. performance_schema 是一个用于收集数据库性能和诊断信息的系统数据库。它提供了一些表,用来监控和分析数据库的性能、资源消耗、查询执行等情况。
4. sys 是一个由 MySQL 提供的辅助数据库,旨在简化和优化从 performance_schema 和其他系统数据库中收集到的性能和诊断信息的查询。它通过对 performance_schema 中的复杂数据进行封装和抽象,提供了易于理解和使用的视图。它不存储实际数据,而是提供了一些用于性能监控、系统诊断和优化的视图和查询。这些视图和查询简化了对性能数据的访问,并帮助数据库管理员(DBA)快速发现潜在的问题。
查询当前数据库
SELECT DATABASE();
当然首先你要先使用数据库,不然会返回NULL,你可以通过以下命令使用指定的数据库:
USE 数据库名;
如果返回Database changed那么就是执行成功了,如果返回的 ERROR 1049 (42000): Unknown database '数据库名' 就说明没有找到你的数据库名
创建数据库
CREATE DATABASE [IF NO EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序];
中括号里面的内容可以省略,这里我们介绍一下中括号里面的是什么意思:
IF NO EXISTS 就是如果数据库存不存在就创建,已经存在就不创建,如果不加这一段的话你在创建与已存在的数据库名称相同的数据库时会报以下错误 ERROR 1007 (HY000): Can't create database '数据库名'; database exists 表示你的数据库已存在
DEFAULT CHARSET 字符集 用来指定默认字符集,默认字符集是 utf8mb4 (从 MySQL 5.7 开始,utf8mb4
成为默认的字符集。推荐使用utf8mb4)
COLLATE 排序 指定排序方式(MySQL 5.7开始,默认为latin1_swedish_ci)
删除数据库
DROP DATABASE [IF EXISTS] 数据库名;
IF EXISTS用于判断数据库是否存在,不存在会报ERROR 1008 (HY000): Can't drop database 'a'; database doesn't exist
使用数据库
之前已经讲过也就是:
USE 数据库名;
表操作
查询当前数据库所有表
SHOW TABLES;
查询表结构
DESC 表名;
查询指定表的建表语句
SHOW CREATE TABLE 表名;
建表
CREATE TABLE 表名(
字段1 字段类型 [COMMENT 字段1注释],
字段2 字段类型 [COMMENT 字段2注释],
......
字段n 字段类型 [COMMENT 字段n注释]
) [COMMENT 表注释];
例如:
id | name | age | gender |
---|---|---|---|
1 | 张三 | 34 | 男 |
2 | 李四 | 35 | 男 |
CREATE TABLE user_info(
id INT COMMENT '编号',
name VARCHAT(50) COMMENT '姓名',
age INT COMMENT '年龄',
gender VARCHART(1) COMMENT '性别'
) COMMENT ‘用户信息’;
添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
例如:
我们对之前的表添加一个邮箱字段
ALTER TABLE user_info ADD email VARCHAR(50) COMMENT '邮箱';
修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度);
删除字段
ALTER TABLE 表名 DROP 字段名;
修改表名
ALTER TABLE 表名 RENAME TO 新表名;
删除表
PROP TABLE [IF EXISTS] 表名;
删除指定表,并重新创建该表
TRUNCATE TABLE 表名;
二、DML语句
主要是对数据进行增加、删除、修改操作。
给指定字段添加数据
INSERT INTO 表名 (字段1,字段2,...) VALUES (值1,值2,...)
给全部字段添加数据
INSERT INTO 表名 VALUES (值1,值2,……);
批量添加
INSERT INTO 表名 (字段1,字段2,...) VALUES (值1,值2,...),(值1,值2,...),(值1,值2,...);
INSERT INTO 表名 VALUES (值1,值2,……),(值1,值2,……),(值1,值2,……);
修改数据
UPDATE 表名 SET 字段名1=值1,字段名2=值2.... [WHERE 条件]; -- 没有条件会修改整张表的数据
例如:
UPDATE tb_user SET email='ansds@163.com' WHERE id=4;
删除数据
DELETE FROM 表名 [WHERE 条件]; -- 没有条件删除整张表的全部数据
DELETE无法删除某一字段的值,想要删除某一字段的值可以使用UPDATE实现:
UPDATE 表名 SET 字段名 = NULL WHERE 条件;