SQL基础-第1章 数据库和SQL
1-1 数据库是什么
我们身边的数据库
像这样将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合称为数据库(Database, DB)。将姓名、住址、电话号码、邮箱地址、爱好和家庭构成等数据保存到数据库中,就可以随时迅速获
取想要的信息了。
用来管理数据库的计算机系统称为数据库管理系统(Database Management System, DBMS)
为什么DBMS那么重要
- 多人共享数据
- 提供操作大量数据所需的格式
- 实现读写自动化不需要编程能力
- 应对突发事故
DBMS的种类
- 层次数据库(Hierarchical Database, HDB)
- 关系数据库(Relational Database, RDB)
- Oracle Database:甲骨文公司的RDBMS
- SQL Server:微软公司的RDBMS
- DB2:IBM公司的RDBMS
- PostgreSQL: 开源的RDBMS
- MySQL:开源的RDBMS
- 面向对象数据库(Object Oriented Database, OODB)
- XML数据库(XML Database, XMLDB)
- 键值存储系统(Key-Value Store, KVS)
1-2 数据库的结构
RDBMS的常见系统结构
表的结构
关系数据库以行为单位读写数据,一个单元格中只能输入一个数据
1-3 SQL概要
标准SQL
国际标准化组织(ISO)为 SQL 制定了相应的标准,以此为基准的SQL 称为标准 SQL
SQL语句及其种类
- DDL(Data Definition Language,数据定义语言)用来创建或者删除存储数据用的数据库以及数据库中的表等对象。
- CREATE: 创建数据库和表等对象
- DROP: 删除数据库和表等对象
- ALTER: 修改数据库和表等对象的结构
- DML(Data Manipulation Language,数据操纵语言)用来查询或者变更表中的记录。 DML 包含以下几种指令。
- SELECT:查询表中的数据
- INSERT:向表中插入新数据
- UPDATE:更新表中的数据
- DELETE:删除表中的数据
- DCL(Data Control Language,数据控制语言)用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对 RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。 DCL 包含以下几种指令。
- COMMIT: 确认对数据库中的数据进行的变更
- ROLLBACK: 取消对数据库中的数据进行的变更
- GRANT: 赋予用户操作权限
- REVOKE: 取消用户的操作权限
SQL的基本书写规则
- SQL语句要以分号( ;)结尾
- SQL语句不区分大小写
- 常数的书写方式是固定的
- 字符串和日期常数需要使用单引号(')括起来。
- 数字常数无需加注单引号(直接书写数字即可)。
- 单词需要用半角空格或者换行来分隔
1-4 表的创建
表的内容的创建
数据库的创建(CREATE-DATABASE语句)
CREATE DATABASE <数据库名称>;
表的创建(CREATE-TABLE语句)
CREATE TABLE <表名>(
<列名1> <数据类型> <该列所需约束>,
<列名2> <数据类型> <该列所需约束>,
<列名3> <数据类型> <该列所需约束>,
<列名4> <数据类型> <该列所需约束>,
...
<该表的约束1>,<该表的约束2>, ...);
CREATE TABLE Product
(product_id CHAR(4) NOT NULL,
product_name VARCHAR(100) NOT NULL,
product_type VARCHAR(32) NOT NULL,
sale_price INTEGER ,
purchase_price INTEGER ,
regist_date DATE ,
PRIMARY KEY (product_id));
命名规则
- 只能使用半角英文字母、数字、下划线(_)作为数据库、表和列的名称
- 名称必须以半角英文字母开头
- 名称不能重复
数据类型的指定
- INTEGER型:用来指定存储整数的列的数据类型(数字型),不能存储小数。
- CHAR型(CHARACTER):是用来指定存储字符串的列的数据类型(字符型)
- VARCHAR型:同 CHAR 类型一样, VARCHAR 型也是用来指定存储字符串的列的数据类型(字符串类型),也可以通过括号内的数字来指定字符串的长度(最大长度)
- DATE型:用来指定存储日期(年月日)的列的数据类型(日期型)。
约束的设置
约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能
1-5 表的删除和更新
表的删除(DROP-TABLE语句)
DROP TABLE <表名>;
DROP TABLE Product;
删除了的表是无法恢复的。
表定义的更新(ALTER-TABLE语句)
ALTER TABLE <表名> ADD COLUMN <列的定义>;
<!--添加一列可以存储100位的可变长字符串的product_name_pinyin列-->
ALTER TABLE Product ADD COLUMN product_name_pinyin VARCHAR(100);
<!--删除列的ALTER TABLE语句-->
ALTER TABLE <表名> DROP COLUMN <列名>;
表定义变更之后无法恢复。
向Product表中插入数据
-- DML :插入数据
START TRANSACTION;
INSERT INTO Product VALUES ('0001', 'T恤衫', '衣服',
1000, 500, '2009-09-20');
INSERT INTO Product VALUES ('0002', '打孔器', '办公用品',
500, 320, '2009-09-11');
INSERT INTO Product VALUES ('0003', '运动T恤', '衣服',
4000, 2800, NULL);
INSERT INTO Product VALUES ('0004', '菜刀', '厨房用具',
3000, 2800, '2009-09-20');
INSERT INTO Product VALUES ('0005', '高压锅', '厨房用具',
6800, 5000, '2009-01-15');
INSERT INTO Product VALUES ('0006', '叉子', '厨房用具',
500, NULL, '2009-09-20');
INSERT INTO Product VALUES ('0007', '擦菜板', '厨房用具',
880, 790, '2008-04-28');
INSERT INTO Product VALUES ('0008', '圆珠笔', '办公用品',
100, NULL,'2009-11-11');
COMMIT;
变更表名
RENAME TABLE Poduct to Product;
练习题
CREATE TABLE `Addressbook` (
`regist_no` int NOT NULL PRIMARY KEY COMMENT '注册编号',
`name` VARCHAR(128) NOT NULL COMMENT '姓名',
`address` VARCHAR(256) NOT NULL COMMENT '住址',
`tel_no` CHAR(10) COMMENT '电话号码 ',
`mail_address` CHAR(20) COMMENT '邮箱地址'
)DEFAULT CHARSET=utf8;
ALTER TABLE `Addressbook` ADD COLUMN postal_code int(8) NOT NULL;
DROP TABLE `Addressbook`;
删除后的表无法使用命令进行恢复。使用CREATE TABLE语句再次创建所需的表
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了