这篇文章主要介绍“MySQL结构化查询语言有哪些”,在日常操作中,相信很多人在MySQL结构化查询语言有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL结构化查询语言有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
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) 字符串类型
类型名称 |
说明 |
存储需求 |
CHARM) |
固定长度非二进制字符串 |
M 字节,1<=M<=255 |
VARCHARM) |
变长非二进制字符串 |
L+1字节,在此,L< = M和 1<=M<=255 |
TINYTEXT |
非常小的非二进制字符串 |
L+1字节,在此,L<2^8 |
TEXT |
小的非二进制字符串 |
L+2字节,在此,L<2^16 |
MEDIUMTEXT |
中等大小的非二进制字符串 |
L+3字节,在此,L<2^24 |
LONGTEXT |
大的非二进制字符串 |
L+4字节,在此,L<2^32 |
ENUM |
枚举类型,只能有一个枚举字符串值 |
1或2个字节,取决于枚举值的数目 最大值为65535) |
SET |
一个设置,字符串对象可以有零个或 多个SET成员 |
1、2、3、4或8个字节,取决于集合 成员的数量(最多64个成员) |
4) 二进制类型
类型名称 |
说明 |
存储需求 |
BITM) |
位字段类型 |
大约 M+7)/8 字节 |
BINARYM) |
固定长度二进制字符串 |
M 字节 |
VARBINARY M) |
可变长度二进制字符串 |
M+1 字节 |
TINYBLOB M) |
非常小的BLOB |
L+1 字节,在此,L<2^8 |
BLOB M) |
小 BLOB |
L+2 字节,在此,L<2^16 |
MEDIUMBLOB M) |
中等大小的BLOB |
L+3 字节,在此,L<2^24 |
LONGBLOB M) |
非常大的BLOB |
L+4 字节,在此,L<2^32 |
表的操作
创建表:
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.
14. stu_id int primary key auto_increment,
15. stu_name varchar20) not null,
16. stu_age int not null,
17. stu_gender varchar1) not null,
18. stu_address varchar200)
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_studentstu_name,stu_age,stu_gender,stu_address)
22.values'赵六',30,'男','上海');
23.– 插入多行学生
24.insert into tb_studentstu_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 = '陈七';