本笔记为阿里云天池龙珠计划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)
);