DDL 数据定义语言 用来定义数据库对象 库 表 列等
DML 数据操作语言 用来操作数据库表中的记录(数据)
DQL 数据查询语言 用来查询记录
DCL 数据控制语言 用来定义访问权限和安全级别
DDL
#注释
/*多行注释*/
-- 创建数据库 create
-- SQL 不区分大小写
-- 创建一次 再次执行代码 需要注释 此行 否则 报错 或者单独选中 需要执行的 语句
-- create database mydb2;
-- create database mydb3 character set utf8;
-- show databases; -- 查询
--
alter database mydb3 character set gbk; -- 修改
--
drop database mydb2; -- 删除
--
use mydb1; -- 选择数据库
-- select database(); -- 查看当前选择的是哪个数据库
-- 创建表
/*
use mydb1;
create table mytable2
(
id int,
gender varchar(10)
);
*/
/*
常用数据类型:
int 整数
double 浮点型 double(5,2) 表示最多5位 其中必须有2位
char 固定长度字符串类型 char(5)
varchar 可变长度字符串类型
text 字符串类型
blob 字节类型
date 日期类型 格式 yyyy-MM-dd
time 时间类型 格式为 hh:mm:ss
timestamp 时间戳类型 yyyy-MM-dd hh:mm:ss 自动赋值
datetime 日期时间类型 yyyy-MM-dd hh:mm:ss
*/
-- show tables; -- 查看所有表
-- desc mytable1; -- 查看表中字段
-- alter table mytable2 add image blob; -- 表中添加字段
-- alter table mytable2 modify gender varchar(15); -- 修改表中字段
-- alter table mytable2 drop image; -- 删除表中字段
-- rename table mytable2 to mytable22; -- 修改表名
-- show create table mytable22; -- 查看表的创建细节
-- alter table mytable22 character set gbk;-- 修改表的字符集为gbk
-- alter table mytable22 change gender ggeennddeerr varchar(10); -- 修改表中字段名
DML
select* from mytable1; -- 查询表中数据
/*insert into mytable1(id,name)
values(2,'16'); */ -- 插入数据
-- insert into mytable1 values(2,'16'); -- 插入数据 简写 values(2,'')占内存 values(2)不占内存 null
/* update mytable1 set name ='16'
where id = 2; */ -- 修改数据 where name = 'xx'也可以
-- delete from mytable1 where id = 2; -- 删除表中数据 结构还在 可以找回
DQL
create database DB1;
use DB1;
create table STU(
sid char(6),
sname varchar(50),
age int,
gender varchar(50)
);
-- drop table STU;
insert into STU values('01','reimu',1,'female');
insert into STU values('02','marisa',2,'male');
#查询
-- 基础查询 所有列
select*from STU;
-- 指定列查询
select sid,sname from STU;
-- 条件查询
/*
*
> < >= <= = !=
<>不等于
not 不是 or 或 and 与 is 是 is not 不是 is null 是空 is not null 不是空
between a and b ab之间
*/
select *from STU
where gender = 'male' and age = 2;
-- 满足 数据集里的内容任意都可以查询到 相当于 or
select *from STU
where sid in('01','02');
-- 模糊查询 like
/*
通配符
_任意一个字符 %n 任意0-n个字符
*/
-- 确定个数
select *from STU
where sname like '_____';
-- 不确定个数
select *from STU
where sname like 'r%';
-- 固定特殊位置但是总个数不定
select *from STU
where sname like '_a%';
-- 不固定特定位置但是包含
select *from STU
where sname like '%m%';
-- 字段控制查询
-- 去除重复记录 distinct
select distinct gender from STU;
-- 求和 任何值和null计算都是null
-- select x,y x+y from table;
-- 函数 ifnull(age,1) 如果age是null那么age=1
-- x as 'name' x起别名
-- 升序排序
select *from stu
order by sid asc;
-- 降序排序
select *from stu
order by sid desc;
-- 按照x升序排序 如果相同再按照y升序排序
select *from stu
order by sid asc,age asc;
-- 聚合函数
-- count() 统计指定列不为null的记录行数
select count(*) as 记录数 from stu;
-- sum() 指定列的和
select sum(age) as 年龄和 from stu;
-- avg() 指定列平均数
select avg(age) as 年龄平均数 from stu;
-- max() min() 指定列最大 最小值
select max(age) as 年龄最大 from stu;
select min(age) as 年龄最小 from stu;
-- 分组查询
select gender,count(*) as 男或者女个数 from stu group by gender;
-- where 对分组前的数据进行操作且不可以接 聚合函数
select gender,sum(age) as 年龄和 from stu where age<10 group by gender;
-- having 对分组后的数据进行操作可以接 聚合函数 后面可以接多个条件
select gender,sum(age) as 年龄和 from stu where age<10 group by gender having sum(age)>1;
-- limit 分页查询 所有数据分页 一页显示几个
select *from stu limit 0,2;
-- 从第0行开始 查询1条
select *from stu limit 0,3;
-- 0 当前页 3显示几条数据
-- 数据的完整性 创建表的时候添加约束保证不能随便添加数据
-- 实体 表中的一行
-- 实体完整性 标识每一行数据不同
-- 主键约束 pk 要求 数据唯一 不能为null 比如id
-- 方法一
create table table1(
tid int primary key, -- 设置主键约束
tname varchar(5)
);
-- 方法二
create table table2
(
tid int,
tname varchar(5),
primary key(tid,tname) -- 联合主键 两个都一样才触发
);
-- 方法三
create table table3
(
tid int
);
-- 添加约束语句
alter table table3 add constraint pk_table3_id primary key(tid);
-- 唯一键 可以为null
create table table4
(
tid int primary key,
tname varchar(5) unique -- 设置唯一键
);
-- 自动增长列 只能是整数类型 一般配合主键一起用
create table table5
(
tid int primary key auto_increment
);
-- 域完整性 单个格子检测数据是否正确
-- 非空约束
create table table6
(
tid int not null
);
-- 默认值约束
create table table7
(
tname varchar(50) not null default'far'
);
insert into table7(tname) values(default);
select *from table7;
-- 引用完整性
-- 外键约束 外检列的数据类型一定和主键的类型一致
create table table8
(
tid int,
constraint fk_table8_tid foreign key(tid) references table3(tid)
);
没有评论:
发表评论