本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql

一、初始数据库

数据库是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。这个数据集合就称数据库(Databe,DB),用来管理数据库的计算机系统称为数据库管理系统(Database Managment System,DBMS)。

1关系数据库管理系统

关系数据库(Relational Database,RDB)的DBMS称为关系数据库管DBMS),常见的RDBMS有5种:(1)甲骨文公司:oracal Database;(2)微软公司:SQL Server;(3)IBM:DB2;(4)开源的RDBMS:PostgreSQL;(5)开源的RDBMS:MYSQL

二、SQL

2.1 SQL语句分类

(1)数据定义语言(Data Definition Language,DDL)用来创建或者删除存储数据用的数据库以及数据库中的表等对象。包含CREATE、DROP、ALTER

(2)数据操纵语言(Data Manipulation Language,DML)用来查询或者变更表中的记录。包含SELECT、INSERT、UPDATE、DELETE、

(3)数据控制语言(Data Control Language,DCL)用来确认或者取消对数据库中的数据进行的变更。

2.2 书写规则

1.分号( ; )结尾表示语句的结束;

2.SQL 不区分关键字的大小写,但是插入到表中的数据是区分大小写的

3.win 系统默认不区分表名及字段名的大小写,linux / mac 默认严格区分表名及字段名的大小写

4.语句注释:–

2.3 创建数据库(CREATE DATABASE 语句)

create database;CREATE DATABASE shop;

2.4创建表(CREATE TABLE 语句)

CREATE TABLE ( , );

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

2.5 设置约束条件

NOT NULL是非空约束,即该列必须输入数据。

PRIMARY KEY是主键约束,代表该列是唯一值,可以通过该列取出特定的行的数据

default约束设定默认值

2.6 表的删除和更新

1.drop删除表:删除的表是无法恢复的,只能重新插入,请执行删除操作时无比要谨慎。DROP删除整个表结构,与清空表不同

DROP TABLE ;

2.alter table语句:添加一列,ALTER TABLE ADD COLUMN ;

3.删除列:ALTER TABLE DROP COLUMN ;

4.清空表:TRUNCATE TABLE TABLE_NAME;delete TABLE TABLE_NAME;

truncate用来清除数据时,速度最快

5.更新数据:UPDATE

SET = [, =…];

WHERE ; — 可选,非常重要。

ORDER BY 子句; –可选

LIMIT 子句; –可选

多列更新: UPDATE product SET sale_price = sale_price * 10

, purchase_price = purchase_price / 2 WHERE product_type = ‘厨房用具’;

6.表中插入数据:INSERT INTO (列1, 列2, 列3, ……) VALUES (值1, 值2, 值3, ……);

例:CREATE TABLE productins (product_id CHAR(4) NOT NULL, product_name VARCHAR(100) NOT NULL, product_type VARCHAR(32) NOT NULL, sale_price INTEGER DEFAULT 0, purchase_price INTEGER , regist_date DATE , PRIMARY KEY (product_id));

插入一行: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

(‘0002’, ‘打孔器’, ‘办公用品’, 500, 320, ‘2009-09-11’)

, (‘0003’, ‘运动T恤’, ‘衣服’, 4000, 2800, NULL)

, (‘0004’, ‘菜刀’, ‘厨房用具’, 3000, 2800, ‘2009-09-20’);

7. insert …select 语句从其他表复制数据

insert into productcopy(product_id,product_name,product_type
,sale_price)
select product_id,product_name,product_type
,sale_price from product;

三、练习题

3.1create table Addressbook (
regist_no int not null comment ‘注册编号’
,name varchar(128) not null comment ‘姓名’
,address varchar(126) not null comment ‘住址’
,tel_no char(10) comment ‘电话号码’
,mail_address char(20) comment ‘邮箱地址’
,primary key(regist_no)
);

3.2alter table Addressbook add column poatal_code char(8) not null;

3.3drop table Addressbook;

3.4 没有特定语句可以恢复

create table Addressbook (
regist_no int not null comment ‘注册编号’
,name varchar(128) not null comment ‘姓名’
,address varchar(126) not null comment ‘住址’
,tel_no char(10) comment ‘电话号码’
,mail_address char(20) comment ‘邮箱地址’
,primary key(regist_no)
);