数据库中存储的表结构,行称为记录,列称为字段.
DDL:数据定义语言
用来创建或者删除存储数据用的数据库以及数据库中的表等对象
CREATE
DROP
ALTER:修改数据库和表等对象的结构
DML:数据操纵语言
用来查询或者变更表中的记录
SELECT:查询表中数据
INSERT:向表中插入新数据
UPDATE:更新表中的数据
DELETE:删除表中的数据
DCL:用来确认或者取消对数据库中的数据进行的变更
SQL基本书写规则:
语句以分号(;)结尾
不区分关键字大小写,但是插入到表中数据是区分大小写
win系统默认不区分表名以及字段名的大小写
linux/mac默认严格区分表名及字段名大小写
常数的书写方式是固定的
‘abc’,‘1234’,‘2010-01-26’
SQL语句的单词质检需要使用半角空格或换行符来进行分隔,且不能使用全角空格作为单词的分隔符,否则会发生错误
基本语法:
数据库的创建:CREATE DATABASE <数据库名称>;
表的创建:CREATE TABLE<表名>
(<列名1><数据类型><该列所需约束>,
<列名2><数据类型><该列所需约束>,
.
.
.
)
eg.CREATE TABLE product(
product_id CHAR(4) NOT NULL,
product_name VARCHAR(100) NOT NULL,
sale_price INTEGER,
.
);
命名规则
只能使用半角英文、数字、下划线作为数据库、表和列的名称
名称必须以半角英文字母开头,不能以数字、下划线开头
数据类型的指定
INTEGER
指定存储整数的列的数据类型,不能存储小数
CHAR型
存储定长字符串,当列中存储的字符串长度达不到最大长度的时候,使用半角空格进行不足,由于会浪费存储空间,一般不使用
VARCHAR型
存储可变长度字符串,定长字符串在字符数未达到最大长度时会用半角空格补足,但可变长度字符串不同,即使字符数未达到最大长度,也不会用半角空格补足
DATE型
指定存储日期(年月日)的列数据类型(日期型)
表的删除和更新
删除表
DROP TABLE <表名>;
DROP TABLE product; 表删除后都无法恢复,所以要提前做好备份
添加列的ALTER TABLE语句
ALTER TABLE <表名> ADD COLUMN <列的定义>;
添加一列可以存储100位的可变长字符串的product_name_pinyin列
ALTERE TABLE product ADD COLUMN product_name_pinyin VARCHAR(100);
删除列的ALTER TABLE语句
ALTER TABLE <表名> DROP COLUMN <列名>;
ALTER TABLE product DROP COLUMN product_name_pinyinl;
删除product_name_pinyin列
ALTER TABLE product DROP COLUMN product_name_pinyin;
ALTER TABLE 和 DROP TABLE语句一样执行之后无法恢复
清空表内容:
TRUNCATE TABLE TABLE_NAME
相比drop/delete truncate用来清除数据时,速度最快
数据的更新
UPDATE
SET = [,<列名2>=<表达式2>…];
WHERE<条件>;
ORDER BY 子句
LIMIT 子句
使用UPDATE时要注意添加WHERE条件,否则会将所有号行按照语句修改
修改所有注册时间
eg.UPDATE product
SET regist_date = ‘2009-10-10’;
–仅修改部分商品单价
UPDATE product
SET sale_price = sale_price * 10
WHERE product_type = ‘厨房用具’;
--将商品编号为0008的数据(圆珠笔)的登记日期更新为N ULL
UPDATE product
SET regist_date = NULL
WHERE product_id = ‘0008’;
和 INSERT语句一样,UPDATE语句也可以将NULL作为一个值来使用。
但是只有未设置NOT NULL约束和主键约束的列才可以清空NULL。如果将设置了上述约束的列更新为NULL,就会出错,这点与insert相同
多列更新
UPDATE语句的SET子句支持同时将多个列作为更新对象
UPDATE product
SET sale_price = sale_price * 10
WHERE product_type ‘厨房用具’;
UPDATE product
SET purchase_price = purchase_price / 2
WHERE produce_type = ‘厨房用具’;
1
2
3
4
5
6
7
8
9
10
11
12
13
合并写法
UPDATE product
SET sale_price = sale_price * 10
purchase_price = purchase_price / 2
WHERE product_type = ‘厨房用具’;
1
2
3
4
5
6
7
8
9
SET子句中列不仅可以是两列,还可以是三列或者更多
向product表中插入数据
INSERT INTO (列1, 列2, 列3,…) values(值1,值2,值3,…);
对表进行全列INSERT时,可以省略表名后的列清单,这时values子句的值会默认按照从左到右的顺序赋给每一列
多行INSERT:
通常的INSERT:
INSERT INTO productins VALUES ('0002', '打针器', '办公用品', 500, 320, '2009-09-20'),('0003' ,'运动T恤', '衣服', 4000, 2800, NULL),
('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');