正经人z
菜鸟一个!

 sql通用语法:1.语句以单行或多行书写,以分号结束
 2.MySql数据库不区分大小写,但是关键字建议大写

 查询数据库的字符集:show create database 数据库名;
创建数据库指定字符集:show database if not exists t_studeng chararcter set gbk;
改变数据库的字符集:alter database 数据库名 chararcter set gbk;
查询所有数据库:show databases;  查询指定数据库中的所有表:show tables from 数据库名; 展示表结构:desc 表名;复制一份表到另外一张表:create table 表名 like 表名;修改表名:alter table 表名 rename to 新表名;查看表的字符集:show table 表名 ;修改表的字符集:alter table 表名 character set gbk;
修改列:alter table 表名 change 列名 新列名 参数类型;或者 alter table 表名 modify 列名 参数类型;查看表中信息:select 字段 from 表名;*表示所有字段;

删除员工表中的no字段:alter table 表名 drop no;


 找出工资是2000和3000的员工:select * from 表名 where esal in(2000,3000)
    select * from 表名 where esal=2000 or esal=3000;

 找出工资是2500并且工号是1的员工:select * from 表名 where esal=2500 and empno=1;

删除工号为3的员工:delete from 表名 where deptno=3;

 找出名字中含有李的员工:select ename from 表名 where ename like '%李%';(模糊查找)
将查询到的结果根据某个字段进行降序排列:select * from 表名 order by esal desc;

将表中的第几个字段进行排序;select * from 表名 order by 序号;

将查询到的名字转小写并且重命名:select lower(ename)as ename from 表名 where esal=2000;

将查询到的名字从第二个字符开始截取3个长度:select substr(ename,2,3)from 表名 where esal=3400;

查询出1980-08-09号入职的员工:select * from 表名 where etime=str_to_date('08-09-1980','%m-%d-%Y);

往学生表中插入数据:insert into t_student(ename,eage,ebirth)values('Jack',12,str_to_date('08-09-2000','%m-%d-%Y');(前提是表中ebirth字段是date类型)

查询员工的入职日期,以‘08-09-2000’的格式打印:select date_formate(etime,'%m-%d-%Y) from 表名

求薪水字段的平均值:select avg(esal) from 表名;(多行处理函数还有:max,min,count,sum...)

将查询的结果去重:select distinct(ejob) from 表名

求每个工作岗位的最高薪水:select max(esal) from 表名 group by ejob;

在员工表和部门表中取出员工姓名和对应的部门名:select e.ename,d.dname from emp e,dept d where e.deptno=d.deptno;(92语法:内连接中的等值连接)
select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno;(99语法结构更加清晰)

查找员工的工资等级,打印员工姓名和对应的工资等级:select e.ename,s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal; (99语法,内连接中的非等值连接)

查找员工的工资等级,打印员工姓名和对应的工资等级,并且打印出所有的工资等级:
select e.ename,s.grade from emp e right join salgrade s on e.sal between s.losal and s.hisal;(99语法,外连接中的右连接)
select e.ename,s.grade from emp e left join salgrade s on e.sal between s.losal and s.hisal;(99语法,外连接中的左连接)

找出薪水比平均薪水高的员工:select ename from emp where sal>(select avg(sal) from emp);(子查询:select嵌套select)

找出前五名员工:select ename from emp limit 0,5;

select ename,grade from emp,salgrade where sal between losal and hisal union  select ename,grade from emp,salgrade where sal between losal and hisal;(union合并子查询)

eid int(22) primary key auto_increament;(主键自增)

constraint t_student_class foreign key(classno) references t_class(cno)

员工姓名和对应的工资等级:select e.ename,s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal;

开启事务:start transaction;
结束事务:成功->commit;  失败:rollback;(回滚,将DML语句全部清空)
设置自动提交关闭:set autocommit=off;

补充:select * from question order by rand() limit 0,4;  它的意思是从question表中随机抽出四个记录,在MySQL中,这里rand()获得的值自动转为整数,而在order by 后面写整数表示某个字段,例如:order by 1 就表示表中第一个字段,利用这个属性,我们可以用于项目中在试题库随机抽取试题;

posted on 2020-06-28 17:47  正经人z  阅读(119)  评论(0编辑  收藏  举报