DDL之表操作:table
DDL(Data Definition Language) 本小结描述 对数据表的创建查看删除和使用。
创建表
- 基本格式:
字段名 参数规定表中列的名称。
数据类型 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。
长度 参数规定表中列的最大长度。
更多数据类型见附录:
示例:
现在我们想要创建一个名为 "Persons" 的表,包含五列:PersonID、LastName、FirstName、Address 和 City。
我们使用下面的 CREATE TABLE 语句:
PersonID 列的数据类型是 int,包含整数。
LastName、FirstName、Address 和 City 列的数据类型是 varchar,包含字符,且这些字段的最大长度为 255 个字符。
1.增强格式:
SQL 约束用于规定表中的数据规则。
如果存在违反约束的数据行为,行为会被约束终止。
约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。
在 SQL 中,我们有如下约束:
- NOT NULL - 指示某列不能存储 NULL 值。
- UNIQUE - 保证某列的每行必须有唯一的值。
- PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
- FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
- CHECK - 保证列中的值符合指定的条件。
- DEFAULT - 规定没有给列赋值时的默认值。
在后面的章节,我们会讲解相关的约束。
查看表
查看数据库中的所有表:
格式:show tables;
- 查看表结构:
格式:desc 表名;
例如:desc sort;
删除表
- 格式:drop table 表名;
例如:drop table category;
修改表结构 格式:
- alter table 表名 add 列名 类型(长度) [约束];
作用:修改表添加列.
例如:
#1,为分类表添加一个新的字段desc为分类描述,类型是 varchar(20)
ALTER TABLE category ADD `desc` VARCHAR(20);
alter table 表名 modify 列名 类型(长度) [约束];
作用:修改表修改列的类型长度及约束.
例如:
#2, 为分类表的描述字段desc进行修改,类型varchar(50) 添加约束 not null
ALTER TABLE category MODIFY desc VARCHAR(50) NOT NULL;
- alter table 表名 change 旧列名 新列名 类型(长度) [约束];
作用:修改表修改列名.
例如:
#3, 为分类表的分类名称字段进行更换更换为 snamesname varchar(30)
ALTER TABLE category CHANGE desc description VARCHAR(30);
alter table 表名 drop 列名;
作用:修改表删除列.
例如:
#4, 删除分类表中snamename这列
ALTER TABLE category DROP description;
rename table 表名 to 新表名;
作用:修改表名
例如:
#5, 为分类表category改名成 category2
RENAME TABLE category TO category2;
alter table 表名 character set 字符集;
作用:修改表的字符集
例如:
#6, 为分类表 category 的编码表进行修改,修改成 gbk
ALTER TABLE category CHARACTER SET gbk;
DML数据操作语言
简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新
插入表记录:insert
- 语法:
-- 向表中插入某些字段
insert into 表 (字段1,字段2,字段3..) values (值1,值2,值3..);
--向表中插入所有字段,字段的顺序为创建表时的顺序
insert into 表 values (值1,值2,值3..);
- 注意:
值与字段必须对应,个数相同,类型相同
值的数据大小必须在字段的长度范围内
除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)
如果要插入空值,可以不写字段,或者插入 null。
- 例如:
INSERT INTO category(cid,cname) VALUES('c001','电器');
INSERT INTO category(cid,cname) VALUES('c002','服饰');
INSERT INTO category(cid,cname) VALUES('c003','化妆品');
INSERT INTO category(cid,cname) VALUES('c004','书籍');
INSERT INTO category(cid) VALUES('c002');
INSERT INTO category(cname) VALUES('耗材');
更新表记录:update
用来修改指定条件的数据,将满足条件的记录指定列修改为指定值
- 语法:
--更新所有记录的指定字段
update 表名 set 字段名=值,字段名=值,...;
--更新符号条件记录的指定字段
update 表名 set 字段名=值,字段名=值,... where 条件;
- 注意:
- 列名的类型与修改的值要一致.
- 修改值得时候不能超过最大长度.
除了数值类型外,其它的字段类型的值必须使用引号引起
删除记录:delete
- 语法:
delete from 表名 [where 条件];
或者
truncate table 表名;
- 面试题:
删除表中所有记录使用delete from 表名; 还是用truncate table 表名;
删除方式:delete 一条一条删除,不清空auto_increment记录数。
truncate 直接将表删除,重新建表,auto_increment将重置,从1重新开始。
DQL数据查询语言
简称DQL(Data Query Language),用来查询数据库中表的记录。
准备工作
#创建商品表:
CREATE TABLE product(
pid INT PRIMARY KEY,
pname VARCHAR(20),
price DOUBLE
);
INSERT INTO product(pid,pname,price) VALUES(1,'联想',5000);
INSERT INTO product(pid,pname,price ) VALUES(2,'海尔',3000);
INSERT INTO product(pid,pname,price ) VALUES(3,'雷神',5000);
INSERT INTO product(pid,pname,price ) VALUES(4,'JACK JONES',800);
INSERT INTO product(pid,pname,price ) VALUES(5,'真维斯',200);
INSERT INTO product(pid,pname,price ) VALUES(6,'花花公子',440);
INSERT INTO product(pid,pname,price ) VALUES(7,'劲霸',2000);
INSERT INTO product(pid,pname,price ) VALUES(8,'香奈儿',800);
INSERT INTO product(pid,pname,price ) VALUES(9,'相宜本草',200);
INSERT INTO product(pid,pname,price ) VALUES(10,'面霸',5);
INSERT INTO product(pid,pname,price ) VALUES(11,'好想你枣',56);
INSERT INTO product(pid,pname,price ) VALUES(12,'香飘飘奶茶',1);
INSERT INTO product(pid,pname,price ) VALUES(13,'果9',1);
语法:
select [distinct]
*| 列名,列名
from 表名字
where 条件
简单查询
1.查询所有的商品.
select * from 表名;
2.查询商品名和商品价格.
select 列名1,列名2 from 表名;
3.去掉重复值.
select distinct 列名 from 表名;
4.查询结果是表达式(运算查询):
select 列名 运算符 操作数 from product;
如 :
查询所有商品的价格显示时加10元.
5.别名查询使用的关键字是as(as可以省略的)
列别名:select 列名 as 别名 from 表名;
表别名: select * from product as p;
1.查询所有的商品. select * from product;
2.查询商品名和商品价格. select pname,price from product;
3.别名查询.使用的关键字是as(as可以省略的).
3.1表别名: select * from product as p;
3.2列别名:select pname as pn from product;
4.去掉重复值. select distinct price from product;
5.查询结果是表达式(运算查询):将所有商品的价格+10元进行显示.
select pname,price+10 from product;
条件查询
题干:
#查询商品名称为“花花公子”的商品所有信息:
#查询价格为800商品的全部信息
#查询价格不是800的所有商品的名字和价格
#查询商品价格大于60元的所有商品全部信息
#查询商品价格在200到1000之间所有商品的全部信息
#查询商品价格是200或800的所有商品的全部信息
#查询名字含有'想'字的所有商品的全部信息
#查询商品名字以'香'开头的所有商品的商品名和价格
#查询名字第二个字为'想'的所有商品的全部信息
# 查询商品价格为空的商品全部信息
# 查询商品价格不为空的商品全部信息