SQL概要
- DDL(Data Definition Language)数据定义语言
- DML(Data Manipulation Language)数据操纵语言
- DCL(Data Control Language)数据控制语言
- 代码示例1.4 添加一列可以存储100位的可变长字符串的product_name_pinyin列
- 语法1.5 删除列的 ALTER TABLE语句
- 代码示例1.5 删除product_name_pinyin列
概要
系统学习SQL的笔记,用于记录学习过程。
SQL语句及其种类
SQL是用关键字,表名,列名等组合成的一条语句用来描述操作的内容。
关键字是指那些含义或者使用方法已经事先定义好的英语单词。
DDL(Data Definition Language)数据定义语言
Data Definition Language 数据定义语言,用来创建或者删除数据库数据用户数据库以及数据库中的表等对象。
DDL包含以下的几种指令
CREATE:创建数据库和表对象
DROP:删除数据库和表等对象
ALTER:修改数据库和表等对象的结构
DML(Data Manipulation Language)数据操纵语言
DML(Data Manipulation Language,数据操纵语言)用于查询或者变更表中的记录。
DML包含以下的几种指令:
SELECT:查询表中的数据
INSERT:向表中插入新数据
UPDATE:更新表中的数据
DELETE:删除表中的数据
DCL(Data Control Language)数据控制语言
DCL(Data Control Language数据控制语言)用来确认或者取消对数据库中的数据进行的变更。还可以对RDBMS的用户是否有权限操作数据库中的对象(数据库表等)进行设定。DCL包含以下的几种指令:
COMMIT:确认对数据库中的数据进行的变更。
ROLLBACK:取消对数据库中的数据进行标称
GRANT:赋予用户的操作权限
REVOKE:取消用户的操作权限
SQL的基本书写规则
- SQL语句要以分号(;)结尾
- SQL语句不区分大小写,关键字不区分大小写。
- 字符串和日期常数需要使用单引号(')括起来。数字常数无需加注单引号(直接书写数字即可)。
- 英语单词之间需要使用半角空格或者换行符进行分隔。
表的创建
语法1.1创建数据库的CREATE DATABASE语句
CREATE DATABASE <数据库名称>;
代码示例1.1 创建数据库shop
CREATE DATABASE shop;
语法1.2创建表的CREATE TABLE语句
CREATE TABLE <表名> (<列名1> <数据类型> <该列所需约束>, <列名2> <数据类型> <该列所需约束>, <列名3> <数据类型> <该列所需约束>, <列名4> <数据类型> <该列所需约束>, . . . <该表的约束1>, <该表的约束2>,……);
代码示例1.2创建Product表的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 ));
命名规则
一般只能使用半角英文字母、数字、下划线(_) 作为数据库、表和类的名称。例如不能将product_id写成product-id,因为标准SQL并不允许使用连字符作为列名等名称。$ # ? 等支付同样不能作为名称使用。
虽然有些RDBMS允许使用上面这些支付作为列的名称,但是只是限于在该RDBMS中使用,并不能保证在其他RDBMS中也能使用。
1.数据库名称、表名和列名等可以使用以下三种字符。
半角英文字母
半角数字
下划线(_)
2.名称必须以半角英文字母作为开头。
3.名称不能重复。
在同一个数据库中不能创建两个相同名称的表,在同一个表中也不能创建两个名称相同的列。
四种基本的数据类型
INTEGER类型
用于存储整数的数据类型,不能存储小数
CHAR型
CHAR是CHARACTER的缩写,用于指定存储字符串的列的数据类型。
可以像CHAR(10)
或者CHAR(200)
这样,在括号中指定该列可以存储的字符串的长度(最大长度)。字符串超出最大长度的部分是无法输入到该列中的。RDBMS不同,长度单位也不一样,既存在使用字符个数的情况,也存在使用字节长度 的情况。
VARCHAR型
同CHAR型一样,varchar型也是用来指定存储字符串的类的数据类型。但是该类型的列是以可变长字符串的形式来保存字符串的。定长字符串在字符数未达到最大长度时用半角空格补足,但是可变字符串即使字符数未达到最大长度,也不会用半角空格补足。
例如向VARCHAR(8)类型的列中输入字符串’abc’的时候,保存的就是字符串’abc’
DATE型
用来指定存储日期(年月日)的列的数据类型(日期型)
约束的设置
约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能。
NOT NULL约束
数据类型的右侧设置了NOT NULL
约束 NULL是代表空白(无记录)的关键字。在NULL
之前加上了表示否定的NOT,就是给该列设置了不能输入空白,也就是必须输入数据的约束(如果什么都不输入就会出错)。
primary key主键约束
PRIMARY KEY (product_id)
用来给product_id列设置主键约束
的。所谓键,就是在指定特定数据时使用的列的组合。键种类多样,主键(primary key)就是可以特定一行数据的列。也就是说,如果把product_id列指定为主键,就可以通过该列取出特定的商品数据了。
表的删除和更新
使用DROP TABLE语句来删除表。
使用ALTER TABLE语句向表中添加列或者从表中删除。
表的删除(DROP TABLE语句)
语法1.3 删除表
DROP TABLE <表名>;
代码示例1.3 删除Product表
DROP TABLE Product;
注意:删除的表是无法恢复的,所以需要特别注意,不要误删表。
表的更新(ALTER TABLE语句)
如果发现表创建出来之后发现少了几列,这个时候使用ALTER TABLE语句就可以了。
语法1.4 添加列的ALTER TABLE语句
ALTER TABLE <表名> ADD COLUMN <列的定义>;
注意:在Oracle和SQL Server中不用写COLUMN.
ALTER TABLE <表名> ADD <列名> ;
代码示例1.4 添加一列可以存储100位的可变长字符串的product_name_pinyin列
ALTER TABLE Product ADD COLUMN product_name_pinyin VARCHAR(100);
语法1.5 删除列的 ALTER TABLE语句
ALTER TABLE <表名> DROP COLUMN <列名>;
注意:在Oracle和SQL Server中不用写COLUMN.
ALTER TABLE <表名> DROP <列名> ;
代码示例1.5 删除product_name_pinyin列
ALTER TABLE Product DROP COLUMN product_name_pinyin;
ALTER TABLE语句和DROP TABLE语句一样,执行之后无法恢复。误添列可以通过ALTER TABLE语句删除,或者将表全部删除之后重新再创建。
表的修改
修改表名
代码实例1.6 修改表名
RENAME TABLE Poduct to Product;