1. 库的操作
- sql–结构化查询语言:有具体格式与语法规则
- 库表字段名称不能使用关键字–如果非要使用则需要使用反引号``括起来,不区分大小写
- 查看:
show databases;
- 创建:
create database dbname;
create database if not exists dbname;
- 删除:
drop database dbname;
- 使用:
use dbname;
- 查看当前使用的数据库:
select database();
2. 数据类型
- 整型:bit(), tinyint, int, bigint
- 浮点型:float(m,d), double(数字个数m,数字中小数的个数d),decimal(m,d)(建议使用), numeric(m,d)
- 字符串型:varchar(32)–可变长–最多存储32个字符, text, mediumtext, blob
- 日期型:datetime(常用), timestamp
3. 表的操作
3.1 表的基本操作
- 表:以行列的关系模型组织数据,一个库中可以存在多张表
- 学生信息表:学号,姓名,年龄,性别,身高,体重…
- 创建:
create table if not exists stu( sn int, name varchar(32), age int, sex varchar(1), height int, weight decimal(4,1));
- 查看:
show tables;
- 描述表结构
describe stu;
show create table stu;
- 修改:
alter table stu add birth datetime;
- 删除:
drop table stu;
3.2 表中数据的增删改查
-
简单查询:
select * from stu;
-
新增:
insert
,
·insert into stu value(01, '张三', 20, '男', 185, '72.5', '2000-07-05 07:07:02');
·insert into stu(name, sn, sex) value('李四', 02, '女');
·insert into stu value(03, '王五', 21, '男', 180, '68.5', '2000-07-07 07:05:02'), (04, '赵六', 24, '男', 180, '65.5', '1997-07-07 07:07:07');
-
修改:
update
·update stu set age = 21,height = 183 where sn = 01;
·update stu set age = 21,height = 165, weight= 45.8 where sn = 02;
-
删除:
delete
·delete from stu where sn = 03;
-
查询:
select
·select * from stu;
–默认全列
·select height, weight, name from stu;
--指定列查询
· 查询字段为表达式+取别名:as
select weight+height as hw, name from stu;
· 去重:distinct
select distinct height from stu;
· 排序:order by
desc/asc
select * from stu order by height desc, age asc;
-
分页查询:
limit
·select * from stu order by height desc limit 3;
·select * from stu order by height desc limit count offset page*count;
-
条件查询:
where
·select * from stu where name = '张三';
-
关系运算符
· 比较:>,>=,<,<=,=,!=,<=>,<>
· 空值:is null
is not null
· 范围:between and
,select * from stu where height between 170 and 180;
· 子集匹配:in
(集合)select * from stu where name in ('王五'; '赵五','李五');
· 模糊匹配:like
select * from stu where name like '%五%';
-
逻辑运算符
· 与:双目,and-连接两个比较条件,两者同为真则结果为真;
· 或:双目,or-连接两个比较条件,两个任意一个为真,则结果为真;
· 非:单目,not-针对单个比较条件,条件为真,则结果为假。 -
分组查询:
group by having
· 以表中某一字段作为分组依据进行数据统计的分组查询;
· 分组查询的字段只能是分组依据字段以及聚合函数;
· 分组查询中不能使用where条件查询,如果条件过滤使用having。
select role, sum(salary) from emp group by role;
select role,sum(salary),max(salary),min(salary),avg(salary) from emp group by role having avg(salary)>1500;
-
聚合函数
· 真的的结果中的数据的某个字段进行某种统计运算。
·count(*)
– 统计数据条数;
·sum(fields)
– 统计指定字段的和;
·max(fields)
– 统计指定字段中的最大值;
·min(fields)
– 统计指定字段中的最小值;
·avg(fields)
– 统计指定字段中的平均值;
3.3 表中数据的增删改查进阶
键值约束与扩展属性
- 键值约束:约束表中指定字段的数据必须符合某种规则
- 种类:
· 非空约束:NOT NULL-- 约束指定字段的数据不能为NULL;
· 唯一约束:UNIQUE-- 约束指定字段的数据不能出现重复;
· 主键约束:primary key-- 数据非空且唯一,一张表只有一个主键;
· 外键约束:foreign key-- 表中指定字段的数据受父表数据约束;
· 默认值:DEFAULT-- 为指定字段设置默认值;
· 自增属性:AUTO_INCREMENT-- 整型字段数据自动+1;