作者: ls_本性
本文章是关于SQL基本内容,和对表的基本操作,代码为sql server,由于本人也是在学习阶段,难免会有错误,希望大家可以指正。
😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍
SQL语句的种类
DDL(Data Definition Language,数据定义语言)
用来创建或者删除存储数据用的数据库以及数据库中的表等对象。DDL 包含以下几种指令。
- CREATE:创建数据库和表等对象
- DROP: 删除数据库和表等对象
- ALTER: 修改数据库和表等对象的结构
DDL(Data Definition Language,数据定义语言)
用来查询或者变更表中的记录。DML 包含以下几种指令。
- SELECT:查询表中的数据
- INSERT:向表中插入新数据
- UPDATE:更新表中的数据
- DELETE:删除表中的数据
DCL(Data Control Language,数据控制语言)
用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对 RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。DCL 包含以下几种指令。
- COMMIT: 确认对数据库中的数据进行的变更
- ROLLBACK:取消对数据库中的数据进行的变更
- GRANT: 赋予用户操作权限
- REVOKE: 取消用户的操作权限
实际使用的 SQL 语句当中有 90% 属于 DML。
SQL语句大小写与命名
SQL语句的关键字、数据库名、表名不区分大小写,但是插入到表中的数据是区分大小写的。例如,在操作过程中,数据Computer、COMPUTER 或 computer,三者是不一样的。
一般命名习惯:
- 关键字大写
- 表名的首字母大写
- 其余(列名等)小写
表的创建
表的创建
在创建表前需要先创建数据库。
CREATE DATABASE <数据库名称>;
CREATE DATABASE shop;
然后创建表:
CREATE TABLE <表名>
(<列名1> <数据类型> <该列所需约束>,
<列名2> <数据类型> <该列所需约束>,
<列名3> <数据类型> <该列所需约束>,
<列名4> <数据类型> <该列所需约束>,
...
<该表的约束1>, <该表的约束2>,……)
约束可以在定义列的时候进行设置(对列的约束),也可以在语句的末尾进行设置 (主键约束/副键约束)。
在数据库中创建表 1-2 中的商品表(Product 表)的 CREATE TABLE 语句,如代码清单 1-2 所示。
USE Shop
-- 如果不写上面这句,表将会创建在master数据库中,而不是shop中
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));
这里值得说明的是,如果在创建表时没有定义对列的约束,则是采用NULL(可以为空,不是一定为空),但现在还有采用DEFAULT这种默认约束的。
数据类型
- INTEGER型:
用来指定存储整数的列的数据类型(数字型),不能存储小数。 - CHAR型:
是用来指定存储字符串的列的数据类型(字符型)。可以像 CHAR(10) 或者 CHAR(200) 这样,在括号中指定该列可以存储的字符串的长度(最大长度)。字符串超出最大长度的部分是无法输入到该列中的。
该字符串是定长字符串所谓定长字符串,就是当列中存储的字符串长度达不到最大长度的时候,使用半角空格进行补足。例如,我们向 CHAR(8) 类型的列中输入 'abc’的时候,会以 'abc '(abc 后面有 5 个半角空格)的形式保存起来。 - VARCHAR型:
该类型的列是以可变长字符串 的形式来保存字符串的。例如,我们向 VARCHAR(8) 类型的列中输入字符串 ‘abc’ 的时候,保存的就是字符串 ‘abc’。 - DATE型:
用来指定存储日期(年月日)的列的数据类型(日期型)。
约束的设置
约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能。Product 表中设置了两种约束。
- 列约束:
product_id CHAR(4) NOT NULL,
product_name VARCHAR(100) NOT NULL,
product_type VARCHAR(32) NOT NULL,
- 主键约束
PRIMARY KEY (product_id)
个人对主键的理解:通过主键约束可以找到需要的列(该列是唯一的有且只有一个)。
表的删除和更新
表的删除
DROP TABLE <表名>;
DROP TABLE Product;
表的更新
向表中添加列
ALTER TABLE <表名> ADD <列名> ;
ALTER TABLE Product ADD product_name_pinyin VARCHAR(100),product_cy CHAR(10);
在表中删除列
ALTER TABLE <表名> DROP COLUMN <列名>;
ALTER TABLE Product DROP COLUMN product_name_pinyin,product_cy;
在表中插入数据(记录)
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;
使用插入行的指令语句 INSERT,就可以把表 1-2 中的数据都插入到表中了。开头的 BEGIN TRANSACTION 语句是开始插入行的指令语句,结尾的 COMMIT 语句是确定插入行的指令语句。
改变名称
sp_rename更改当前数据库中用户创建的对象(如表,列或用户定义数据类型)的名称
exec sp_rename 'Product', 'Poduct'; --重命名表
exec sp_rename 'Poduct.[product_id]','id','column';-- 改变字段名。
这里还是推荐手动重命名。