[JavaWeb]SQL介绍-DDL语句

SQL介绍-DDL语句

一.SQL简介

1.简介

  • SQL: Structured Query Language--结构化查询语言
  • 用来操作关系型数据库的编程语言, 定义了关系型数据库的统一标准
  • 每一种数据库可能有不一样的语法, 我们称其为"方言"

2.SQL通用语法

  • SQL语句可以单行或多行书写,以分号结尾
  • MySQL语句不区分大小写, 但是关键字建议用大写
  • 注释:
    单行注释-- 注释内容(--后必须有空格)或#注释内容(MySQL特有)(#后可以没有空格)
    多行注释/*注释*/

3.SQL语言的分类

  • DDL(Data Definition Laguage)数据定义语言,用来定义数据对象: 数据库, 表, 列等
  • DML(Data Manipulation Laguage)数据操作语言, 用来对数据库中表的数据进行增删改
  • DQL(Data Query Language)数据查询语言, 用来查询数据库中的记录(数据)
  • DCL(Data Control Language)数据控制语言, 用来定义数据库的访问权限和安全级别, 以及创建用户

二.DDL-操作数据库与表

1.DDL操作数据库

动作 SQL语句
查询数据库 SHOW DATABASES;
创建数据库 CREATE DATABASE 数据库名称;
创建(判断是否已经存在) CREATE DATABASE IF NOT EXISTS 数据库名称;
删除数据库 DROP DATABASE 数据库名称;
删除(判断是否还存在) DROP DATABASE IF EXISTS 数据库名称;
查看当前使用的数据库 SELECT DATABASE();
使用数据库 USE 数据库名称;

2.DDL操作表

①.查询表(Retrieve)

  • 查询当前数据库下所有表的名称SHOW TABLES;
  • 查询表结构DESC 表名称;

②.创建表(Create)

  • 创建表用CREATE TABLE 表名来进行创建具体语法如下
sql 复制代码
create table 表名 (
	字段名1 数据类型1,
	字段名2 数据类型2,
	...,
	字段名n 数据类型n
);
  • SQL的数据类型基本可以分为三类
    数值型
    日期型
    字符串型

案例练习:

sql 复制代码
create table student(
   
   id int,
   name varchar(10),
   gender char(1),
   birthday date,
   score double(5,2),
   email varchar(64),
   tel varchar(15),
   status tinyint

);

③.修改表(Update)

  • 修改表的命令一般以ALTER TABLE开头具体可以分为
操作 语法
修改表名 ALTER TABLE 表名 RENAME TO 新表名;
添加一列 ALTER TABLE 表名 ADD 列名 数据类型;
修改数据类型 ALTER TABLE 表名 MODIFY 列名 新数据类型;
修改列名和数据类型 ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
删除列 ALTER TABLE 表名 DROP 列名;

④.删除表(Delete)

  • 删除表DROP TABLE 表名;
  • 删除时判断是否存在DROP TABLE IF EXISTS 表名;

三.Navicat的安装与使用

  • Navicat for MySQL是管理和开发MySQL或MariaDB的理想解决方案.
  • 它为开发者提供了一款直观而强大的图形界面.
  • 官网链接: http://www.navicat.com.cn

    安装完成后直接打开,填写需要连接的ip与主机的地址
    如果连接过程提示报错,可以参看这个博主的文章
  • 登录成功后可以通过Navicat来查看MySQL的数据库了

四.DML-操作表数据

1.添加(Insert)

说明 语法
给指定的列添加数据 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,...)...;
sql 复制代码
-- 查询所有数据
SELECT
	*
FROM
	stu;

-- 给指定列添加数据 INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...);
INSERT INTO stu (id, NAME)
VALUES
	(1, '叶子');

-- 给所有列添加数据(可以省略列名的列表)INSERT INTO 表名 VALUES(值1,值2,...);
INSERT INTO stu
VALUES
	(
		2,
		'老黄',
		'男',
		'1997-07-24',
		99.1,
		'14587138@qq.com',
		'11929305651',
		1
	);

-- 批量添加,其实就是把之前的括号中的内容多次执行
INSERT INTO stu
VALUES
	(
		3,
		'罗磊',
		'男',
		'1997-05-24',
		110.1,
		'14333138@qq.com',
		'11929467551',
		1
	),(
		4,
		'娟老师',
		'女',
		'1999-04-14',
		120.1,
		'556587138@qq.com',
		'1349305651',
		1
	),(
		5,
		'雷der',
		'男',
		'1993-04-24',
		130.1,
		'16487138@qq.com',
		'17629305651',
		1
	);

SELECT
	*
FROM
	stu;

2.修改(Update)

  • 语法UPDATE 表名 SET 列名1=值1,列名2=值2,... [WHERE 条件];
sql 复制代码
-- 将表中 老黄的邮箱改为163邮箱
UPDATE stu SET email = 'finsq@163.com' WHERE id=2;

-- 将表中老黄的分数改为100,电话改为110,状态改为3
UPDATE stu SET score=100,tel=110,`status`=3 WHERE name='老黄';

-- 注意:如果update语句中不添加where条件,则会修改表中的所有数据!!!!

3.删除(Delete)

  • 与修改相似DELETE FROM 表名 [WHERE 条件];
sql 复制代码
-- 删除表中 '雷der'相关的数据
DELETE FROM stu WHERE name='雷der';

SELECT * FROM stu;
-- 如果不加where限制会清除所有表数据

五.DQL-查询表数据

复制代码
SELECT
  字段列表
FROM
  表名列表
WHERE
  条件列表
GROUP BY
  分组字段
HAVING
  分组后条件
ORDER BY
  排序字段
LIMIT
  分页限定

1.基础查询

说明 语法
查询多个字段 SELECT 字段列表 FROM 表名; SELECT * FROM 表名; -- 查询所有数据
去除重复记录 SELECT DISTINCT 字段列表 FROM 表名;
起别名 AS: -- AS也可以省略
sql 复制代码
-- 先建立新的表
drop table if exists stu;
-- 创建stu表
CREATE TABLE stu (
id int,-- 编号
name varchar(20),-- 姓名
age int,-- 年龄
sex varchar(5),-- 性别
address varchar(100),-- 地址,
math double(5,2),-- 数学成绩,
english double(5,2),-- 英语成绩
hire_date date -- 入学时间
);

-- 添加数据
INSERT INTO stu(id,NAME,age,sex,address,math,english,hire_date)
VALUES
(1,'马运',55,'男','杭州',66,78,'1995-09-01'), 
(2,'马花疼',45,'女','深圳',98,87,'1998-09-01'),
(3,'马斯克',55,'男','香港',56,77,'1999-09-02'),
(4,'柳白',28,'女','湖南',76,65,'1997-09-05'),
(5,'柳青',2,'男','湖南',86,NULL,'1998-09-01'),
(6,'刘德花',57,'男','香港',99,99,'1998-09-01'),
(7,'张学右',22,'女','香港',99,99,'1998-09-01'),
(8,'德玛西亚',18,'男','南京',56,65,'1994-09-02');
SELECT * FROM stu;

B站视频课程
笔记与源码文件

相关推荐
数据技术说5 分钟前
数据库缓存架构深度解析:命中率、一致性、多层缓存管理
数据库·架构
CJi0NG1 小时前
【自用】MySQL-多表查询
数据库·mysql
雨落在了我的手上1 小时前
MySQL数据库基础(12):事务
数据库·mysql
D姐聊门店1 小时前
门店收银系统断网兜底怎么设计:本地账本、离线续传与日终对账的工程实现
数据库·saas
用户8662978480081 小时前
抓包看 KingbaseES 内部协议?官方给了个现成工具
数据库
wefg12 小时前
【Redis】安装与启动
数据库·redis·缓存
大圣编蚕2 小时前
常见的 Redis 面试题(高频整理)
数据库·redis·缓存
派小心.2 小时前
网站统计采样数据的误差核对
大数据·服务器·前端·数据库·人工智能·小程序·数据分析
龙腾AI白云3 小时前
数字孪生、具身智能、世界模型三者交叉
数据库·人工智能·机器学习·flask·pygame
SelectDB技术团队3 小时前
Apache Doris 基于 Lance 的向量检索深度解析
数据库·数据仓库·数据分析·湖仓一体·apache doris·lakehouse·多模湖仓