DBMS --> SQL --> DB
SQL分类
DQL数据查询语言(凡是带select关键字的都是查询语句)
DML数据操作语言(凡是对表中的数据进行增删改的都是DML)
DDL数据定义语言(凡是带有create drop alter(修改)的都是DDL
TCL事务控制语言 事务提交commit 事务回滚 rollback
DCL数据控制语言 授权 grant 撤销权限 revoke
行(row)被称为数据/记录
列(column)被称为字段
创建数据库
create database 数据库名;
选择数据库
use 数据库名;
导入数据
source D:\bjpowernode.sql;
删除数据库
drop database 数据库名;
查看表结构;
desc 表名;
查询当前使用的数据库
select database();
查询数据库版本
select version();
终止一条正在编写的语句
如果想要终止一条正在编写的语句,可键入\c。
退出mysql
exit;
查询时直接用字段名而不用*这样的效率更高
where 和 having的区别?
where是约束声明,不能使用聚合函数
having是过滤声明,可以使用聚合函数
查询工资在2450到3000之间的员工信息?
第一种写法:
select eid,ename,egongzi from emp where gongzi >=2450 and gongzi<=3000;
第二种写法:
select eid,ename,egongzi from emp where gongzi between 2450 and 3000;
使用between是必须遵循左大右小
between and 是闭区间,包括两端的值
and和or同时出现时,and的优先级比较高,如果想让or先执行加上小括号
in 包含 not in 不在这个范围中
select * from emp where gongzi in(50,3000);查询工资是50和3000的员工信息
in 相当于多个or 不是一个区间
in后面跟的是具体的值
like模糊查询
%表示任意多个字符
表示任意一个字符
例子:
ZHANGSAN
LISI
WANG_WU
ZHAOLIU
找出名字中带有_的?
select * from emp where ename like '%%’;这样写不对
_下划线表示特殊含义 需要用转义字符
如:
select * from emp where ename like ‘%_%’;
\转义字符将_变成了普通的下划线
排序:【默认是升序】asc表示升序,desc表示降序。
select ename,gongzi from emp order by gongzi asc; //升序排
select ename,gongzi from emp order by gongzi desc; //降序排
查询员工名字和工资要求按照工资升序排序,如果工资一样再按照名字升序排列?
select ename,egongzi from emp order by gongzi asc,ename asc;
先按照工资排升序,如果工资一样,再按照名字排升序。