数据库的增删改查
创建名为test的测试数据库
create database test;
查看创建好的test数据库
show create database test;
查看所有数据库列表
show databases;
使用创建好的test数据库
use test;
删除创建好的test数据库
drop database test;
数据表的增删改查
创建数据表
create table 表名(
字段名 约束条件,
字段名 约束条件,
字段名 约束条件,
primary key(主键字段名,主键字段名)
);
ps:
常用约束条件
数据类型
数值型: int();float(M,D);double(M,D);
时间日期型:datetime;
字符串型:varchar(M)
约束条件 | 说明 | 语法 |
---|---|---|
PRIMARY KEY | 主键约束 | 字段名 数据类型 PRIMARY KEY |
NOT NULL | 非空约束 | 字段名 数据类型 NOT NULL |
UNIQUE | 唯一约束 | 字段名 数据类型 UNIQUE |
AUTO_INCREMENT | 自增字段 | 字段名 数据类型 AUTO_INCREMENT |
DEFAULT | 默认值 | 字段名 数据类型 DEFAULT 默认值 eg:default ‘-’/default 0 |
新建table2,并且表结构与table1一致:
create table table2 like table1;
为数据表插入数据
直接插入数据:
insert into 表名(字段一,字段二,字段三)
values(值一,值二,值三),
(值一,值二,值三),
(值一,值二,值三)
;
导入外部文本文件:
load data local infile ‘文件路径,注意分隔符左斜’
into table 表名
fields terminated by ‘,’
ignore 1 lines;
ps:.txt格式文本分隔符为 ‘\t’;.csv格式文本分隔符为 ‘,’
excel文件倒入sql注意:
- 数据集中所有列名都得是英文
- 数据存储方式改为csv
- 数据编码方式改为utf-8
检查表数据
检查表内容
select * from 表名;
检查表数据总行数
select count(*) from 表名;
检查表结构
desc 表名;
修改数据表
将数据表emp改名为empdep
alter table emp rename empdep;
将数据表empdep中depname字段的数据类型由varchar(20)修改成varchar(30)alter table empdep modify depname varchar(30);
将数据表empdep中depname字段的字段名改为dep
alter table empdep change depname dep varchar(30);
将数据表empdep中dep字段的字段名改回为depname,并将该字段数据类型该会为varchar(20)
alter table empdep change dep depname varchar(20);
为数据表empdep添加新字段maname,新字段数据类型为varchar(10),约束条件为非空
alter table empdep add maname varchar(10) not null;
将数据表empdep中maname字段的排列顺序改为第一位
alter table empdep modify maname varchar(10) first;
将数据表emp中maname字段的排列顺序改到depid字段之后
alter table empdep modify maname varchar(10) after depid;
删除maname字段
alter table empdep drop maname;
查询表数据
select 〈目标列组〉
from 〈数据源〉
where 〈元组选择条件〉
group by 〈分列组〉 having 〈组选择条件〉
order by 〈排序列1〉〈排序要求desc(降序排列)〉
limit 行数;
where和having的区别:
- where:对表中已有字段进行筛选
- having:对统计结果再筛选
limit的用法:
- limit n :表示返回查询结果的前n行
- limit n,m:表示从m+1行开始,连续返回n行的数据
- limit n offset m:从第m条数据开始取出n条数据
select 语句的操作符
算术操作符
+(加号)、-(减号)、*(乘号)和 /(除号)
比较操作符
=(等于)、>(大于)、<(小于)、<=(小于等于)、>=(大于等于)、!=或<> (不等于)、!>(不大
于)和 !<(不小于)
逻辑运算符
- 逻辑运算符的优先级:not > and > or
- 括号可以改变优先级
区间运算符
- in(条件1,条件2):包含在条件1,条件2之内
- between A and B:在A和B之间
通配符:
- %:匹配任何内容的多个占位符
- -:匹配任何内容的单个占位符
聚合函数
函数名称 | 功能 |
---|---|
avg | 按列计算平均值 |
sum | 按列计算值得总和 |
max | 求一列中的最大值 |
min | 求一列中的最小值 |
count | 按列值计个数 |
distinct | 不重复值,常用于不重复计数 |
改键值
删除字段命令无法执行时需要改键值
set sql_safe_updates = 0;
时间戳格式转为datetime格式
1、创建一个新的日期时间字段
alter table 表名 add 新字段名 datetime not null;
2、用原时间戳字段为新字段赋值
update 表名 set 新字段名= from_unixtime(时间戳字段名);
ps:为什么不能自己给自己赋值,因为数据类型不一样,等号两边的数据类型需要一致
3、删除原有时间戳字段
alter table 表名 drop column 时间戳字段名;
存储过程(stored procedures)
函数:封装批处理过程;
函数化:可以通过参数反复调用(输入不同的参数解决不同的问题);
大型函数:低级函数不断封装到高级的过程;
软件世界:函数>>对象(类/实体)>>程序>>系统