CRUD简介
即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。
In computing, CRUD is an acronym for create, Retrieve, update, and delete. It is used to refer
to the basic functions of a database or persistence layer in a software system.
C reate new records
R etrieve existing records
U pdate existing records
D elete existing records.
平常我们说的系统开发中的增改查删可以用CURD来表示
增加:Create 修改:Update查找:Read删除:Delete
外国人喜欢CRUD,表示增查改删:
增加:Create读取查询:Retrieve更新:Update删除:Delete
创建(create)
创建数据库
create database 数据库名字 default charset utf8;
创建表
create table test(
id int auto_increment primary key,
name varchar(10),
money double(15,1) not null,
sex enum('男','女') default '男',
regtime date,
retime time,
birth timestamp
) ;
PS:auto_increment 在添加新数据中数值自增1
varchar 变长字符串
double 双精度小数
not null 不能为空
enum 枚举(单选)
default 默认
date 存放年月日
time 存放时分秒
timestamp存放年月日时分秒(不填写自动获取当前时间)
generated always as生成列(5.7及以上的版本可以使用)
create table tt3(
c1 int,
c2 int generated always as (c1*2)
);
PS:c2是c1数值的2倍
添加(insert)
添加表数据
1、insert into test values(3,'jackson',11.2,'男','2022-2-15',current_time,NOW()); -- 添加多个数据时用values 一个数据时用value
2、insert into test set id=4,name='jackson',money=11.2,sex='男',regtime='2022-2-15',retime=current_time,timestamp=now();
3、insert into test(id,money,sex) values(5,13.8,'女');-- 在表名后面(属性名) values(对应属性值),可以选择性添加数据
删除(delete)
删除数据delete和truncate的区别
delete:可以加上条件一条一条的记录删除,灵活,但效率低,会触发删除触发器 truncate:直接截取数据,删除所有数据,auto_increment 恢复默认,效率高,不会触发删除触发器,不影响行
truncate用法
truncate table 表名; truncatet 表名;
删除一个属性
alter table t1 drop id;
删除某一行
delete from 表名 where id=5(条件);
删除表中的数据记录
delete from 表名 where name='李四';-- 删除表名中name='李四'的数据;
PS:where 后面+条件
删除表字段
alter table 属性名 drop column
修改(alter)
修改表名称
alter table t1 rename t2;
修改表数据(update)
update test set sno =18; update 表名 set 属性名=属性值;
update test set sname='李四' where son =18;PS:在有主键的情况下,需要添加where 条件 update 表名 set 属性名=属性值 where 属性名=属性值;where后面还可以是 where like 属性值;一般字符用like 数值用=
修改表数据(replace)
replace test set id=4,name='jackson',money=11.5,sex='男',regtime='2022-2-15',retime=current_time,birth=now();
增加一个属性(字段)
alter table t1 add name varchar(30) not null,
修改一个属性(字段名)
create table t1( c1 tinyint, c2 int generated always as (c1*2) ) PS:把原表中c12修改成c13 alter table t1 modify c2 int generated always as (c13);
修改一个属性的类型 tinyint改成int
基本查询(select)
select * from test; select * from 表名;
select sno,sname,saddr,ssort from test order bu ssort asc; select 属性名,属性名,属性名,属性名 from 表名 order by 属性名 asc; PS:order by 属性名 asc; 某一个属性 升序
查询限制结果行
limit限制结果最大行数
select sno,sname form test limit 3000; select 属性名,属性名 from 表名 limit 3000; -- 查询结果只有3000行
select son,sname form test limit 0,3; select 属性名,属性名 from 表名 limit 0,3; -- 查询结果为0-3行
分页查询
计算公式:当前页*每页条数-每页条数,每页条数
select sno,sname from test limit 0,3;每页3条,显示第一页
select sno,sname from test limit 3,3;每页3条,显示第二页
select sno,sname from test limit 9,3;每页3条,显示第四页(最后一页)
查询列别名,表别名
列别名
select sno,sname from test ws;
select 属性名,属性名 from 表名 ws;
select sno,sname from test as ws;
select 属性名,属性名 from 表名 as 别名;
表别名 -- 0-10 select sno as 年龄,sname 姓名,round(rand()*10) from test as ws; -- 增加字段,随机生成0-10之间的整数
select sno,sname from test order by rand() limit 2; -- 查询在表中随机2行中的sno,sname的值 select sno,sname from test where sno in (202108,202104); --查询在表中符合sno条件的sno,sname的值
自查询3次 select * from test s1,test s2, test s3; -- 查看在当前表中增加属性3次,
计算某一属性值
select 3*3,sname from test; -- 3**3代替了sno,sno属性列的值显示计算结果 9
查询结果排序
查询结果排序 asc是默认的升序,desc是降序
select sno,sname from test ws order by ws.sname;
select sno,sname from test ws order by ws.sno desc;