[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站视频课程
笔记与源码文件

相关推荐
睡觉的时候不会困19 分钟前
Redis 主从复制详解:原理、配置与主从切换实战
数据库·redis·bootstrap
程序员的世界你不懂2 小时前
【Flask】测试平台开发,新增说明书编写和展示功能 第二十三篇
java·前端·数据库
自学也学好编程2 小时前
【数据库】Redis详解:内存数据库与缓存之王
数据库·redis
JAVA不会写3 小时前
在Mybatis plus中如何使用自定义Sql
数据库·sql
IT 小阿姨(数据库)3 小时前
PgSQL监控死元组和自动清理状态的SQL语句执行报错ERROR: division by zero原因分析和解决方法
linux·运维·数据库·sql·postgresql·centos
ChinaRainbowSea3 小时前
7. LangChain4j + 记忆缓存详细说明
java·数据库·redis·后端·缓存·langchain·ai编程
小马学嵌入式~4 小时前
嵌入式 SQLite 数据库开发笔记
linux·c语言·数据库·笔记·sql·学习·sqlite
Java小白程序员5 小时前
MyBatis基础到高级实践:全方位指南(中)
数据库·mybatis
Monly215 小时前
人大金仓:merge sql error, dbType null, druid-1.2.20
数据库·sql
不宕机的小马达5 小时前
【Mysql|第一篇】Mysql的安装与卸载、Navicat工具的使用
数据库·mysql