MYSQL------sql基础

SQL基础与简介

  • 定义:SQL即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,用于存取数据以及查询、更新和管理关系数据库系统。
  • 作用:可以用于数据库的创建、数据的插入、查询、更新和删除等操作,还能进行数据的统计分析、权限控制等。
  • 特点:语法简单易学,非过程化,只需提出"做什么",无需指明"怎么做",集合操作能力强,能对一组数据进行操作。

MySQL使用入门

  • 安装:可从MySQL官方网站下载对应操作系统的安装包,按照安装向导进行安装。
  • 连接数据库:安装完成后,可使用命令行工具或图形化工具(如Navicat、MySQL Workbench)连接到MySQL数据库。
  • 基本操作 :创建数据库使用CREATE DATABASE语句;创建表使用CREATE TABLE语句;插入数据使用INSERT INTO语句;查询数据使用SELECT语句;更新数据使用UPDATE语句;删除数据使用DELETE FROM语句。

SQL分类

  • 数据定义语言(DDL) :用于定义数据库对象,如数据库、表、视图、索引等,主要语句有CREATEALTERDROP等。
  • 数据操纵语言(DML) :用于对数据库中的数据进行操作,包括插入、查询、更新和删除数据,主要语句有SELECTINSERTUPDATEDELETE
  • 数据控制语言(DCL) :用于控制对数据库中数据的访问和操作权限,主要语句有GRANTREVOKE
  • 事务控制语言(TCL) :用于管理数据库事务,如提交事务COMMIT、回滚事务ROLLBACK等。

SQL语句

常见SQL语句包括数据查询语句、数据更新语句等。如查询语句SELECT * FROM table_name WHERE condition;更新语句UPDATE table_name SET column1=value1,column2=value2 WHERE condition;插入语句INSERT INTO table_name (column1,column2,column3) VALUES (value1,value2,value3);删除语句DELETE FROM table_name WHERE condition

DDL语句

  • CREATE :创建数据库CREATE DATABASE database_name;创建表CREATE TABLE table_name (column1 type1, column2 type2)
  • ALTER :添加列ALTER TABLE table_name ADD column_name column_type;修改列类型ALTER TABLE table_name MODIFY column_name new_type;删除列ALTER TABLE table_name DROP COLUMN column_name
  • DROP :删除数据库DROP DATABASE database_name;删除表DROP TABLE table_name

DML语句

  • SELECT :查询所有列SELECT * FROM table_name;条件查询SELECT column1,column2 FROM table_name WHERE condition
  • INSERT :插入一条记录INSERT INTO table_name (column1,column2) VALUES (value1,value2);插入多条记录INSERT INTO table_name (column1,column2) VALUES (value1,value2),(value3,value4)
  • UPDATE :更新一条记录UPDATE table_name SET column1=value1 WHERE condition;更新多条记录UPDATE table_name SET column1=value1,column2=value2 WHERE condition
  • DELETE :删除一条记录DELETE FROM table_name WHERE condition;删除表中所有记录DELETE FROM table_name

DCL语句

  • GRANT :授予权限GRANT SELECT,INSERT ON table_name TO user_name,表示授予用户对表的查询和插入权限。
  • REVOKE :撤销权限REVOKE SELECT ON table_name FROM user_name,表示撤销用户对表的查询权限。

帮助的使用

  • MySQL命令行帮助 :在MySQL命令行中,可使用HELP命令获取帮助,如HELP SELECT可查看SELECT语句的帮助信息。
  • 官方文档:MySQL官方网站有详细的文档,涵盖了安装、配置、使用等各个方面的内容,可根据需求查找相关信息。

按照层次看帮助

可以从基础概念开始,逐步深入到具体的语句和操作。先了解SQL的基本概念、数据库的基本结构等基础知识,再学习各类SQL语句的语法和用法,最后学习高级特性和优化技巧等。

快速查询帮助

可利用搜索引擎,输入关键词,如"MySQL SELECT语句用法",快速找到相关的教程和文档。也可在技术论坛和社区中提问,如Stack Overflow、CSDN等,向其他开发者请教。

以下是各类 SQL 语句的代码示例,基于 MySQL 8.0 运行:

DDL(数据定义语言)示例

  1. 创建数据库
sql 复制代码
-- 创建一个名为 test_db 的数据库
CREATE DATABASE test_db;
  1. 创建表
sql 复制代码
-- 使用 test_db 数据库
USE test_db;
-- 创建名为 students 的表,包含 id(主键,自增长整数)、name(字符串)、age(整数) 三个字段
CREATE TABLE students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);
  1. 修改表结构
sql 复制代码
-- 给 students 表添加一个新的 gender 字段,类型为 CHAR(1)
ALTER TABLE students ADD COLUMN gender CHAR(1);
  1. 删除表
sql 复制代码
-- 删除 students 表
DROP TABLE students;
  1. 删除数据库
sql 复制代码
-- 删除 test_db 数据库,前提是数据库为空或者你确认要删除其中的数据
DROP DATABASE test_db;

DML(数据操纵语言)示例

  1. 插入数据
sql 复制代码
-- 向 students 表插入一条记录
INSERT INTO students (name, age, gender) VALUES ('Alice', 20, 'F');
-- 插入多条记录
INSERT INTO students (name, age, gender) VALUES 
('Bob', 22, 'M'),
('Cindy', 21, 'F');
  1. 查询数据
sql 复制代码
-- 查询 students 表所有记录
SELECT * FROM students;
-- 按条件查询,查询年龄大于 20 岁的学生
SELECT * FROM students WHERE age > 20;
  1. 更新数据
sql 复制代码
-- 将名字为 'Bob' 的学生年龄更新为 23
UPDATE students SET age = 23 WHERE name = 'Bob';
  1. 删除数据
sql 复制代码
-- 删除名字为 'Cindy' 的学生记录
DELETE FROM students WHERE name = 'Cindy';

DCL(数据控制语言)示例

  1. 授予权限
sql 复制代码
-- 创建一个新用户 'test_user',密码为 'test123'
CREATE USER 'test_user' IDENTIFIED BY 'test123';
-- 授予 'test_user' 对 test_db 数据库中 students 表的查询权限
GRANT SELECT ON test_db.students TO 'test_user';
  1. 撤销权限
sql 复制代码
-- 撤销 'test_user' 对 test_db 数据库中 students 表的查询权限
REVOKE SELECT ON test_db.students FROM 'test_user';
相关推荐
学地理的小胖砸8 小时前
【Python 操作 MySQL 数据库】
数据库·python·mysql
不知几秋8 小时前
sqlilab-Less-18
sql
数据库幼崽9 小时前
MySQL 8.0 OCP 1Z0-908 121-130题
数据库·mysql·ocp
Amctwd9 小时前
【SQL】如何在 SQL 中统计结构化字符串的特征频率
数据库·sql
betazhou10 小时前
基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL
linux·数据库·mysql·oracle·ogg
喝醉的小喵11 小时前
【mysql】并发 Insert 的死锁问题 第二弹
数据库·后端·mysql·死锁
付出不多12 小时前
Linux——mysql主从复制与读写分离
数据库·mysql
源远流长jerry13 小时前
MySQL的缓存策略
数据库·mysql·缓存
初次见面我叫泰隆13 小时前
MySQL——3、数据类型
数据库·mysql
zxrhhm13 小时前
Oracle 中的虚拟列Virtual Columns和PostgreSQL Generated Columns生成列
postgresql·oracle·vr