好程序员分享MySQL之SQL入门(一)
好程序员分享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 字节,1<=M<=255 |
VARCHAR(M) |
变长非二进制字符串 |
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) 二进制类型
类型名称 |
说明 |
存储需求 |
BIT(M) |
位字段类型 |
大约 (M+7)/8 字节 |
BINARY(M) |
固定长度二进制字符串 |
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 varchar(20) not null,
16. stu_age int not null,
17. stu_gender varchar(1) not null,
18. 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,会在下章介绍。
前言:各种版本的数据库中,有一种通用的语言用于管理数据库中的数据,它就是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 字节,1<=M<=255 |
VARCHAR(M) |
变长非二进制字符串 |
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) 二进制类型
类型名称 |
说明 |
存储需求 |
BIT(M) |
位字段类型 |
大约 (M+7)/8 字节 |
BINARY(M) |
固定长度二进制字符串 |
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 varchar(20) not null,
16. stu_age int not null,
17. stu_gender varchar(1) not null,
18. 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,会在下章介绍。
转载于:https://www.cnblogs.com/gcghcxy/p/10944740.html
好程序员分享MySQL之SQL入门(一)相关推荐
- 好程序员Java分享MySQL之SQL入门(一)
好程序员Java分享MySQL之SQL入门(一)前言:各种版本的数据库中,有一种通用的语言用于管理数据库中的数据,它就是SQL,本章我们将学习基本的SQL语句. SQL的概述 Structured Q ...
- 百度三轮面试回来,想和Java程序员分享一下。
转载自 百度三轮面试回来,想和Java程序员分享一下. 一,百度一面 1.给一个函数,返回 0 和 1,概率为 p 和 1-p,请你实现一个函数,使得返回 01 概率一样. 2.10 亿个 url,每 ...
- python程序员专用壁纸_神级python程序员分享的让小白30分钟快速上手的一张神图,赶快收藏!...
原标题:神级python程序员分享的让小白30分钟快速上手的一张神图,赶快收藏! 现在很多人学编程都把Python作为入门语言,其实这是个很不错的选择,那么你知道新手如何学Python吗?小编给大家分 ...
- 一个程序员分享8年的开发经验
[转]一个程序员分享8年的开发经验 时间:2011-08-10 10:25 来源: 风尘浪子 作者:风尘浪子 围观: 635 次 在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机 ...
- mysql事件示例_卓象程序员:Mysql数据库事件使用与示例
原标题:卓象程序员:Mysql数据库事件使用与示例 事件简介 事件(event)是MySQL在相应的时刻调用的过程式数据库对象.一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是 ...
- 程序员分享女生学大数据怎么样?好就业吗?
程序员大多给人的印象以男性为主,很少有女孩子从事IT行业,这样的客观现象让我们潜意识的觉得,女生不适合从事IT职业.那事实真的如此吗?IT技术,诸如大数据学科适合女生学习吗?女生学习大数据好就业吗?今 ...
- 好程序员分享24个canvas基础知识小结
好程序员分享24个canvas基础知识小结,非常全面详尽,推荐给大家. 现把canvas的知识点总结如下,以便随时查阅. 1.填充矩形 fillRect(x,y,width,height); 2.绘制 ...
- 好程序员分享做HTML5页面你要懂得这些
为什么80%的码农都做不了架构师?>>> 好程序员分享做HTML5页面你要懂得这些,很多人问过我这个问题,而问这个问题的人基本上都是刚听说过HTML5,处在懵懂的阶段,他们往往 ...
- 好程序员分享大势所趋 HTML5成Web开发者最关心的技术
为什么80%的码农都做不了架构师?>>> 好程序员分享大势所趋 HTML5成Web开发者最关心的技术,最近,在Stack Exchange上出现了一个比较热门的问题:Web开发 ...
最新文章
- MySQL数据库修改表结构
- 计算机专业350分能进复试吗,初试估分350分,这在考研中算一个什么水平?
- c语言流程图char,求救!各位大神,用程序流程图怎么描述下面这个???
- 功能性农业投融资-农业大健康·周荣江:国情讲坛体制创新
- 深度强化学习实战:Tensorflow实现DDPG - PaperWeekly 第48期
- 在tnsnames.ora中配置监听
- QT各版本的源码下载地址
- iOS 修改UITabBar的默认点击行为
- 导入技能要素三大类_教学技能之导入技能(值得收藏)
- [设计模式]策略模式
- 面试官让我讲讲Java中的锁,我笑了
- Java 实例 - 测试两个字符串区域是否相等
- Eclipse组合KEmulator
- JLink.exe JFlash.exe batch文件一键下载
- 大数据技术体系(长期更新)
- qfiledialog保存时为文件名添加后缀
- hystrix的服务降级和关于熔断的概念、使用等以及网关gateway的了解与使用
- 群赛14----2017.9.24
- 充电口 米兔积木机器人_米兔积木机器人怎么充电
- 【转】PHP网站(nginx、php-fpm、mysql) 用户权限解析