-
1.1初识数据库
数据库(DB):一个含有大量数据并能高校访问的数据集合
数据库管理系统(DBMS):用来管理数据库的计算机系统,如关系型数据库管理系统(RDBMS)
-
1.1 DBMS的种类
以数据的保存格式来进行分类,可分为5种类型:
- 层次数据库(HDB)
- 关系数据库(RDB):如Oracle Database、SQL Server、postgreSQL、MySQL
- 面向对象数据库(OODB)
- XML数据库(XMLDB)
- 键值存储系统(KVS):如MongoDB
-
1.2 RDBMS的常见系统结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B9qNDSOz-1639722965910)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c94e4181-8c07-4866-ba86-e8242d922a15/Untitled.png)]
-
1.3 数据库的安装
-
-
2.1 MySQL表结构概念介绍
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BDbztR11-1639722965912)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ee292eb4-d946-4dd9-96c8-2bf7e50e5442/Untitled.png)]
- 在数据库中,一行称为一条记录,一列称为一个字段。
- 数据库名、列名与表名:只能使用半角英文字母、数字、下划线(_),以半角英文字母开头。
- 数据类型:INTEGER 型、CHAR 型、VARCHAR 型(存储可变长度字符串)、DATE 型。
- 表的约束:除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能。(非空约束、主键约束)
-
2.2 SQL语句的分类
根据对 RDBMS 赋予的指令种类的不同,SQL 语句可以分为以下三类:
-
DDL
数据定义语言(DDL)用来修改数据库或数据库中的表等对象。
- CREATE : 创建数据库和表等对象
- DROP : 删除数据库和表等对象
- ALTER : 修改数据库和表等对象的结构
-
DML
数据操纵语言(DML)用来查询或者修改表中的记录。
- SELECT :查询表中的数据
- INSERT :向表中插入新数据
- UPDATE :更新表中的数据
- DELETE :删除表中的数据
-
DCL
数据控制语言(DCL)用来确认或者取消对数据库中的数据进行的变更。
- COMMIT : 确认对数据库中的数据进行的变更
- ROLLBACK : 取消对数据库中的数据进行的变更
- GRANT : 赋予用户操作权限
- REVOKE : 取消用户的操作权限
-
-
2.3 SQL的基本书写规则
- SQL语句要以分号( ; )结尾
- SQL 不区分关键字的大小写,但是插入到表中的数据是区分大小写的
- win 系统默认不区分表名及字段名的大小写
- linux / mac 默认严格区分表名及字段名的大小写
- 常数的书写方式是固定的
- 单词需要用半角空格或者换行来分隔
-
2.4 SQL语句示例
-
数据库的创建(create database语句)
--语法:CREATE DATABASE < 数据库名称 > ; CREATE DATABASE shop;
-
表的创建(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) ) ;
-
表的删除
--语法:DROP TABLE <表名>; DROP TABLE product;
-
表的更新
-
ALTER TABLE语句
--添加列的ALTER TABLE语句 --语法:ALTER TABLE < 表名 > ADD COLUMN < 列的定义 >; ALTER TABLE product ADD COLUMN product_name_pinyin VARCHAR(100); --删除列的ALTER TABLE语句 --语法:ALTER TABLE <表名> DROP COLUMN <列名>; ALTER TABLE product DROP COLUMN product_name_pinyin; --注:ALTER TABLE 语句和 DROP TABLE 语句一样,执行之后无法恢复。
-
UPDATE TABLE语句
--语法: --UPDATE <表名> --SET <列名> = <表达式> [, <列名2>=<表达式2>...]; --WHERE <条件>; -- 可选,非常重要。 --ORDER BY 子句; --可选 --LIMIT 子句; --可选 --1.使用UPDATE时记得添加where条件,缩小修改范围 -- 修改所有的注册时间 UPDATE product SET regist_date = '2009-10-10'; -- 仅修改部分商品的单价 UPDATE product SET sale_price = sale_price * 10 WHERE product_type = '厨房用具'; --2.使用 UPDATE 也可以将列更新为 NULL(该更新俗称为NULL清空)。 -- 将商品编号为0008的数据(圆珠笔)的登记日期更新为NULL UPDATE product SET regist_date = NULL WHERE product_id = '0008'; --3.UPDATE 语句的 SET 子句支持同时将多个列作为更新对象。 UPDATE product SET sale_price = sale_price * 10, purchase_price = purchase_price / 2 WHERE product_type = '厨房用具';
-
-
表的插入数据(insert into语句)
--语法: --INSERT INTO <表名> (列1, 列2, 列3, ……) VALUES (值1, 值2, 值3, ……); --1.对表进行全列 INSERT 时,可以省略表名后的列清单。这时 VALUES子句的值会默认按照从左到右的顺序赋给每一列。 -- 包含列清单 INSERT INTO productins (product_id, product_name, product_type, sale_price, purchase_price, regist_date) VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15'); -- 省略列清单 INSERT INTO productins VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15'); --2.很多 RDBMS 都支持一次插入多行数据 -- 通常的INSERT INSERT INTO productins VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11'); INSERT INTO productins VALUES ('0003', '运动T恤', '衣服', 4000, 2800, NULL); INSERT INTO productins VALUES ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20'); -- 多行INSERT ( DB2、SQL、SQL Server、 PostgreSQL 和 MySQL多行插入) INSERT INTO productins VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11'), ('0003', '运动T恤', '衣服', 4000, 2800, NULL), ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20'); -- Oracle中的多行INSERT INSERT ALL INTO productins VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11') INTO productins VALUES ('0003', '运动T恤', '衣服', 4000, 2800, NULL) INTO productins VALUES ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20') SELECT * FROM DUAL; -- DUAL是Oracle特有(安装时的必选项)的一种临时表A。因此“SELECT *FROM DUAL” 部分也只是临时性的,并没有实际意义。 --3.INSERT 语句插入NULL值。 INSERT INTO productins (product_id, product_name, product_type, sale_price, purchase_price, regist_date) VALUES ('0006', '叉子', '厨房用具', 500, NULL, '2009-09-20'); --4.INSERT … SELECT 语句从其他表复制数据 -- 将商品表中的数据复制到商品复制表中 INSERT INTO productocpy (product_id, product_name, product_type, sale_price, purchase_price, regist_date) SELECT product_id, product_name, product_type, sale_price, purchase_price, regist_date FROM Product;
-
-
练习题
-
1.1
编写一条 CREATE TABLE 语句,用来创建一个包含表 1-A 中所列各项的表 Addressbook (地址簿),并为 regist_no (注册编号)列设置主键约束
CREATE TABLE Addressbook( regist_no INT NOT NULL, NAME VARCHAR(128) NOT NULL, address VARCHAR(256) NOT NULL, tel_no CHAR(10), mail_address CHAR(20), PRIMARY KEY(regist_no) );
-
1.2
假设在创建练习1.1中的 Addressbook 表时忘记添加如下一列 postal_code (邮政编码)了,请把此列添加到 Addressbook 表中。
列名 : postal_code
数据类型 :定长字符串类型(长度为 8)
约束 :不能为 NULL
ALTER TABLE Addressbook ADD COLUMN postal_code CHAR(8) NOT NULL;
-
1.3
编写 SQL 语句来删除 Addressbook 表。
drop table addressbook;
-
1.4
编写 SQL 语句来恢复删除掉的 Addressbook 表。
--一般drop删除无法恢复
-
阿里AI训练营SQL入门与实践task1
最新推荐文章于 2024-09-14 16:43:45 发布