SQL基础教程学习(二)开始学习SQL语句
2017-11-21 16:10
357 查看
版本声明:本文为作者原创文章,转载请注明出处! http://blog.csdn.net/AndroidXiXi
本文根据《SQL基础教程第二版》(作者:[日本]MICK)的部分内容实践、整理得出,旨在对所学知识进行梳理
全面系统学习请参考原著书籍http://product.dangdang.com/25094702.html
关键字:指那些含义或者使用方法已经事先被定义好的英语单词
根据RDBMS赋予的指令种类的不同,SQL语句可以分为:
DDL
DDL(Data Definition Language,数据定义语言)用来创建或者删除存储数据用的数据库以及数据库中的表等对象,包含以下几种:
CREATE:创建数据库以及表等对象
DROP:删除数据库和表等对象
ALTER:修改数据库和表等对象的结构
DML
DML(Data Manipulation Language,数据操纵语言)用来查询或者变更表中的记录,包含以下几种:
SELECT:查询表中的数据
INSERT:向表中插入新数据
UPDATE:更新表中的数据
DELETE:删除表中的数据
DCL
DCL(Data Control Language,数据控制语言)用来确认或者取消对数据库中的数据进行的变更,还可以对RDBMS的用户是否有权限操作数据库中的对象(数据库表等)进行设定,包含以下几种:
COMMIT:确认对数据库中的数据进行的变更
ROLLBACK:取消对数据库中的数据进行的变更
GRANT:赋予用户操作权限
REVOKE:取消用户的操作权限
在RDBMS中,SQL语句是逐条执行的,一条SQL语句可以描述一个数据库操作
SQL语句不区分大小写
SQL不区分关键字的大小写,SELECT、select都可以,但是为了区分SQL语句的其他部分,以及养成良好的代码编写习惯,可以采用以下的书写规则:
- 关键字大写
- 表名的首字母大写
- 其余部分小写
但是想要操作数据库中的数据需要区分大小写,例如字符串数据’Computer’、’COMPUTER’、’computer’三者是不一样的
常数的书写方式是固定的
常数:在SQL语句中直接书写的字符串、日期或者数字称为常数
字符串和日期常数需要使用单引号( ’ )括起来,如’abc’,’2017-11-21’
数字常数无须加注单引号,直接书写数字即可
单词需要用半角空格或者换行来分隔
SQL语句的单词之间需使用半角空格或换行符来进行分隔,但是不能使用全角空格作为单词的分隔符,否则会发生错误,请注意当前输入法的状态
接下来开始SQL语句书写的学习
[b]命名规则[/b]
在书写SQL之前可以先约定相关命名规则
只能使用半角英文字母、数字、下划线(_)作为数据库、表、列的名称,例如标准SQL不允许使用连字符,例如列名不能写成product-id
名称必须以半角英文字母作为开头
在同一个数据库中不能创建两个相同名称的表,在同一个表中不能创建两个相同名称的列
数据类型表示数据的种类,包括数字型、字符型和日期型等等,每一列不能存储与该列数据类型不符的数据,常见的几种基本数据类型:
INTEGER型
用来指定存储整数的列的数据类型(数字型),不能存储小数
CHAR型
- CHAR是CHARACTER(字符)的缩写,是用来指定存储字符串的列的数据类型(字符类型)。括号中指定该列可以存储的字符串
4000
的最大长度,字符串超出最大长度的部分是无法输入到该列中的。
- 字符串是以定长字符串的形式存储在被指定为CHAR型的列中,当列中存储的字符串长度达不到最大长度的时候,使用半角空格进行补足。例如,想CHAR(8)的列中输入’abc’时,数据库会以’abc ‘(abc之后五个半角空格)的形式保存起来。
- 数据区分大小写
VARCHAR型
- 和CHAR类型一样,VARCHAR型也是用来指定存储字符串的列的数据类型(字符串类型),也可以通过在括号中指定字符串的最大长度。
- 和CHAR不同的是,VARCHAR是以可变长字符串的形式来保存字符串的,当字符数未达到最大长度的时候,并不会用半角空格补足。
- 和CHAR一样,数据区分大小写
DATE型
用来指定存储日期(年月日)的列的数据类型(日期型)
约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能,例如上个SQL语句示例中的“NOT NULL”,称为“NOT NULL约束”。NULL是代表空白(无记录)的关键字,在NULL之前加上了表示否定的NOT,就是给该列设置了不能输入空白,也就是必须输入数据的约束
上例中“PRIMARY_KEY”用来指定主键约束
键:在指定特定数据时使用的列的组合。
主键:可以特定一行数据的列,相当于一行数据的唯一标识
特别注意:删除的表是无法恢复,现实中可能会引发灾难,数据无价,三思而行
可以通过ALTER TABLE ADD为表增加一个列
可以用ALTER TABLE DROP删除指定列
注意,通过ALTER TABLE对表定义的变更后是无法恢复的
ALTER TABLE操作的对象是表的列名(字段名),如果表名穿件出现问题,就需要使用RENAME来变更表名
可以使用INSERT向表中插入一些数据
本文根据《SQL基础教程第二版》(作者:[日本]MICK)的部分内容实践、整理得出,旨在对所学知识进行梳理
全面系统学习请参考原著书籍http://product.dangdang.com/25094702.html
SQL概述
书中要学习的SQL(Structured Query Language,结构化查询语言)是用来操作关系型数据库的语言,国际化标准组织(ISO)为SQL制定了相关的标准,以此为基准的SQL被称为标准SQL。虽然有时需要根据不同的RDBMS来编写特定的SQL语句,但是大同小异,学会标准的SQL语句就可以在各种RDBMS中书写SQL语句了SQL语句及其种类
SQL语句用关键字、表名、列名等组合而成的一条语句来描述操作的内容关键字:指那些含义或者使用方法已经事先被定义好的英语单词
根据RDBMS赋予的指令种类的不同,SQL语句可以分为:
DDL
DDL(Data Definition Language,数据定义语言)用来创建或者删除存储数据用的数据库以及数据库中的表等对象,包含以下几种:
CREATE:创建数据库以及表等对象
DROP:删除数据库和表等对象
ALTER:修改数据库和表等对象的结构
DML
DML(Data Manipulation Language,数据操纵语言)用来查询或者变更表中的记录,包含以下几种:
SELECT:查询表中的数据
INSERT:向表中插入新数据
UPDATE:更新表中的数据
DELETE:删除表中的数据
DCL
DCL(Data Control Language,数据控制语言)用来确认或者取消对数据库中的数据进行的变更,还可以对RDBMS的用户是否有权限操作数据库中的对象(数据库表等)进行设定,包含以下几种:
COMMIT:确认对数据库中的数据进行的变更
ROLLBACK:取消对数据库中的数据进行的变更
GRANT:赋予用户操作权限
REVOKE:取消用户的操作权限
SQL的基本书写规则
SQL语句要以分号(;)结尾在RDBMS中,SQL语句是逐条执行的,一条SQL语句可以描述一个数据库操作
SQL语句不区分大小写
SQL不区分关键字的大小写,SELECT、select都可以,但是为了区分SQL语句的其他部分,以及养成良好的代码编写习惯,可以采用以下的书写规则:
- 关键字大写
- 表名的首字母大写
- 其余部分小写
但是想要操作数据库中的数据需要区分大小写,例如字符串数据’Computer’、’COMPUTER’、’computer’三者是不一样的
常数的书写方式是固定的
常数:在SQL语句中直接书写的字符串、日期或者数字称为常数
字符串和日期常数需要使用单引号( ’ )括起来,如’abc’,’2017-11-21’
数字常数无须加注单引号,直接书写数字即可
单词需要用半角空格或者换行来分隔
SQL语句的单词之间需使用半角空格或换行符来进行分隔,但是不能使用全角空格作为单词的分隔符,否则会发生错误,请注意当前输入法的状态
接下来开始SQL语句书写的学习
环境的搭建
书中作者推荐、使用的是PostgreSQL,笔者实践使用的是MySQL,安装相关环境可以通过互联网搜索下载资源和安装方法。笔者认为,SQL的学习需要对各种情况动手实践,方能加深对SQL的理解,建议将书中的相关Demo、练习题反复实践、温习[b]命名规则[/b]
在书写SQL之前可以先约定相关命名规则
只能使用半角英文字母、数字、下划线(_)作为数据库、表、列的名称,例如标准SQL不允许使用连字符,例如列名不能写成product-id
名称必须以半角英文字母作为开头
在同一个数据库中不能创建两个相同名称的表,在同一个表中不能创建两个相同名称的列
数据库的创建(CREATE DATABASE 语句)
数据存储于数据库中,首先要进行对数据库的创建,执行CREATE DATABASE语句就可以在RDBMS上创建数据库了,如下:-- 创建数据库的语法 CREATE DATABASE <数据库名称>; -- 创建数据库shop CREATE DATABASE shop;
表的创建
执行CREATE TABLE语句可以在数据库中创建表,如下:-- 创建表的语法 -- 每一列的数据类型是必须的,有时也需要为列设置约束条件 CREATE TABLE <表名> <列名1> <数据类型> <该列所需约束>, <列名2> <数据类型> <该列所需约束>, <列名3> <数据类型> <该列所需约束>, . . . <该表的约束1>,<该表的约束2>...); -- 创建Product表 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) );
数据类型的指定
列名右边的INTEGER、CHAR等关键字,用来声明该列的数据类型,所有的列都必须指定数据类型数据类型表示数据的种类,包括数字型、字符型和日期型等等,每一列不能存储与该列数据类型不符的数据,常见的几种基本数据类型:
INTEGER型
用来指定存储整数的列的数据类型(数字型),不能存储小数
CHAR型
- CHAR是CHARACTER(字符)的缩写,是用来指定存储字符串的列的数据类型(字符类型)。括号中指定该列可以存储的字符串
4000
的最大长度,字符串超出最大长度的部分是无法输入到该列中的。
- 字符串是以定长字符串的形式存储在被指定为CHAR型的列中,当列中存储的字符串长度达不到最大长度的时候,使用半角空格进行补足。例如,想CHAR(8)的列中输入’abc’时,数据库会以’abc ‘(abc之后五个半角空格)的形式保存起来。
- 数据区分大小写
VARCHAR型
- 和CHAR类型一样,VARCHAR型也是用来指定存储字符串的列的数据类型(字符串类型),也可以通过在括号中指定字符串的最大长度。
- 和CHAR不同的是,VARCHAR是以可变长字符串的形式来保存字符串的,当字符数未达到最大长度的时候,并不会用半角空格补足。
- 和CHAR一样,数据区分大小写
DATE型
用来指定存储日期(年月日)的列的数据类型(日期型)
约束的设置
product_id CHAR(4) NOT NULL,
约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能,例如上个SQL语句示例中的“NOT NULL”,称为“NOT NULL约束”。NULL是代表空白(无记录)的关键字,在NULL之前加上了表示否定的NOT,就是给该列设置了不能输入空白,也就是必须输入数据的约束
PRIMARY KEY (product_id)
上例中“PRIMARY_KEY”用来指定主键约束
键:在指定特定数据时使用的列的组合。
主键:可以特定一行数据的列,相当于一行数据的唯一标识
表的删除(DROP TABLE语句)
可以使用DROP TABLE语句删除指定名称的表# 删除表语法 DROP TABLE <表名>; # 删除Product表 DROP TABLE Product;
特别注意:删除的表是无法恢复,现实中可能会引发灾难,数据无价,三思而行
表定义的更新(ALTER TABLE 语句)
表的结构是可以改变的,通过ALTER TABLE 语句变更表的定义,这样就不用删除表,重新创建,很方便可以通过ALTER TABLE ADD为表增加一个列
#ALTER TABLE ADD 语法 ALTER TABLE <表名> ADD COLUMN <列的定义>; #MySQL向表中添加一个列 ALTER TABLE Product ADD product_test VARCHAR(100); ALTER TABLE Product ADD COLUMN product_test VARCHAR(100); #MySQL添加多个列 ALTER TABLE Product ADD( product_testA INTEGER, product_testB CHAR(100), product_testC DATE );
可以用ALTER TABLE DROP删除指定列
#ALTER TABLE DROP 语法 ALTER TABLE <表名> DROP COLUMN <列名>; #MySQL从表中删除一个列 ALTER TABLE Product DROP product_test; ALTER TABLE Product DROP product_testA; ALTER TABLE Product DROP product_testB; ALTER TABLE Product DROP product_testC; #按照上面添加多列的方式推测删除多列的方法 #但是MySQL无法运行,原因未知 #ALTER TABLE Product DROP ( # product_testA, # product_testB, # product_testC #);
注意,通过ALTER TABLE对表定义的变更后是无法恢复的
ALTER TABLE操作的对象是表的列名(字段名),如果表名穿件出现问题,就需要使用RENAME来变更表名
# MySQL语法 sp_rename 'Poduct' 'Product';
可以使用INSERT向表中插入一些数据
#向表中插入数据 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');
相关文章推荐
- MySQL学习笔记(一):基础常用SQL语句
- Python基础教程学习笔记----第五章 条件、循环和其他语句
- 基础SQL语句学习
- 一个让你学习SQL语句的教程
- SQL学习__基础教程
- 开始学习sql 全文检索了,在网上就找了这么个教程。谁有可下载的SQL 请留言
- Oracle PL/SQL语句基础学习笔记(下)
- MYSQL语句大全(SQL 基础教程)
- 数据库学习之sql语句基础
- 数据库基础学习----SQL语句的连接方式
- SAP HANA学习资料中的基础表及数据SQL语句汇总
- Oracle PL/SQL语句基础学习笔记(上)
- Oracle 学习:PL/SQL循序渐进全面学习教程--课程十 写执行语句
- Sqlserver基础教程系列3-基本的查询select语句
- Lua基础教程之赋值语句、表达式、流程控制、函数学习笔记
- 黑马程序员--学习笔记之SQL基础语句及函数
- Python学习入门基础教程(learning Python)--3.2 if-else分支语句
- SQLServer 学习笔记之超详细基础SQL语句 Part 1
- MyBatis基础学习:动态SQL和SQL语句构建器类
- [ASP基础][SQL语句]ASP中使用SQL语句教程