好程序员Java分享MySQL之SQL入门(一)
来源:SegmentFault
时间:2023-01-21 19:27:43 295浏览 收藏
本篇文章向大家介绍《好程序员Java分享MySQL之SQL入门(一)》,主要包括MySQL,具有一定的参考价值,需要的朋友可以参考一下。
好程序员Java培训分享MySQL之SQL入门(一)前言:各种版本的数据库中,有一种通用的语言用于管理数据库中的数据,它就是SQL,本章我们将学习基本的SQL语句。
SQL的概述
Structured Query Language 结构化查询语言,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
各种主流的数据库系统都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用,但大部分是相同的,后面我们学习的是MySQL的版本,掌握SQL主要语法之后,要迁移到其它数据库也是比较容易的。
结构化查询语言包含6个部分:
一:数据查询语言(DQL:Data Query Language):
其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。
二:数据操作语言(DML:Data Manipulation Language):
其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。
三:事务处理语言(TPL):
它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。
四:数据控制语言(DCL):
它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
五:数据定义语言(DDL):
其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
六:指针控制语言(CCL):
它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
本章我们主要介绍的是DDL和DML。
MySQL数据库的操作
创建数据库的基本语法是:
create database 数据库名;
还可以给数据库指定默认的字符集以及排序规则:
create database 数据库名
default character set 字符集 collate 排序规则;
选择数据库
use 数据库名;
修改数据库的字符集和排序规则:
alter database 数据库名
default character set 字符集 collate 排序规则;
删除数据库:
drop database 数据库名;
删除时检查数据库是否存在:
drop database if exists 数据库名;
代码示例:
1.-- 删除数据库
2.drop database if exists java1903;
3.-- 创建数据库
4.create database java1903
5.default character set utf8mb4
6.collate utf8mb4_general_ci;
7.-- 使用数据库
8.use java1903;
MySQL常见的数据类型
创建好数据库后,我们就需要建表,建表我们需要设置字段的数据类型,我们先来了解MySQL中常见的数据类型。
类型名称
说明
存储需求
TINYINT
很小的整数
1个字节
SMALLINT
小的整数
2个宇节
MEDIUMINT
中等大小的整数
3个字节
INT (INTEGHR)
普通大小的整数
4个字节
BIGINT
大整数
8个字节
2)小数类型
类型名称
说明
存储需求
FLOAT
单精度浮点数
4 个字节
DOUBLE
双精度浮点数
8 个字节
DECIMAL (M, D),DEC
压缩的“严格”定点数
M+2 个字节
3) 日期/时间类型
类型名称
日期格式
日期范围
存储需求
YEAR
YYYY
1901 ~ 2155
1 个字节
TIME
HH:MM:SS
-838:59:59 ~ 838:59:59
3 个字节
DATE
YYYY-MM-DD
1000-01-01 ~ 9999-12-3
3 个字节
DATETIME
YYYY-MM-DD HH:MM:SS
1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
8 个字节
TIMESTAMP
YYYY-MM-DD HH:MM:SS
1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC
4 个字节
3) 字符串类型
类型名称
说明
存储需求
CHAR(M)
固定长度非二进制字符串
M 字节,1VARCHAR(M)
变长非二进制字符串
L+1字节,在此,LTINYTEXT
非常小的非二进制字符串
L+1字节,在此,LTEXT
小的非二进制字符串
L+2字节,在此,LMEDIUMTEXT
中等大小的非二进制字符串
L+3字节,在此,LLONGTEXT
大的非二进制字符串
L+4字节,在此,LENUM
枚举类型,只能有一个枚举字符串值
1或2个字节,取决于枚举值的数目 (最大值为65535)
SET
一个设置,字符串对象可以有零个或 多个SET成员
1、2、3、4或8个字节,取决于集合 成员的数量(最多64个成员)
4) 二进制类型
类型名称
说明
存储需求
BIT(M)
位字段类型
大约 (M+7)/8 字节
BINARY(M)
固定长度二进制字符串
M 字节
VARBINARY (M)
可变长度二进制字符串
M+1 字节
TINYBLOB (M)
非常小的BLOB
L+1 字节,在此,LBLOB (M)
小 BLOB
L+2 字节,在此,LMEDIUMBLOB (M)
中等大小的BLOB
L+3 字节,在此,LLONGBLOB (M)
非常大的BLOB
L+4 字节,在此,L表的操作
创建表:
create table 表名
(
字段名 数据类型 [约束],
字段名 数据类型 [约束],
....
)
主要的约束类型有:
primary key 主键,表中只能有一个,不能重复,不能为空
not null 非空,必须填写
unique 唯一,不能重复
auto_increment 自动增长,必须是整数类型,不需要手动插入
foreign key 外键,建立表之间的引用关系
删除表:
drop table 表名;
删除表时进行检查:
drop table if exists 表名;
修改表,添加字段:
alter table 表名 add column 字段名 数据类型;
修改表,删除字段:
alter table 表名 drop column 字段名;
查看表结构:
desc 表名;
代码示例:
9.-- 删除表
10.drop table if exists tb_student;
11.-- 创建学生表
12.create table tb_student
13.(
- stu_id int primary key auto_increment,
- stu_name varchar(20) not null,
- stu_age int not null,
- stu_gender varchar(1) not null,
- stu_address varchar(200)
19.);
数据操作语言DML
数据操作语言有插入、删除和更新语句组成。
单行插入:
insert into 表名(字段名,字段名,字段名..) values(值,值,值..);
多行插入
insert into 表名(字段名,字段名,字段名..)
values(值,值,值..),(值,值,值..),(值,值,值..);
将一张表数据插入另一张表
insert into 表1(字段名,字段名,字段名..)
select 字段名,字段名,字段名 from 表2;
删除所有数据
delete from 表名;
清空表
truncate table 表名;
带条件的删除
delete from 表名 [where 条件];
更新
update 表名 set 字段 = 值,字段 = 值... [where 条件];
代码示例:
20.-- 插入一行学生记录
21.insert into tb_student(stu_name,stu_age,stu_gender,stu_address)
22.values('赵六',30,'男','上海');
23.-- 插入多行学生
24.insert into tb_student(stu_name,stu_age,stu_gender,stu_address)
25.values('陈七',20,'男','武汉'),('陈大七',28,'男','上海'),('陈小七',18,'男','北京');
26.-- 删除学号为3的学生
27.delete from tb_student where stu_id = 3;
28.-- 全部删除
29.delete from tb_student;
30.-- 清空表
31.truncate table tb_student;
32.-- 更新陈七的年龄为23,性别为女
33.update tb_student set stu_age = 23,stu_gender = '女'
34.where stu_name = '陈七';
总结
本章我们学习了SQL语言中的DDL和DML,能实现建表建表和数据的增删改操作,还有一个重要的查询操作,也就是DQL,会在下章介绍。
好了,本文到此结束,带大家了解了《好程序员Java分享MySQL之SQL入门(一)》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多数据库知识!
-
499 收藏
-
244 收藏
-
235 收藏
-
157 收藏
-
101 收藏
-
208 收藏
-
174 收藏
-
317 收藏
-
371 收藏
-
244 收藏
-
288 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习