公告:欢迎访问,查看更多资源请点我^.^!            点我关闭广告
mysql语法(二)
2017-07-14 14:19:34
502人阅读
评论(1)
分类:数据库

函数:

    数学函数

        ABS(n) 绝对值

        CEIL(n) 取整函数(向上取整)>=  取大于等于数值n的最小整数

        FLOOR(n) 取整函数(向下取整)<= 取小于等于数值n的最大整数

        TRUNC(n) 截断函数

        ROUND(n) 四舍五入函数 ROUND(数值,保留位数) 假设保留位数为负数,继续往前四舍五入

        select round(23.652) from dual; => 24

        select round(23.652,2) from dual; => 23.65

        select round(23.652,1) from dual; => 23.7

        select round(23.652,0) from dual; => 24

        select round(23.652,-1) from dual; => 20

    字符串函数

        select concat(ename,job) from emp where sal=800; -- CONCAT(str1,str2) 连接两个字符串

        select distinct instr(t.name,"i") from test01 t; -- INSTR(str,substr) 在一个字符串中搜索指定的字符,返回发现指定的字符的位置

        select length("nimeide") from dual;-- LENGTH(str)返回字符串的长度

        select lower("NIMEIDE") from dual; -- LOWER(str)返回字符串,并将所有的字符小写

        select upper("nimeide") from dual; -- UPPER(str)返回字符串,并将所有的字符大写

        select lcase("NIMEIDE") from dual; -- -- LCASE(str)返回字符串,并将所有的字符小写

        select ucase("nimeide") from dual; -- -- UCASE(str)返回字符串,并将所有的字符小写

        select lpad(ename,8,"str") from emp; -- LPAD(str,length,char) 在字符串的左边粘贴字符

        select rpad(ename,8,"str") from emp; -- RPAD(str,length,char) 在字符串的右边粘贴字符

         select ltrim("strname","str") from dual;

        select substr(ename,1,3) from emp; -- SUBSTR(str,start,count) 取子字符串,从start开始,count截取长度

        select replace("nametolearn","name","stud") from dual; -- replace(str,from_str,to_str) str源字符串,from_str待替换的字符串,to_str用于替换的新字符串

        select reverse("nimeide") from dual; -- REVERSE(str)反转字符串中的每个字符

    转换函数

        select TO_DAYS(hiredate) from emp;

    其他函数

        select mid(ename,3,2) from emp; -- MID(column_name,start[,length]) 从文本字段中提取字符

高级查询:

    索引的创建和查看

        create index indexname on tablename(列名); -- 为表的某一列名添加名为indexname的索引

        show index from tablename; -- 查看某表的索引

        drop index indexname on tablename; -- 删除某表的索引

    普通两表查询

        select * from emp e,dept d where e.deptno=d.deptno;

    内联接

        select * from emp e inner join dept d on e.deptno=d.deptno;

        select * from emp e join dept d on e.deptno=d.deptno;

    左联(完全显示左侧内容)

        select * from emp e left join dept d on e.deptno=d.deptno;

    右联(完全显示右侧内容)

        select * from emp e right join dept d on e.deptno = d.deptno;

    设置主键(创建时设置)

        create table test1(

         id int(10) primary key,tname varchar(50),address varchar(100)

        );

    设置自增(创建时设置)

        create table test2(

         id int(10) key auto_increment,tname varchar(100),tel int(10)

        );

    设置外键 (tid是外键的列名,-- prov是要关联的表名,id是主键列名)

        alter table cit add(

        foreign key(tid) references prov(id)

        );

    创建视图和其他操作(与操作表很相似)

        create view newview as select ename from emp;

        create view nimei as select id from test1;

        insert into nimei (id) value (3); -- 对视图进行操作就相当于在直接操作表,除了删除表之外

        update nimei set sname='新寨高中' where sname='inini'; -- 修改数据

        desc nimei; -- 查看视图表结构

        drop view nimei; -- 删除视图

    case语句

    结构:select 列名,case when 条件 then '说明' ... else '最后说明' end '字段说明(列名)' from 表名;

        select degree,case when degree>=90 then '优秀' when degree>=75 and degree <90 then '良好' when degree>60 and degree<75 then '及格' else '不及格' end '评级' from score;

        blob.png

    子查询

        select * from emp where sal=(select max(sal) from emp); -- 将已经查询出来的数据作为已知数据使用来查询新的数据

举例:

    输出非办事员的员工姓名,所在部门名称及薪水等级

    select e.ename '员工姓名', d.dname '部门名称',s.grade '薪水等级' from emp e,dept d,salgrade s where e.deptno=d.deptno and e.sal between losal and hisal and e.job <> 'clerk';

    求各个部门薪水最高的员工信息

    select e.* from emp e,(select max(sal) maxsal,deptno from emp group by deptno) a where e.deptno=a.deptno and e.sal=a.maxsal;

    (解释:(select max(sal) maxsal,deptno from emp group by deptno) a 相当于创建了一个新的表,命名为a,在把e和a关联)

    查询总工资大于10000的部门的总工资和部门名

    select a.sumsal,d.dname from dept d,(select sum(sal) sumsal,deptno from emp group by deptno having sumsal>10000)a where d.deptno=a.deptno;

    求各个部门获得最高薪水的员工姓名,部门编号和薪水

    select distinct e.deptno,e.ename,e.sal from emp e,(select deptno,max(sal) maxsal from emp group by deptno)a where e.deptno=a.deptno and e.sal=a.maxsal;

    选择所有a=1或者b=2的记录,使a=1且b=2的记录排在最前面,并且a=1且b=2的记录按id降序排列

    select * from table_name where a=1 or b=2 order by case when a=1 and b=2 then 0 else 1 end,id desc;

数据控制语言: grant  revoke  (注意是否添加引号)

    创建、删除新用户和授予、回收权限

    创建用户:create user 'zc' identified by '123456';

    删除用户:drop user zc;

    授予部分权限:grant select,update on emp to zc;

    授予全部权限:grant all privileges on emp to zc;

    创建用户并授予所有权限:grant all privileges on emp to  'zc' identified by '123456';

    创建用户并授予部分权限:grant select,insert on emp to  'zc' identified by '123456';

    回收部分权限:revoke insert on emp from zc;

    回收所有权限:revoke all privileges on emp from zc;

Dos窗口操作mysql常用指令(注意是否添加分号和引号):

    启动mysql服务:net start mysql

    blob.png

    关闭mysql服务:net stop mysql

    blob.png

    连接数据库(用户登录):mysql -u username -p 按Enter之后输入password(密码)

    blob.png

    退出数据库:exit

    查看所有数据库:show databases;

    blob.png

    选择(使用)数据库:use databasename;

    blob.png

    查看该数据库下的所有表格:show tables;(分号可以不写)

    blob.png

    查看某表的区段:desc或describe tablename;

    blob.png

    结束本条语句编写并转到下一行:\c    一般会在输入错误的时候使用

    blob.png


分享一下:
赞一下(2)
博主资料
博主头像
zc521106
文章:34
浏览:19899
文章分类
Java(12)
NoSql(112)
数据库(12)
前端(12)
阅读排行
Java基础知识
(12)
NoSql应用
(112)
数据库Oracle语法
(12)
前端常用工具类
(12)
java web项目
(12)
linux安装mysql
(12)
评论区
这篇文章怎么样?写点评论吧!
姓名:
邮箱:
有回复时通知我:
发表
回复【10.20.30.32】:
mysql的基础知识
2017-07-14 20:46:36
* 以上用户言论只代表其个人观点,不代表iBlog网站的观点或立场,如有任何疑问请随时联系管理员...