美文网首页
MySQL之SQL入门(一)

MySQL之SQL入门(一)

作者: 千锋陈老师 | 来源:发表于2019-05-22 17:14 被阅读0次

    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 数据库名;

    代码示例:

    -- 删除数据库

    drop database if exists java1903;

    -- 创建数据库

    create database java1903

    default character set utf8mb4

    collate utf8mb4_general_ci;

    -- 使用数据库

    use java1903;

    MySQL常见的数据类型

    创建好数据库后,我们就需要建表,建表我们需要设置字段的数据类型,我们先来了解MySQL中常见的数据类型。

    1) 整数类型

    类型名称说明存储需求

    TINYINT很小的整数1个字节

    SMALLINT小的整数2个宇节

    MEDIUMINT中等大小的整数3个字节

    INT (INTEGHR)普通大小的整数4个字节

    BIGINT大整数8个字节

    2)小数类型

    类型名称说明存储需求

    FLOAT单精度浮点数4 个字节

    DOUBLE双精度浮点数8 个字节

    DECIMAL (M, D),DEC压缩的“严格”定点数M+2 个字节

    3) 日期/时间类型

    类型名称日期格式日期范围存储需求

    YEARYYYY1901 ~ 21551 个字节

    TIMEHH:MM:SS-838:59:59 ~ 838:59:593 个字节

    DATEYYYY-MM-DD1000-01-01 ~ 9999-12-33 个字节

    DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:598 个字节

    TIMESTAMPYYYY-MM-DD HH:MM:SS1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC4 个字节

    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)非常小的BLOBL+1 字节,在此,L<2^8

    BLOB (M)小 BLOBL+2 字节,在此,L<2^16

    MEDIUMBLOB (M)中等大小的BLOBL+3 字节,在此,L<2^24

    LONGBLOB (M)非常大的BLOBL+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 表名;

    代码示例:

    -- 删除表

    drop table if exists tb_student;

    -- 创建学生表

    create table tb_student

    (

    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)

    );

    数据操作语言DML

    数据操作语言有插入、删除和更新语句组成。

    单行插入:

    insert into 表名(字段名,字段名,字段名..) values(值,值,值..);

    多行插入

    insert into 表名(字段名,字段名,字段名..)

    values(值,值,值..),(值,值,值..),(值,值,值..);

    将一张表数据插入另一张表

    insert into 表1(字段名,字段名,字段名..)

    select 字段名,字段名,字段名 from 表2;

    删除所有数据

    delete from 表名;

    清空表

    truncate table 表名;

    带条件的删除

    delete from 表名 [where 条件];

    更新

    update 表名 set 字段 = 值,字段 = 值... [where 条件];

    代码示例:

    -- 插入一行学生记录

    insert into tb_student(stu_name,stu_age,stu_gender,stu_address)

    values('赵六',30,'男','上海');

    -- 插入多行学生

    insert into tb_student(stu_name,stu_age,stu_gender,stu_address)

    values('陈七',20,'男','武汉'),('陈大七',28,'男','上海'),('陈小七',18,'男','北京');

    -- 删除学号为3的学生

    delete from tb_student where stu_id = 3;

    -- 全部删除

    delete from tb_student;

    -- 清空表

    truncate table tb_student;

    -- 更新陈七的年龄为23,性别为女

    update tb_student set stu_age = 23,stu_gender = '女'

    where stu_name = '陈七';

    总结

    本章我们学习了SQL语言中的DDL和DML,能实现建表建表和数据的增删改操作,还有一个重要的查询操作,也就是DQL,会在下章介绍。

    相关文章

      网友评论

          本文标题:MySQL之SQL入门(一)

          本文链接:https://www.haomeiwen.com/subject/jtguzqtx.html