数据库类型 (DDL DML DQL DCL)
(一).DDL: 数据定义语言:简称DDL(Data Definition Language)
(二).DML: 数据操作语言:简称DML(Data Manipulation Language)
(三).DQL: 数据查询语言:简称DQL(Data Query Language)
(四).DCL: 数据控制语言:简称DCL(Data Control Language)
知识点:
(一).DDL: 数据定义语言:简称DDL(Data Definition Language)
作用: 用来定义数据库对象:数据库,表,列/字段等。 关键字: create,drop,alter等
一.数据库操作
数据库关键字:create创建 drop删除 use使用 show查看所有
1.创建数据库: create database [if not exists] 数据库名;
2.删除数据库: drop database 数据库名;
3.使用/切换数据库: use 数据库名;
④.查看操作 1.查看所有的数据库名: show databases; 2.查看当前使用的数据库: select database(); select database(); 3.查看指定库的建库语句: show create database 数据库名;
注意:
创建库只有use后不接database,接数据库名. database后接库名
创建库关键词 create创建 drop删除 use使用 show查看所有 select database()查看当前使用 show create 查看建库语句
二.库中表的操作
库中表关键词: create创建 drop删除 rename...to...修改表名 show查看所有
desc查看表信息结构
1.创建表
格式化代码快捷键: ctrl+alt+L
创建create table [if not exists] 表名(id int);
create table if not exists 表名(`desc`
varchar(100)); 用反引号标
关键词
2.删除表:
drop table [if exists] 表名; drop table 表名;
3.修改表名:
rename table 旧表名 to 新表名;
rename table 旧表名 to 新名;
4.查看所有表 show tables;
5.查看表结构 desc 表名;
查看指定表的建表语句: show create table 表名;
注意:
创建表只有desc后不接table,接表名. table 后接表名; 表名(字段名 字段类型);
①创建create table [if not exists] 表名(字段名 字段类型,字段名 字段类型,字段名 字段类型....);
②删除drop table [if exists] 表名;
③修改表名rename table 旧表名 to 新表名;表名
④查看所有表 show tables; 查看表结构 desc 表名;
查看指定表的建表语句 show create table 表名;
库中表关键词 create创建 drop删除 rename...to...修改表名 show查看所有 desc查看表信息结构 show create 查看建表语句
三.修改表中字段(增删改) 修改定义的字段名和字段类型
修改表中字段关键词: alter修改 alter...add..添加字段 alter...drop..删除字段
alter...change 修改字段名;字段类型 modify 只修改字段类型 desc查看信息结构
1.添加字段:
alter table 表名 add [column] 字段名 字段类型 [字段约束];
:alter table 表名 add [column] name varchar(100);
2.删除字段:
alter table 表名 drop [column] 字段名;
:alter table 表名 drop [column] name;
3.修改字段名和字段类型:
alter table 表名 change [column] 旧字段名 新字段名 字段类型 [字段约束];
:alter table 表名 change [column] name hight varchar(100);
4.modify只修改字段类型:
alter table 表名 modify [column] 字段名 字段类型 [字段约束];
alter table 表名 modify [column] name varchar(100);
5.查看字段信息=查看表结构
desc 表名;
注意:
修改表只有desc后不接table,接表名;
修改字段关键词 alter增删 alter...add..添加字段 alter...drop..删除字段 alter...change 修改字段名;字段类型 modify 只修改字段类型
desc查看信息结构
(二).DML: 数据操作语言:简称DML(Data Manipulation Language)
作用:用来对数据库中表的记录进行更新。 关键字: insert,delete,update等
四.表中记录操作(增删改)[今日重点]
1.插入数据记录:
insert into 表名 (字段名,字段名,字段名...) values (具体值,具体值,具体值,...) , (具体值,具体值,具体值...); 注意1: 具体值要和前面的字段名以及顺序一一对应上 注意2: 如果要插入的是所有字段,那么字段名可以省略(默认代表所有列都要插入数据) 注意3: 如果要插入多条记录,values后多条数据使用 逗号 分隔
:insert into 表名(name, age, hight, weight ,...) values ('张三', 26, 186, 40 ,...), ('李四', 20, 179, 62 ,...);
注意2: insert into 表名 values ('张三', 26, 186, 40 ,...)('李四', 20, 179, 62 ,...);
2.修改数据记录:
update 表名 set 字段名=值 [where 条件]; 注意: 如果没有加条件就是修改对应字段的所有数据
update 表名 set name='王五' where age=26;
注意: update 表名 set name='王五'; (没有加条件就是修改对应字段的所有数据);
3.删除数据记录:
delete from 表名 [where 条件]; 注意: 如果没有加条件就是删除所有数据
delete from 表名 where name='张三'; 删除名字叫张三的一列数据
注意: delete from 表名; (报黄警告,提示选择excute执行,删除表所有数据);
表中记录操作关键词: 关键词后接表名
insert into 表名 values (),()..;插入数据内容
update 表名 set 字段名=值 [where 条件]; 修改数据内容
delete from 表名 [where 条件]; 删除数据内容
五.约束
约束作用:约束实际上就是表中数据的限制条件
1.主键约束
主键约束关键字: primary key
主键约束特点: 限制主键插入的数据不能为空,不能重复
建表的时候添加主键约束: create table 表名(主键名 主键类型 primary key , 其他字段...);
注意: 一个表中只能有一个主键
2.非空约束
非空约束关键字: not null
非空约束特点: 限制对应数据不能为空null
建表的时候添加非空约束: create table 表名(主键名 主键类型 primary key ,字段名 字段类型 not null , 其他字段...);
注意: 一个表中可以有多个非空约束
3.唯一约束
唯一约束关键字: unique
唯一约束特点: 限制对应的数据不能重复
建表的时候添加唯一约束: create table 表名(主键名 主键类型 primary key ,字段名 字段类型 unique, 其他字段...);
注意: 一个表中可以有多个唯一约束
4.默认约束
默认约束关键字: default
默认约束特点: 可以提前给字段设置默认值
建表的时候添加默认约束: create table 表名(主键名 主键类型 primary key ,字段名 字段类型 default 默认值, 其他字段...);
注意: 一个表中可以有多个默认约束
5.外键约束
外键约束关键词:foreign key
创建外键: create table 表名(字段定义…CONSTRAINT `外键名称` foreign key (字段)references 主表名(主键字段) 属性)
修改外键: alter table 表名 add constraint `外键名称` foreign key (外键字段)references 主表(主键) 属性);
删除外键 alter table 表名 drop foreign key 外键名称;
(三).DQL: 数据查询语言:简称DQL(Data Query Language)
作用:用来查询数据库中表的记录。 关键字: select,from,where等
六.表中数据查询
1.基础查询
基础查询关键字: select:查什么 from: 从哪儿查
基础查询格式: select [distinct] 字段名 | * from 表名;
[]:可以省略
|: 或者
*: 对应表的所有字段名
distinct: 去除重复内容
as : 可以给表或者字段起别名
基础查询实例:
# 需求1: 查询所有的商品信息
select pid,pname,price,category_id from product;
select * from product;
# 需求2: 只查询商品名称和对应价格
select pname,price from product;
# 需求3: 查询商品分类id,要求去重
select distinct category_id from product;
# 需求4: 查询商品名称和对应价格,要求最终展示字段名为商品名称和商品价格
# 实际工作中不建议用中文,此处仅仅为了演示
select pname as 商品名称,price as 商品价格 from product;
# 注意: as 关键字可以省略
select pname 商品名称,price 商品价格 from product;
# 需求5: 所有的商品价格要求加100元展示
select pname 商品名称,price+100 商品价格 from product;
2.条件查询
条件查询关键字: where
条件查询基础格式: select 字段名 from 表名 where 条件;
比较运算符: > < >= <= != <>
逻辑运算符: and or not
范围 查询: 连续范围:between x and y 非连续范围: in(x,y)
模糊 查询: 关键字:like %:0个或者多个字符 _:一个字符
非空 判断: 为空: is null 不为空:is not null
①.比较查询
# 1.比较运算符: > < >= <= != <>
# 需求1: 查询商品价格大于800的商品信息
select * from product where price > 800;
# 需求2: 查询商品价格小于800的商品信息
select * from product where price < 800;
# 需求3: 查询商品价格大于等于800的商品信息
select * from product where price >= 800;
# 需求4: 查询商品价格小于等于800的商品信息
select * from product where price <= 800;
# 需求5: 查询商品价格不等于800的商品信息
select * from product where price != 800;
select * from product where price <> 800;
②.逻辑查询
# 2.逻辑运算符: and or not
# 需求1: 查询商品价格介于200-2000之间(含200,2000)的商品信息
select * from product where price >= 200 and price <= 2000;
# 需求2: 查询商品价格等于200或者等于2000的商品信息
select * from product where price = 200 or price = 2000;
# 需求3:查询商品价格不在200-2000之间(含200,2000)的商品信息
select * from product where not (price >= 200 and price <= 2000);
③.范围查询
# 3.范围查询: 连续范围:between x and y 非连续范围: in(x,y)
# 需求1: 查询商品价格介于200-2000之间(含200,2000)的商品信息
select * from product where price between 200 and 2000;
# 需求2: 查询商品价格等于200或者等于2000的商品信息
select * from product where price in(200,2000);
# 需求3: 查询商品价格不在200-2000之间(含200,2000)的商品信息
select * from product where price not between 200 and 2000;
# 需求4: 查询商品价格不等于200和2000的其他商品信息
select * from product where price not in(200,2000);
④.模糊查询
# 4.模糊 查询: 关键字:like %:0个或者多个字符 _:一个字符
# 需求1: 查询商品名称以'香'开头的所有商品信息
select * from product where pname like '香%';
# 需求2: 查询商品名称包含'想'字的所有商品信息
select * from product where pname like '%想%';
# 需求3: 查询商品名称以'斯'字结尾的所有商品信息
select * from product where pname like '%斯';
# 需求4: 查询商品名称第三个字是'斯'的商品信息
select * from product where pname like '__斯%';
# 需求5: 查询商品名称以'香'开头并且是三个字的所有商品信息
select * from product where pname like '香__';
⑤非空判断
# 5.非空 判断: 为空: is null 不为空:is not null
# sql中null代表空的无意义的意思,和空字符串''以及字符串'null'不是一回事!!!
# 需求1: 查询商品分类id为空的商品信息
select * from product where category_id is null;
# 需求2: 查询商品分类id不为空的商品信息
select * from product where category_id is not null;
# 需求3: 查询商品分类id是空字符串的商品信息
select * from product where category_id = '';
# 需求4: 查询商品分类id是名为'null'的商品信息
select * from product where category_id = 'null';
(四).DCL: 数据控制语言:简称DCL(Data Control Language)
用来定义数据库的访问权限和安全级别,及创建用户。
了解即可
[拓展知识:字段类型知识点]
1.year显示格式:“yyyy”,表示的是年份值。
取值范围:1901 ~ 2155 存储空间:1个字节
2.date显示格式:“yyyy-mm-dd”,表示的是日期值。取值范围:1000-01-01 ~ 9999-12-3存储空间:3个字节
3.time显示格式:“hh:mm:ss”,表示的是时间值。取值范围:-838:59:59 ~ 838:59:59,小时部分如此大的原因是 TIME 类型不仅可以用于表示一天的时间(必须小于 24 小时),还可能是某个事件过去的时间或两个事件之间的时间间隔(可大于 24 小时,或者甚至为负)。存储空间:3个字节
4.datetime显示格式:“yyyy-mm-dd hh:mm:ss”,表示的是日期和时间值。取值范围:1000-01-01 00:00:00 ~ 9999-12-31 23:59:59存储空间:8个字节
5.timestamp显示格式:“yyyymmddhhmmss”,表示的是时间戳值(时间戳是指格林威治时间自1970年1月1日(00:00:00 GMT)至当前时间的总秒数)。取值范围:1980-01-01 00:00:01 UTC ~2040-01-19 03:14:07 UTC存储空间:4个字节
6.datetime和timestamp的其他区别datetime在存储日期数据时,按实际输入的格式存储,即输入什么就存储什么,与时区无关;而 timestamp值的存储是以 UTC(世界标准时间)格式保存的,存储时对当前时区进行转换,检索时再转换回当前时区。即查询时,根据当前时区的不同,显示的时间值是不同的.