当前位置:文档之家› SQL 基础知识汇总(2019)

SQL 基础知识汇总(2019)

SQL 基础知识梳理(一)- 数据库与SQL (2019.03)目录•What's 数据库•数据库结构•SQL 概要•创建数据库与表•删除和更新表一、What's 数据库1.数据库(Database,DB):将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。

如:大型-银行存储的信息,小型-电话簿。

2.数据库管理系统(Batabase Management System,DBMS):用来管理数据库的计算机系统。

3.关系型数据库(Relational Database,RDB):目前应用最广泛的数据库。

4.结构化查询语言(Structured Query Language,SQL):专门用于操作RDB。

5.常见的5 种关系型数据库管理系统(Relational Database Management System,RDBMS):①Oracle Database:甲骨文公司②SQL Server:微软公司③DB2:IBM 公司④PostgreSQL:开源⑤MySQL:开源二、数据库结构1.服务器:用于接收并处理其它程序发出的请求的程序(软件),或者是安装此类程序的设备(计算机)。

2.客户端:向服务器发出请求的程序(软件),或者是安装此类程序的设备(计算机)。

3.表(table):类似Excel,由行和列组成的二维表。

4.字段:表的列(垂直方向)。

5.记录:表的行(水平方向)。

【注意】关系数据库必须以行为单位进行数据读写。

6.单元格:行列交汇处。

【注意】与Excel 不同,一个单元格只能输入一个数据。

三、SQL 概要1.SQL 语句:用关键字、表名和列名等组合而成的一条语句。

2.3 种 SQL 语句种类:(1)DDL(Data Definition Language,数据定义语言):创建、删除或修改数据库以及数据库中的表等对象。

①CREATE:创建数据库和表等对象②DROP:删除数据库和表等对象③ALTER:修改数据库和表等对象(2)DML(Data Manipulation Language,数据操作语言):查询或修改表中的记录。

①SELECT:查询表中的数据②INSERT:向表中插入数据③UPDATE:修改表中的数据④DELETE:删除表中的数据(3)DCL(Data Control Language,数据控制语言):确认或取消对数据库中的数据变更的执行操作,以及对用户的操作数据库中的对象权限进行设定。

①COMMIT:确认对数据库中的数据进行的变更②ROLLBACK:取消对数据库中的数据进行的变更③GRANT:赋予用户的操作权限④REVOKE:取消用户的操作权限【备注】DML 使用最频繁。

3.SQL 语句书写规范:①以分号(;)结尾;②大小写不敏感,不区分关键字的大小写;【注意】插入到表中的数据是区分大小写的,如“HI”、“Hi”和“hi”都不同。

③该系列随笔将采用“关键字大写,表名和列名的首字母大写”的格式。

④单词使用半角空格或换行符隔开4.常数的书写方式:字符串、日期:用单引号括起来('),如'Hello','2016-09-24'。

数字:直接书写,不用加单引号,如:5。

四、创建数据库与表1.数据库创建:-- 语法:CREATE DATABASE <数据库名称>CREATE DATABASE Shop -- 创建名为 Shop 的数据库2.表的创建-- 语法:-- CREATE TABLE <表名>-- (-- <列名1> <数据类型> <约束>,-- <列名1> <数据类型> <约束>,-- ...-- <表约束1>,-- <表约束2>,-- ...-- )-- 创建名为 Shohin 的表CREATE TABLE Shohin (shohin_id CHAR(4) NOT NULL,shohin_mei VARCHAR(100) NOT NULL, shohin_bunrui VARCHAR(32) NOT NULL, hanbai_tanka INTEGER ,shiire_tanka INTEGER ,torokubi DATE ,PRIMARY KEY (shohin_id));3.命名规则:①只能使用半角英文字母、数字、下划线(_)作为数据库、表和列的名称;②规范要求命名以半角英文字符开头;③名称不能重复。

4.数据类型的指定:声明该列的数据类型,是一种约束。

5.数据类型介绍:①INTEGER:整型,意味不能存储小数;②CHAR:字符串型,如CHAR(10)和CHAR(100)中的括号表名该列可以存储的字符串的最大长度。

它是“定长字符串”,如CHAR(8) 表示在列中插入 'abc' 时会自动保存成'abc '(后面5个半角空格)的形式;③VARCHAR:字符串型,类似CHAR,不同的是它是“可变长字符串”,如 VARCHAR(8) 在插入'abc',保存的就是字符串'abc';④DATE:日期类型;... ...6.约束:①非空约束:NULL 是空白(无记录)的意思的关键字,NOT NULL 表示必须输入的约束。

②主键约束:主键是可以确定一行数据的列,一般通过它取特定行的数据,它是唯一的,不允许重复。

... ...五、更新和删除表1.删除表-- 语法:DROP TABLE <表名>DROP TABLE Shohin; -- 删除名为 Shohin 的表【注意】被删的表,无法恢复。

2.更新表(1)添加列-- 语法:ALTER TABLE <表名> ADD <列名> <类型>;ALTER TABLE Shohin ADD Shohin_mei_Kana VARCHAR(100); -- 在 Shohin 中添加名为 Shohin_mei_Kana 类型为 VARCHAR(100) 的列(2)删除列-- 语法:ALTER TABLE <表名> DROP COLUMN <列名>;ALTER TABLE Shohin DROP COLUMN Shohin_mei_Kana; -- 删除 Shohin 表中名为 Shohin_mei_Kana 的列【注意】表定义变更后无法恢复。

SQL 基础知识梳理(二)- 查询基础目录•SELECT 语句基础•算术运算符和比较运算符•逻辑运算符一、SELECT 语句基础1.查询指定列:SELECT 关键字--语法:--SELECT <列名>, ... -- 希望查询列的名称--FROM <表名> -- 指定选取数据的表-- 从 Shohin 中取 3 列SELECT shohin_id, shohin_mei, hanbai_tanka-- 列的顺序可以任意指定,逗号(“,”)分隔,查询结果的顺序和 SELECT 子句中的顺序相同FROM Shohin;2.查询表的所有列:星号(*)--语法--SELECT * -- 星号(*)代表所有列--FROM <表名>;【备注】使用星号(*)的话就无法设定列的显示顺序3.为列设定别名:AS 关键字SELECT shohin_id AS Id, shohin_mei AS Name, shiire_tanka Price FROM Shohin; -- 不用 AS 关键字也可以SELECT shohin_id AS "编号", shohin_mei AS'名称', shiire_tanka '价格'FROM Shohin; -- 设定汉语别名:加上双引号(")或单引号(')4.常数的查询SELECT'产品'AS Product, -- '产品':字符串常数38AS Price, -- 38:数字常数'2016-09-30'AS'生产日期'-- '2009-02-24':日期常数【备注】字符串和日期使用单引号(')。

5.从结果中删除重复行:DISTINCT原图(1)SELECT DISTINCT shohin_bunrui FROM dbo.Shohin;-使用DISTINCT 移除 shohin_bunrui 列中的重复数据(2)DISTINCT 对NULL 类型的处理:存在多条NULL 值的行时,会结合为一条NULL 数据。

SELECT DISTINCT shiire_tanka FROM dbo.Shohin;(3)多列之前使用DISTINCTSELECT DISTINCT shohin_bunrui, torokubi FROM dbo.ShohinDISTINCT 会将多个列的数据进行组合,将重复的数据结合为一条。

【注意】DISTINCT 关键字只能用在第一个列名之前。

6.筛选记录:WHEREWHERE 子句中可以指定“某一列的值和这个字符串相等”或者“某一列的值大于这个数字”等条件,找出只符合该条件的记录。

--语法:--SELECT <列名>, ...--FROM <表名>--WHERE <条件表达式>;SELECT shohin_id, shohin_mei, shohin_bunrui FROM dbo.Shohin WHERE shohin_bunrui ='衣服';-- shohin_bunrui = '衣服':为条件表达式选取行之后,再输出列【备注】WHERE 子句:首先通过该子句查询出符合指定条件的记录,再选取出SELECT 语句指定的列。

【注意】SQL 子句的书写格式是固定的,不能随意更改。

如WHERE 子句必须紧跟在FROM 子句后。

7.注释的写法注释对于SQL 的执行没有任何影响。

-- 单行注释/*多行注释*/二、算术运算符和比较运算符1.算术运算符SELECT shohin_mei, hanbai_tanka, hanbai_tanka *2AS'hanbai_tanka_x2'FROM dbo.Shohin;图商品单价的两倍括号(“(”“)”)可以提高表达式的优先级。

2.需要注意NULLSELECT5+NULL, 10-NULL, 1*NULL, 4/NULL, NULL/9;【备注】所有包含NULL 的计算,结果肯定为NULL。

相关主题