SQL基础篇1(MICK)
时间:2019-08-21
本文章向大家介绍SQL基础篇1(MICK),主要包括SQL基础篇1(MICK)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
数据库和SQL
C:\PostgreSQL\9.5\bin\psql.exe -U postgres -d shop
数据库的基本概念
数据库(DB):将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合
数据库管理系统(DBMS):用来管理数据库的计算机系统
DBMS的重要性:(文本文件和电子表格无法做到)
- 无法多人共享数据
- 无法提供操作大量数据所需的格式
- 实现读写自动化需要编程能力
- 无法应对突发事故
DBMS的种类 - 层次数据库:Hierarchical DB
- 关系数据库:Relational DB 使用SQL(Structured Query Language)查询
- 关系数据库管理系统:Relational Database Management System
- Oracle
- SQL Server
- DB2
- Postgresql
- MySQL
- 关系数据库管理系统:Relational Database Management System
- 面向对象数据库:Object Oriented DB
- XML数据库:XMLDB
键值存储系统:Key_Value Store
数据库的结构
RDBMS的常见系统结构
客户端、服务器,客户端通过SQL调用数据
表的结构- 表:由行列组成的二维表
- 根据SQL语句的内容返回的数据必须是二维表的形式
- 字段、记录 关系数据库以行为单位进行数据读写
列(垂直方向)和行(水平方向)交叉的方格称为单元格,一个单元格中只能输入一个数据
SQL概要
- SQL是用来操作关系数据库的语言
- SQL语句的种类
- DDL(Data Definition Language) 用来创建或删除存储数据用的数据库以及数据库中的表等对象
- CREATE:创建数据库和数据表
- DROP:删除数据库和数据表
- ALTER:修改数据库和表的结构
- DML(Data Manipulation Language) 用来查询或者变更表中的记录
- SELECT:查询表中的数据
- INSERT:向表中插入新数据
- UPDATE:更新表中的数据
- DELETE:删除表中的数据
- DCL(Data Control Language) 用来确认或者取消对数据库中的数据进行的变更
- COMMIT:确认对数据库中的数据进行的变更
- ROLLBACK:取消对数据库中的数据进行的变更
- GRANT:赋予用户操作权限
- REVOKE:取消用户的操作权限
- DDL(Data Definition Language) 用来创建或删除存储数据用的数据库以及数据库中的表等对象
- SQL的基本书写规则
- SQL语句要以分号(;)结尾 一个SQL语句可以描述一个数据库操作
- SQL语句不区分大小写 为便于理解 统一规则
- 关键字大写
- 表名的首字母大写
- 列名小写
- 插入到数据表中的数据是区分大小写的,在单元格里Computer、COMPUTER、computer是不一样的
- 常数的书写方式是固定的
- 日期需要单引号括起来 建议统一'2010-01-26'格式
- 数字常数无需加注单引号
单词需要用半角空格或者换行来分隔
表的创建
- 数据库的创建
CREATE DATABASE <数据库名>;
CREATE DATABASE shop;
- 表的创建
CREATE TABLE <表名>
(<列名1><数据类型><该列的约束>
<列名2><数据类型><该列的约束>
<列名3><数据类型><该列的约束>
...
<该表的约束1><该表的约束2>);
CREATE TABLE Product
(product_id CHAR(4) NOT NULL,
product_name VARCHAR(10) NOT NULL,
product_type VARCHAR(32) NOT NULL,
sale_price INTEGER ,
purchase_price INTEGER ,
regist_date DATE ,
PRIMARY KEY (product_id)
); --Postgresql通过 \dt来查看数据库里的表 \dt <表名>来查看表的定义
- 命名规则
- 只能使用半角英文字母、数字、下划线(_)作为数据库、表和列的名称
- 名称必须以半角英文字母开头
- 同一个数据库中不能创建两个相同名称的表
- 数据类型
- 所有的列都必须指定数据类型
数据类型表示数据的种类,包括数字型、字符型和日期型 - INTEGER 用来存储整数,不能存储小数- CHAR 用来指定存储字符串 定长字符串 区分大小写
- VARCHAR 用来指定存储字符串 可变字符串 区分大小写 -- Oracle中使用VARCHAR2
- DATE 用来指定存储日期
- 所有的列都必须指定数据类型
- 约束的设置:除了数据类型外,对列中存储的数据进行限制或追加条件的功能
- NOT NULL 非空
PRIMARY KEY 主键(非空不重复)
表的删除和更新
- 表的删除
DROP TABLE <表名>;
DROP TABLE <Product>; --无法恢复
- 表的更新
- 增加列
ALTER TABLE <表名> ADD COLUMN <列名>;
-- Oracle和MS SQL 可以不写COLUMN
-- Oracle添加多列:ALTER TABLE <表名> ADD (<列名1>,<列名2>,...);
- 删除列
ALTER TABLE <表名> DROP COLUMN <列名>;
-- Oracle不用写COLUMN
-- Oracle删除多列:ALTER TABLE <表名> DROP (<列名1>,<列名2>,...); --无法恢复
- 向表中插入数据
-- DML:插入数据
BEGIN 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;
-- MySQL改为:START TRANSACTION -- Oracle和DB2中不用BEGIN TRANSACTION
- 表名的修改
ALTER TABLE Poduct RENAME TO Product; -- Oracle/PostgreSQL
RENAME TABLE Poduct TO Product; -- DB2:
sp_rename 'Poduct','Product'; -- SQL SEVER:
RENAME TABLE Poduct TO Product; --MySQL:
原文地址:https://www.cnblogs.com/evian-jeff/p/11391924.html
- ejb3: message drive bean(MDB)示例
- java提示找不到或无法加载主类
- 学Java有什么好方法?刻苦学技术让我最终成为自信的码农
- expect+scp传输文件发现文件丢失
- IBM WebSphere MQ 7.5基本用法
- QPS的计算
- Django----中间件详解
- linux 添加用户到sudo中
- 机器学习之白话adaboost元算法
- 查看占用内存多的进程
- jboss EAP 6.2 + Message Drive Bean(MDB) 整合IBM Webshpere MQ 7.5
- 通过jenkins API去build一个job
- Django---分页器、中间件
- 启动jenkins服务错误
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python 爬虫进阶必备 | AES-CBC 的 Pyhon 实现要怎么写?给代码就完事了
- Babel:下一代Javascript语法编译器
- 如何定位及优化SQL语句的性能问题
- Java线程安全如何进行原子操作,一致性的最佳实践
- 冒泡排序
- 现有CDP-DC集群启用Auto-TLS
- 打卡001/这是一篇软文
- 技术角 | 在CentOS 8上使用Elastic Stack: Elasticsearch/Kibana 7.8部署与认证配置
- 技术角 | 解决ES SQL命令行启动报错 ./x-pack-env: No such file or directory
- Linux常用命令归类总结
- 潜藏在PHP安全的边缘——浅谈PHP反序列化漏洞
- 对比MySQL,学会在Pandas中实现SQL的常用操作
- 【Python基础】科学计算库Scipy简易入门
- 【DL】规范化:你确定了解我吗?
- Python|让代码替你“说话”