show databases; -- 查看所有数据库 create database 数据库名 ; -- 创建数据库 create database 数据库名 charset=utf8; --创建指定字符集的数据库(mysql中utf8没有-) create database if not exists mlgb; --如果不存在mlgb就创建mlgb show create database 数据库名 ; --展示创建的数据库 alter database character set utf8; --修改数据库 drop database 数据库名 ; --删库跑路 use database 数据库名; #使用数据库 select database(); #查看当前使用的数据库
3.SQL基本数据查询
查询出来的表是虚拟表
select 列名 from 表名; #查啥表啥列 #select * 表示所有列 select 列名1 as 'XXX', 列名1 as 'YYY' from 表名; #给查询的表起别名 select distinct 列名 from 表名; #去重
排序查询
select 列名 from 表名 order by 排序列 排序规则 [列2] [规则]; asc升序 desc降序
条件查询
select 列名 from 表名 where 条件; 等值判断,就用 = 逻辑判断 and or not 不等于 <> != 范围 between x and y 枚举 in (x,y,z) 空的判断 is null is not null 直接查=null是不行滴 模糊查询 like 符号 % 表示任意多个任意字符 _ 表示一个任意字符 分支结构查询 select 列 case when 条件 then 'A' when 条件 then 'B' when 条件 then 'C' when 条件 then 'D' else 'E' end as 成绩
select * from students where age > (select avg(age) from students); 关键字 all any 所有 部分
合并查询
select XX from XX union select XX from XX ; (去掉重复记录) select XX from XX union all select XX from XX ;(不去重复记录) 两表列数必须相同
内链接查询
select XX from XX inner join XX on XX.YY = XX.YY ; 如果不指定连接条件,则会造成笛卡尔积的结果
左右外连接
左外链接以左表为主表,依次向右匹配,如果匹配不到,返回NULL 右外连接以右表为主表,依次向左匹配,如果匹配不到,返回NULL select XX from XX left join XX on XX.YY = XX.YY ; select XX from XX right join XX on XX.YY = XX.YY ;
5.DML操作
新增(INSERT)
insert into 表名(列1,列2 ...) values(值1,值2...); 列与值一一对应
修改(UPDATE)
update 表名 set 列1=值1,列2=值2...... where 条件; 如果不加where条件的话整个表都会修改。