好程序员分享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入门(一)相关推荐

  1. 好程序员Java分享MySQL之SQL入门(一)

    好程序员Java分享MySQL之SQL入门(一)前言:各种版本的数据库中,有一种通用的语言用于管理数据库中的数据,它就是SQL,本章我们将学习基本的SQL语句. SQL的概述 Structured Q ...

  2. 百度三轮面试回来,想和Java程序员分享一下。

    转载自 百度三轮面试回来,想和Java程序员分享一下. 一,百度一面 1.给一个函数,返回 0 和 1,概率为 p 和 1-p,请你实现一个函数,使得返回 01 概率一样. 2.10 亿个 url,每 ...

  3. python程序员专用壁纸_神级python程序员分享的让小白30分钟快速上手的一张神图,赶快收藏!...

    原标题:神级python程序员分享的让小白30分钟快速上手的一张神图,赶快收藏! 现在很多人学编程都把Python作为入门语言,其实这是个很不错的选择,那么你知道新手如何学Python吗?小编给大家分 ...

  4. 一个程序员分享8年的开发经验

    [转]一个程序员分享8年的开发经验 时间:2011-08-10 10:25 来源: 风尘浪子  作者:风尘浪子  围观: 635 次 在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机 ...

  5. mysql事件示例_卓象程序员:Mysql数据库事件使用与示例

    原标题:卓象程序员:Mysql数据库事件使用与示例 事件简介 事件(event)是MySQL在相应的时刻调用的过程式数据库对象.一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是 ...

  6. 程序员分享女生学大数据怎么样?好就业吗?

    程序员大多给人的印象以男性为主,很少有女孩子从事IT行业,这样的客观现象让我们潜意识的觉得,女生不适合从事IT职业.那事实真的如此吗?IT技术,诸如大数据学科适合女生学习吗?女生学习大数据好就业吗?今 ...

  7. 好程序员分享24个canvas基础知识小结

    好程序员分享24个canvas基础知识小结,非常全面详尽,推荐给大家. 现把canvas的知识点总结如下,以便随时查阅. 1.填充矩形 fillRect(x,y,width,height); 2.绘制 ...

  8. 好程序员分享做HTML5页面你要懂得这些

    为什么80%的码农都做不了架构师?>>>    好程序员分享做HTML5页面你要懂得这些,很多人问过我这个问题,而问这个问题的人基本上都是刚听说过HTML5,处在懵懂的阶段,他们往往 ...

  9. 好程序员分享大势所趋 HTML5成Web开发者最关心的技术

    为什么80%的码农都做不了架构师?>>>    好程序员分享大势所趋 HTML5成Web开发者最关心的技术,最近,在Stack Exchange上出现了一个比较热门的问题:Web开发 ...

最新文章

  1. MySQL数据库修改表结构
  2. 计算机专业350分能进复试吗,初试估分350分,这在考研中算一个什么水平?
  3. c语言流程图char,求救!各位大神,用程序流程图怎么描述下面这个???
  4. 功能性农业投融资-农业大健康·周荣江:国情讲坛体制创新
  5. 深度强化学习实战:Tensorflow实现DDPG - PaperWeekly 第48期
  6. 在tnsnames.ora中配置监听
  7. QT各版本的源码下载地址
  8. iOS 修改UITabBar的默认点击行为
  9. 导入技能要素三大类_教学技能之导入技能(值得收藏)
  10. [设计模式]策略模式
  11. 面试官让我讲讲Java中的锁,我笑了
  12. Java 实例 - 测试两个字符串区域是否相等
  13. Eclipse组合KEmulator
  14. JLink.exe JFlash.exe batch文件一键下载
  15. 大数据技术体系(长期更新)
  16. qfiledialog保存时为文件名添加后缀
  17. hystrix的服务降级和关于熔断的概念、使用等以及网关gateway的了解与使用
  18. 群赛14----2017.9.24
  19. 充电口 米兔积木机器人_米兔积木机器人怎么充电
  20. 【转】PHP网站(nginx、php-fpm、mysql) 用户权限解析

热门文章

  1. Linux云服务器:MySQL安装失败、多种错误总结
  2. java 中完成 乘方 , 开方 可借助于java.lang.Math类的工具
  3. Python基础知识-pycharm版-02
  4. [android开发必备]Android开发者社区汇总
  5. android开源社区
  6. 快牛策略——嵌入式计算机
  7. Python3.6 安装PIL
  8. 寒假每日一题——贝茜的报复
  9. 景深决定照相机什么特性_2017年摄影专业单独考试试题库——简答
  10. day1 704.二分查找 27.移除元素