数据库操作
-- 注释
mysql -uroot -p
explain:帮助分析一个sql的执行过程,能过看到是否使用索引,以及用了那个索引
1.查看数据库
show databases;
2.创建数据库
creat database 数据库名;
create database if not exists 数据库名;
数据库名只能输数字、字母、下划线,不能有其他特殊字符
3.使用数据库
当前有多个数据库,通过’使用‘ 操作,就能园中某个数据库,以后的命令都是针对这个数据库来生效的
use 数据库名;
4.删除数据库
删除操作非常危险,一旦删除是常规手段是无法找回的.
drop database 数据库名;
drop database if exists 数据库名;
5.常用的数据类型
int double decimal varchar text
6.表操作
表操作使用前,必须先选中数据库
1>创建表:
creat table 表名 ( 字段 数据类型 );/creat table if not exists 表名( 字段 数据类型 );
创建表的时候,如果表名或者列名和关键字相同就会报错,可以用反引号把冲突部分圈起来
2>查看表:
desc table;
查看所有表:
show tables;
3>删除表:
drop table 表名;/drop if exists table 表名;
删除操作非常危险,一旦删除是常规手段是无法找回的.
7.CRUD增查改删(create,retrieve,updaata,delete)
1>全列插入:
insert into 表名 values (对应的数据列);
指定插入:insert into 表名 (若干个指定列) values(对应的列数据);
一次插入多条记录:insert into 表名 values (对应的列数据),(对应的列数据),(对应的列数据);
2>全列查找:select * from 表名; (* 表示通配符,意思是把所有的列都差找出来)
指定列查找:select 列名 from 表名;
查询字段为表达式:slelct 列名/列名+列名/列名+对应类型 frm 表名;
查询字段指定别名:select 列名+列名 as total from 表名;
去重:select distinct 列名 from 表名;
排序:select * from 表名 order by 列名/列名+列名 asc(升序)/desc(降序),列名 asc(升序)/desc(降序);
条件查询:select * from exam_result where 列名 条件
条件查询中的运算符:
,>=,<,<=,
=:比较相等,而不是赋值(updata中的=相当于赋值)
<=>:比较相等,能够针对null进行比较
!= <>:不等于
between x and y:表示当值在[x,y]闭区间之间都是满足条件
in(若干个选项):当前值在()中的若干个原想里匹配任意一个都是满足条件.
is null
is not nill 专门用于判定值是否为null
like:模糊匹配 (要搭配通配符使用)->( %:匹配任意个任意字符 _:匹配一个任意字符 )
and 逻辑与
or 逻辑或
not 逻辑取反
进行复杂条件查询的时候,存在一个"最左原则",从左往右执行条件.所以把过滤多的条件写到最左边
上面的select操作除了条件查找之外,剩下的都是不应该在生产服务器上直接执行的.最保险的就是加上分页查找.相当于把查找结果只选取其中的一小部分作为结果.
分页查找:
select 列名 from 表名 limit n; 查找前n
select 列名 from 表名 limit n offset m; 查找n到n+m
3>修改:
update 表名 set 列名 = 修改的值 , 列名 = 修改的值 where 子句;
如果不加where限定条件,就会改全部的数据,加上where就只会修改条件满足后剩下的数据
update 表名 set 表达式;
update 表名 set 表达式 order by 列名 asc limit n;
4>删除:
delete from 表名 where 筛选条件;