【数据库系统】第6讲 SQL概述与SQL基本操作

第6讲 SQL概述

结构化查询语言(Structured Query Language)

结构化查询语言(Structured Query Language,SQL)是集DDL、DML和DCL于一体的数据库语言,由以下9个引导词引导的操作语句:

  • DDL语句引导词:createalterdrop
  • DML语句引导词:insertdeleteupdateselect
  • DCL语句引导词:grantrevoke

SQL规范

参数约定

从本节开始,文中将会出现一些SQL语法,因此读者必须掌握一些语句中参数的描述方式:

  • <parameter>:必填参数;
  • [\<parameter\>]:可选参数;
  • A|B:从A或B中任选其一,在必填参数和可选参数中使用。

关于双飘号(``)的使用

SQL中有一些保留字,当用户使用这些保留字作为参数时,就需要使用双飘号将其包裹。例如,当创建名为select的数据库时,需要使用

create database `select`;

而不是

create database select;

关于分号(;)的使用

在SQL中,分号用于分隔SQL语句。当要执行一条语句时,分号可有可无;当要执行多条语句时,需要使用分号分隔每条语句,否则会报错。

SQL通用数据类型

SQL提供了多种数据类型。

值类型

数据类型描述
booleanbool布尔值,存储truefalse
smallint有符号整数,范围为 ( − 32768 , 32767 ) (-32768,32767) (32768,32767)
integerint整数,范围为 ( − 2147483648 , 2147483647 ) (-2147483648,2147483647) (2147483648,2147483647)
bigint整数,范围为 ( − 9223372036854775808 , 9223372036854775807 ) (-9223372036854775808,9223372036854775807) (9223372036854775808,9223372036854775807)
float单精度浮点数,范围为 ( − 3.402823466 × 1 0 38 , − 1.175494351 × 1 0 − 38 ) ∪ { 0 } ∪ ( 1.175494351 × 1 0 − 38 , 3.402823466 × 1 0 38 ) (-3.402823466\times10^{38},-1.175494351\times10^{-38})\cup\{0\}\cup(1.175494351\times10^{-38},3.402823466\times10^{38}) (3.402823466×1038,1.175494351×1038){0}(1.175494351×1038,3.402823466×1038)
double单精度浮点数,范围为 ( − 1.7976931348623157 × 1 0 308 , − 2.2250738585072014 × 1 0 − 308 ) ∪ { 0 } ∪ ( 2.2250738585072014 × 1 0 − 308 , 1.7976931348623157 × 1 0 308 ) (-1.7976931348623157\times10^{308},-2.2250738585072014\times10^{-308})\cup\{0\}\cup(2.2250738585072014\times10^{-308},1.7976931348623157\times10^{308}) (1.7976931348623157×10308,2.2250738585072014×10308){0}(2.2250738585072014×10308,1.7976931348623157×10308)
decimal(p, s)精确数值,p为精度,s为小数点后位数。

字符串类型

数据类型描述
char(n)字符串,固定长度为 n n n
varchar(n)字符串,最大长度为 n n n
binary(n)二进制串,固定长度为 n n n

日期时间类型

数据类型描述
date存储年、月、日的值。
time存储时、分、秒的值。
timestamp存储年、月、日、小时、分、秒的值。
INTERVAL由一些整数字段组成,代表一段时间,取决于区间的类型。

SQL基本操作

创建数据库

语法

create database <database_name>;

参数

  • database_name:必填,数据库名。

:创建名为SCT的数据库

create database SCT;

创建表

语法

create table <table_name> (
    <column_name> <data_type> [primary key|unique|not null] [,
        <column_name> <data_type> [unique|not null]...
    ]
);

参数

  • column_name:必填,列名。
  • data_type:必填,数据类型。
  • primary key|unique|not null:可选,列的约束。
    • primary key:主键约束。
    • unique:唯一约束。
    • not null:非空约束,指该列不允许出现空值。

:创建学生表。

create table students (
	Sno      char(8)  primary key not null,
	Sname    char(10)             not null,
	Ssex     char(2)              not null,
	Sage     integer              not null,
	Saddress varchar(255)
);

插入记录

语法

insert into <table_name> values <record...>;
  • table_name:必填,表名。
  • record:必填,记录元组。元组需与表的列保持一致,可使用逗号(,)分隔多个元组。
insert into <table_name>(<column_name...>) <record...>;
  • table_name:必填,表名。
  • column_name:必填,列名,可使用逗号(,)分隔多个列名。
  • record:必填,记录元组。元组需与表的列保持一致,可使用逗号(,)分隔多条记录。

:向students表插入记录(students表的模式见上方)。

insert into students
values ('202401010101', '张三', '男', 18, '广东省深圳市龙岗区************2A座8层A'),
       ('202402010301', '李四', '女', 18, null);
insert into students(Sno, Sname, Ssex, Sage)
values ('202411020101', '王五', '女', 18);

单表简单查询

语法

select [distinct|] <column_name...> from <table_name> [condition] [sort];
  • column_name:必填,列名,可使用逗号(,)分隔多个列名,使用星号*)代替全部列。
  • table_name:必填,表名。
  • condition:可选,使用where引导的检索条件语句,具体使用见下方示例。
  • sort:可选,格式为order by <column_name> [asc|desc],默认为升序(asc)。

例1:查询学生表中所有学生的信息。

select * from students;

例2:查询学生表中年龄小于18岁的学生的学号及姓名。

select Sno, Sname from students where Sage < 18;

例3:查询学生表中年龄大于20岁的男生的信息。

select * from students where Sage > 20 and Ssex = '男';

例4:查询地址在广东省的所有学生的信息,按年龄降序排列。

select * from students where Saddress like '广东%' order by Sage desc;

模糊查询的匹配规则:

  • \:转义字符。
  • %:匹配零个或多个任意字符。
  • _:匹配单个任意字符。
  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值