show variables like '%character%'
会显示出所有的跟字符集相关的数据
修改记录
update 表明 set 列1=值1,列2=值2 where 条件 如果不加条件所有的数据都会被修改
注意事项:
修改的列名与值的类型要对应,长度要符合要求,日期或者字符串要用''
修改条件的写法:
between and
in
like '_'一个下划线代表1一个字符(一个汉字)
SELECT * FROM students WHERE 班级 LIKE '%基础班%'
is null
is not null
id=6;
id<>6;不等于
id<=6;
id in(1,2,3,4) 满足 1234都执行
与或非:
与and
或 or
非 not
删除记录
delete from 表名 where 条件语句
不加条件会删除所有
delete form 表名 :一条一条的删 但是不清空auto_inrement 事务的管理只能在DML语句上,如果在一个事物中使用delete删除所有记录,可以找回
truncate 表名: 直接删除表然后重新建表 auto_increment被置为0,属于DDL,删完了找不回来
start transaction
delete from 表名
rollback;之后可以继续查询到已经删除的数据,但是truncate不行
查询记录 :
select 列名1,列名2... from 表名 where 列明='';
select distinct 列名 from 表名;对列名进行去重
select distinct 列名1,列名2 from 表名;对列名1,2整体进行去重
查询重命名列
select zname AS '' 查询出来的数据重新建一个列名
查询过程中直接对数字进行计算
SELECT zname,zmoney+1000 FROM 表名
聚合
可以对一列进行计算,返回单一的值
count
select count (*) from 表名
多表的查询方式
方式一:
连接查询:
内连接:inner join inner可以省略
显示内连接:
select * from a inner join b on 条件;
隐式内连接:
select * from a,b where 条件;
查询到的是两张表中符合条件的数据
注意隐式的条件是where 显式的是on
外连接:outer join, outer可以省略
左外连接:left outer join
select * from a left outer join b on 条件;
以左边表为基准机型查询
如果左边表有的 右边没有 就会自动添加 null
如果右边有多余的 左边没有,就不会被显示出
右外连接:right outer join
select * from a right outer join b on 条件;
以右边表为基准机型查询
如果右边表有的 左边没有 就会自动添加 null
如果左边有多余的 右边没有,就不会被显示出
交叉连接:基本不用
select * from a,b
select * from a cross join b
子查询:
一个sql语句再查询过程中依赖另外一个语句
select * from customer c,order o where c.cid=o.cid And c.cid in(select cid from orders where addr like '海淀%' )
SELECT c.cname,COUNT(*) FROM customer c,orders o WHERE c.cid=o.cid GROUP BY c.cname;
select case sex when 0 then '男' when 1 then '女' else '人妖' end as sex from user;
case:如果这一列是sex就判断值是 0 还是 1 0就是男 1 就是女
数据合并(公司收购的时候整合数据库,会拿一个不重复的字符串(UUID varchar类型)作为主键)