SQL-初识数据库

初识数据库

数据库:Database,DB
数据库管理系统:Database Management System,DBMS

数据库的种类:

  1. 层次数据库:Hierarchical Database,HDB
  2. 关系数据库:Relational Database,RDB,以行和列组成的二维表管理数据
  3. 面向对象数据库:Relational Database,RDB
  4. XML数据库:XML Database,XMLDB
  5. 健值存储系统:Key-Value Store,KVS

RDBMS的常见系统结构示意图:
在这里插入图片描述

注意:SQL(Structured Query Language)是一种数据库语言,可以定义和操作数据库;MySQL是关系数据库管理系统RDBMS。SQL Server和MySQL的支持SQL语言。

注意:完全基于标准SQL的RDBMS很少,通常需要根据不同的RDBMS来编写特定的SQL语句,原则上,本课程介绍的是标准SQL的书写方式。

关系数据库中的表

行称为记录;列称为字段;格称为单元格。

SQL语句

SQL语句的分类

  1. DDL(Data Definition Language,数据定义语言)
    1. CREATE:创建数据库和表等对象
    2. DROP:删除数据库和表等对象
    3. ALTER:修改数据库和表等对象的结构
  2. DML(Data Manipulation Language,数据操纵语言):常说的增删查改,实际使用90%的SQL语句属于DML。
    1. INSERT:向表中插入新数据
    2. DELETE:删除表中的数据
    3. SELECT:查询表中的数据
    4. UPDATE:更新表中的数据
  3. DCL(Data Control Language,数据控制语言)
    1. COMMIT: 确认对数据库中的数据进行的变更
    2. ROLLBACK: 取消对数据库中的数据进行的变更
    3. GRANT: 赋予用户操作权限
    4. REVOKE: 取消用户的操作权限

SQL语句基本规则

  1. SQL语句要以分号( ; )结尾。
  2. SQL 不区分关键字的大小写,但是插入到表中的数据是区分大小写的。
  3. Win系统默认不区分表名及字段名的大小写;Linux/Mac默认严格区分表名及字段名的大小写。
  4. 常数的书写方式是固定的,例如’abc’, 1234, ‘26 Jan 2010’, ‘10/01/26’, ‘2010-01-26’…
  5. SQL语句的单词之间需使用半角空格或换行符来进行分隔,不能使用全角空格作为单词的分隔符,否则会发生错误,出现无法预期的结果。

SQL基本语句示例

创建名为shop的数据库:
CREATE DATABASE shop;

创建数据库中名为product的表,表名只能使用数字、字母和下划线,且以字母开头。

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));

上述示例中出现了四种基本的数据类型:CHAR(定长字符串)、VARCHAR(变长字符串)、INTEGER(整数非小数)、DATE(日期)。
在创建数据库的表时需要先使用数据库use shop

删除名为product的表,注意删除的表无法恢复。
DROP TABLE product;

在product表中添加名为product_name_pinyin一列,其数据类型为100位的可变长字符串。
ALTER TABLE product ADD COLUMN product_name_pinyin VARCHAR(100);

把刚创建的product_name_pinyin一列删除
ALTER TABLE product DROP COLUMN product_name_pinyin;

删除product表中名为XXX的行,不可恢复。
DELETE FROM product WHERE COLUMN_NAME='XXX';

清空表product
TRUNCATE TABLE product;

更新product表中的数据

-- 修改所有行(记录)的注册时间
UPDATE product
   SET regist_date = '2009-10-10';  

-- 仅修改部分商品的单价
UPDATE product
   SET sale_price = sale_price * 10
 WHERE product_type = '厨房用具'; 
 
 -- 多列更新
 UPDATE product
   SET sale_price = sale_price * 10,
       purchase_price = purchase_price / 2
 WHERE product_type = '厨房用具'; 

向product表中插入数据
INSERT INTO product VALUES('0001', 'T恤衫', '衣服', 1000, 500, '2009-09-20');

练习题

1.1
在这里插入图片描述

答:

CREATE TABLE Addressbook
(regist_no INTEGER 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 (邮政编码)了,请编写 SQL 把此列添加到 Addressbook 表中。
列名 : postal_code
数据类型 :定长字符串类型(长度为 8)
约束 :不能为 NULL

答:
ALTER TABLE Addressbook ADD COLUMN postal_code CHAR(8) NOT NULL;

1.3 请补充如下 SQL 语句来删除 Addressbook 表。
答:TRUNCATE table Addressbook;

1.4 是否可以编写 SQL 语句来恢复删除掉的 Addressbook 表?
答:不可以,已删除的表不可恢复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值