数据库mysql增删查改操作指令

1.基础操作

MySQL服务器->许多数据库->许多数据表->
指定表头,表头描述了列名和列类型->
每行为一个记录,每列为一个字段

数据类型:tinyint(1字节),smallint(2字节),int(4字节),bigint(8字节)
float(m,d),double(m,d);m为有效数字,d为小数位数
decimal(m,d);能够精确表示小数
datetime(8字节),timestamp(4字节)

注释:# 或者 --后面有个空格 快捷键:
终止输入键: ctrl+c
复制键:选中+enter 显示警告:show warnings;

2.库操作

显示数据库:show databases;
选中数据库: use 数据库名; use database1;
创建数据库:create database 数据库名; create database database1;
删除数据库:drop database 数据库名;drop database database1;

3.表操作

创建表:creat table 表名(列名 类型,列名 类型);
create table student(id int, namevarchar(50), age int, score double(3,1));
查看表:show tables;
查看表结构:desc 表名; desc student;
删除表:drop table 表名; drop table student;

4.SQL的操作CURD(增删查改) C创建 U修改 R查询 D删除
4.1 创建

插入数据:insert into 表名 values(列的值…),(列的值)…;
insert into exam_result values(1, ‘唐三藏’, 67, 98, 56),
(2, ‘孙悟空’, 87, 78, 77),
(3, ‘猪悟能’, 88, 98, 90),
(4, ‘曹孟德’, 82, 84, 67),
(5, ‘刘玄德’, 55, 85, 45),
(6, ‘孙权’, 70, 73,78.5),
(7, ‘宋公明’, 75, 65, 30);

插入部分列:inset into 表名(列名…) values(列的值);
insert into exam_result(id, name) values(7, ‘沙悟净’);

插入日期:
指定格式: insert into date values(1, ‘2016-02-13 21:03’);
now()函数:insert into date values(1, now());

4.2 查找

全列查找:select * from 表名; //*通配符
select * from exam_result;

指定列查找:select 列名,列名… from 表名;
select id, name from exam_result;

带表达式的查找:select 表达式 from 表名; //表达式是列和列的计算
select chinese + math + english from exam_result;

带别名的查找:select 表达式 as 别名 from 表名; //给表达式列起的别名
select chinese + math + english as total from exam_result;

查找结果去重:select distinct 列名 from 表名;
select distinct id from exam_result;

排序:select 列名 from 表名 order by 列名 asc/desc; 列名 asc、desc; //默认升序
select math, english from exam_result order by math desc, english desc;

根据别名排序:select 表达式 as 表达式别名 from 表名 order by 别名;
select english + math + chinese as total from exam_result order by total desc;

条件查询:select 列名 from 表名 where 条件;
//关于比较null;使用is null/is not null或者<=>null 不可使用=null!!
//where条件里不能用别名!

比较运算符:

>,>=,<,<= //比较大小
=,<=> //比较相等,区别=不能比较null,<=>可以比较
between a0 and a1 //构成闭区间[a0,a1]
in(option, …) //通过()里给定固定的值,判断结果是否在这几个值里
is null/is not null //专门比较空值 like //模糊匹配 %代表任意个任意字符 _代表一个任意字符
and // 与&& 要注意表达式里同时有and和or,先计算and再计算or,如果想要打破优先级就得加()
or // 或||
not // 非!

使用实例:

查询英语不及格同学及英语成绩
select name,english from exam_result where english<60;

查询语文成绩好与英语成绩的同学 select name, chinese, english from exam_result
where chinese > english; //显示列和查询条件互不影响

查询总分在200以下的同学
select name, chinese + math + english as total from exam_result where chinese + math + english <200;
//显示列和查询条件互不影响,所以where这里不能用别名

查询语文成绩大于80分,且英语成绩大于80分的同学
select name, chinese, english from exam_result where chinese > 80 and english > 80;

查询语文成绩在[80,90]分的同学及语文成绩
select name, chinese from exam_result where chinese between 80 and 90;
select name, chinese from exam_result where chinese >= 80 and chinese <= 90;

查询数学成绩是58或者59或者98或者99分的同学及成绩
select name, math from exam_result where math in(58, 59, 98, 99);
select name, math from exam_result where math = 58 or math = 59 or math = 98 or math = 99;

查找姓孙的同学的成绩
select name, chinese, math, english from exam_result where name like ‘孙%’;

查找姓孙的名字是两个汉字的同学的成绩 select name, chinese, math, english from
exam_result where name like ‘孙_’;

查询语文成绩为空的同学信息
select * from exam_result where chinese is null;
select * from exam_result where chinese <=> null;

分页查询:SQL中可以通过limit来实现分页查询
使用实例:(假设一页只显示3条记录)

select * from exam_result limit 3; //这是第一页的记录,也可在最后加上offset 0 select *
from exam_result limit 3 offset 3; //这是第二页的记录 select * from
exam_result limit 3 offset 6; //这是第三页的记录

4.3 修改

update 表名 set 列名 = 值, 列名 = 值 where 条件;
//对符合条件的进行修改
//order by 和 limit都是可以使用的
//update是会修改原始数据的

使用实例:

将孙悟空同学的数学成绩变为80分
update exam_result set math = 80 where name = ‘孙悟空’;

将曹孟德的数学成绩变成60,语文成绩变为70
update exam_result set math = 60, chinese = 70 where name = ‘曹孟德’;

将总成绩倒数前三的3位成绩的数学成绩加上30分
update exam_result set math = math + 30 order by chinese + math + english limit 3;

将所有同学的语文成绩更新为原来的0.5
update exam_result set chinese = chinese * 0.5;

4.4 删除

delete from 表名 where 条件; //删除表的所有记录是得到一个空表,drop table是表也没有了
delete from exam_result where name = ‘沙悟净’;

5.SQL的约束

not null //指示某列不能存储null值
create table people(id int not null, name varchar(20));

unique //保证某列的每行必须有唯一的值,插入重复的数据会报错
create table people1(id int unique, name varchar(20));

default //规定没有给列赋值时的默认值,mysql默认的默认值时null
create table people2(id int, name varchar(20) default ‘匿名’);

primary key //not null 和 unqiue的结合
create table people3(id int primary key, name varchar(20));
primary key auto_increment //自增主键

你可能感兴趣的:(MySQL,数据库,mysql,sql)