SQL(Structured Query Language)是一种用于管理和操作关系数据库的标准语言。本文将介绍SQL的四大基本操作:DDL(数据定义语言)、DML(数据操作语言)、DQL(数据查询语言)和DCL(数据控制语言)。
1. DDL(数据定义语言,Data Definition Language)
DDL用于定义和管理数据库结构,包括创建、修改和删除数据库和表。(详细点的可以参考我的上篇,点传送门)
数据库操作
-- 显示所有数据库
SHOW DATABASES;
-- 创建数据库
CREATE DATABASE mydatabase;
-- 使用数据库
USE mydatabase;
-- 显示当前使用的数据库
SELECT DATABASE();
-- 删除数据库
DROP DATABASE mydatabase;
表操作
-- 显示所有表
SHOW TABLES;
-- 创建表
CREATE TABLE staff (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
-- 查看表结构
DESC staff;
-- 显示创建表的SQL语句
SHOW CREATE TABLE staff;
-- 修改表结构
ALTER TABLE staff ADD address VARCHAR(50) COMMENT '家庭住址';
ALTER TABLE emp ADD worktime DATETIME COMMENT '入职时间';
ALTER TABLE emp RENAME TO staff;
-- 删除表
DROP TABLE staff;
2. DML(数据操作语言,Data Manipulation Language)
DML用于对数据库中的数据进行增、删、改操作。
-- 插入数据
INSERT INTO staff (id, workid, name, gender, age, idcard, address, entrydate) VALUES
(1, 'W001', 'Alice', '女', 25, '123456789012345678', '北京', '2023-01-01 09:00:00');
-- 修改数据
UPDATE staff SET idcard = NULL WHERE id = 20;
-- 删除数据
DELETE FROM staff WHERE name = '小王';
DELETE FROM staff; -- 删除表中所有数据
-- DML 数据操作
# 给某一项插入数据
insert into tb_user (id, name, age, gender) values (001,'张三',18,'男');
select * from tb_user;
# 给全部项插入数据,注意顺序对应
insert into tb_user values (2,'李四',20,'男');
# 批量插入数据
insert into tb_user values
(3,'Jack',20,'男'),
(4,'赵敏',19,'女');
#修改数据
update tb_user set name = '小王' ,gender = '女' where id = 1;
# 删除数据
delete from tb_user where name = '小王';
delete from tb_user;#删除表中所有数据
insert into tb_user (id, name, age, gender) values (1,'张三',18,'男');
3. DQL(数据查询语言,Data Query Language)
DQL用于查询数据库中的数据。
基础查询
-- 查询指定列
SELECT name, gender, age FROM staff;
-- 查询所有列
SELECT * FROM staff;
-- 使用别名
SELECT address AS '工作地址' FROM staff;
-- 去重查询
SELECT DISTINCT address AS '工作地址' FROM staff;
条件查询
-- 等值查询
SELECT * FROM staff WHERE age = 33;
-- 范围查询
SELECT * FROM staff WHERE age BETWEEN 20 AND 30;
-- 为空值查询
SELECT * FROM staff WHERE idcard IS NULL;
-- 复合条件查询
SELECT * FROM staff WHERE age <= 40 AND age >= 20;
-- 集合查询
SELECT * FROM staff WHERE age IN (18, 20, 35);
-- 模糊查询
SELECT * FROM staff WHERE name LIKE '_____';
SELECT * FROM staff WHERE idcard LIKE '%1';
比较运算符
-- 大于
SELECT * FROM staff WHERE age > 30;
-- 大于等于
SELECT * FROM staff WHERE age >= 30;
-- 小于
SELECT * FROM staff WHERE age < 30;
-- 小于等于
SELECT * FROM staff WHERE age <= 30;
-- 等于
SELECT * FROM staff WHERE age = 30;
-- 不等于
SELECT * FROM staff WHERE age != 30;
-- 在某个范围之内
SELECT * FROM staff WHERE age BETWEEN 20 AND 30;
-- 在列表中的值
SELECT * FROM staff WHERE age IN (25, 30, 35);
-- 模糊匹配
SELECT * FROM staff WHERE name LIKE 'A%';
-- 是NULL
SELECT * FROM staff WHERE idcard IS NULL;
逻辑运算符
-- 并且
SELECT * FROM staff WHERE age > 20 AND gender = '男';
-- 或者
SELECT * FROM staff WHERE age > 30 OR gender = '女';
-- 非
SELECT * FROM staff WHERE NOT (age > 30);
聚合函数
-- 计数
SELECT COUNT(id) FROM staff;
-- 平均值
SELECT AVG(age) FROM staff;
-- 最大值
SELECT MAX(age) FROM staff;
-- 最小值
SELECT MIN(age) FROM staff;
-- 求和
SELECT SUM(age) FROM staff WHERE address = '西安';
分组查询
-- 按性别分组计数
SELECT gender, COUNT(*) FROM staff GROUP BY gender;
-- 按性别分组计算平均年龄
SELECT gender, AVG(age) FROM staff GROUP BY gender;
-- 按地址分组并筛选
SELECT address, COUNT(*) FROM staff WHERE age < 35 GROUP BY address HAVING COUNT(*) >= 3;
排序查询
-- 按年龄升序排序
SELECT * FROM staff ORDER BY age ASC;
-- 按入职日期降序排序
SELECT * FROM staff ORDER BY entrydate DESC;
-- 复合排序
SELECT * FROM staff ORDER BY age ASC, entrydate DESC;
分页查询
-- 查询前10条记录
SELECT * FROM staff LIMIT 0, 10;
-- 查询第11到第20条记录
SELECT * FROM staff LIMIT 10, 10;
4. DCL(数据控制语言,Data Control Language)
DCL用于控制数据库用户的访问权限。
用户管理
-- 创建用户
CREATE USER 'JJX'@'localhost' IDENTIFIED BY '052506';
CREATE USER 'jjx'@'%' IDENTIFIED BY '123456';
-- 修改密码
ALTER USER 'JJX'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
-- 删除用户
DROP USER 'JJX'@'localhost';
权限管理
-- 查询用户权限
SHOW GRANTS FOR 'jjx'@'%';
-- 授予权限
GRANT ALL ON itheima.* TO 'jjx'@'%';
-- 撤销权限
REVOKE ALL ON itheima.* FROM 'jjx'@'%';
这些sql基础语法是非常重要的,需要熟练掌握运用
5.图形化管理工具(GUI)
在现代数据库管理中,图形化管理工具(GUI)变得越来越流行,毕竟不可能每天对着黑框框写数据库操作吧。这些工具提供了直观的界面,使数据库管理变得更加简单和高效。以下是一些流行的数据库图形化管理工具:
Navicat
Navicat 是一款强大的数据库管理工具,支持多种数据库,包括MySQL、MariaDB、SQL Server、SQLite、Oracle和PostgreSQL等。
优点:
- 多数据库支持:可以同时管理多个不同类型的数据库。
- 直观的用户界面:提供图形化的界面,操作简单直观。
- 强大的功能:包括数据同步、数据传输、数据备份、查询构建器等。
- 跨平台:支持Windows、macOS和Linux。
缺点:
- 收费软件:Navicat是商业软件,需要购买许可证。
DataGrip
DataGrip 是由JetBrains开发的一款专业的数据库管理工具,支持多种数据库,包括MySQL、PostgreSQL、Oracle、SQL Server等。
优点:
- 智能SQL编辑器:提供代码补全、错误检测、代码重构等功能,提高开发效率。
- 数据库导航:可以方便地浏览和管理数据库对象。
- 数据导入导出:支持多种格式的数据导入导出。
- 跨平台:支持Windows、macOS和Linux。
缺点:
- 收费软件:DataGrip是商业软件,需要购买许可证。
选择一种适合自己的工具即可,当然还有其他的,我这里就简单介绍两种,如
MySQL Workbench,pgAdmin,DBeaver,HeidiSQL,phpMyAdmin,SQL Server Management Studio (SSMS),Toad for Oracle,DbVisualizer等等。