zoukankan      html  css  js  c++  java
  • mysql学习笔记之基础篇

    数据库学习之基础篇

    ① 开放数据库互连(Open Database Connectivity,ODBC

    ② 结构化查询语言(Structured Query Language)

    ③ 进入mysql:Mysql -u cz -p cz;

    ④ 显示系统的database: show databases;

    ⑤ 创建database:create database 名字;

    ⑥ 选择database:use 名字;

    ⑦ 删除数据库:drop database name;或者表

    ⑧ 查看表:show tables;(必须在选择数据库(use name;)之后,执行)

    ⑨ 查看view table等结构:desc name;

    ⑩ 创建table :create table name(列值 类型,列值 类型,...)

    11 Mysql不区分大小写,但对于字符串匹配时,有lower(),upper()函数,来转变大小写,**********问题**************

    12 数据操作:

    a) 查:select * from tbName;

    1. 别名机制:
      1. 列别名:as 或者 空格,自动将后边的列名作为前边的列的列名作为输出的列名。
      2. 表别名:Select e.ename,e.job from emp e;
    2. 如:select salary+bo

    b) 增:

    1. insert into tbName (列明1,列明2...) values (参数1,参数2...);
    2. insert into tbName  values (参数1,参数2...);

    c) 删:

    1. delete from tbName;全部删除
    2. delete from tbName where 条件;条件删除

    d) 改:update tbName set 列明=值 where 

    1. update tbName set 列明 = 值;//全部修改
    2. update tbName set 列明 = 值;//条件修改

    13 条件查询:

    a) 比较运算符:>   <   =   <>不等于                                    备注:mysql支持!=   ,但其他数据库并不一定支持

    b) 逻辑运算符:and    or 备注:mysql支持 &&  ||,但不代表其他数据库支持  

    c) 算数运算符:

    1. *  +  -  /
    2. 如:select ename,job,salary+ifnull(bonus,0) sal ,salary*12 yearSal from emp; 

    d) 区间判断:where 列明 between 列值a and 列值d;

    e) 集合查询:in exists 效率问题

    f) Link通配符:

    1. 百分号 (%) 百分号表示零个,一个或多个字符。
    2. 百分号 (%) 百分号表示零个,一个或多个字符。

    g) NULL特性:

    1. 任何数据与NULL相加结果为NULL
    2. 通用函数:ifnull(列名,value)  如果列名为空,则值为value.oracle和sqlserver 是NVL ,作用一样。
    3. 被组函数忽略。
    4. 在mysql中默认最小,所以也比负数小,在oracle 中最大。
    5. 比较时,使用 is null  ,is not null ,进行比较。

    h) SQL TOP子句,用于从表中获取一个TOP N号或X%的记录。注:所有的数据库不支持TOP子句。例如,MySQL支持LIMIT子句来获取记录数量限制,Oracle使用ROWNUM来获取记录数量限制。

    i) 排序:

    1. 格式:SELECT column-list FROM table_name [WHERE condition] [ORDER BY column1, column2, .. columnN] [ASC | DESC];
    2. 例如:select * from emp where deptno=10 order by empno asc;

    14 子查询:

    a) 子查询作为主查询的前提条件:如:select * from emp where salary > (select salary from emp where ename =’cz’);

    b) having 和where 区别:  having 是筛选组  而where是筛选记录他们有各自的区别

    1. 当分组筛选的时候 用having
    2. 其它情况用where
    3. 用having就一定要和group by连用,
    4. 用group by不一有having (它只是一个筛选条件用的)

    c) 当子查询返回多行时:

    1. All  any 修饰主查询与子查询的匹配关系。
    2. 如:select ename,job,salary from emp where salary > all (select salary from emp where ename=’lacus’);

    15 关联子查询:子查询时,MySQL需要为内层查询语句的查询结果建立一个临时表。然后外层查询语句再临时表中查询记录。查询完毕后,MySQL需要撤销这些临时表。因此,子查询的速度会受到一定的影响。如果查询的数据量比较大,这种影响就会随之增大。在MySQL中可以使用连接查询来替代子查询。如:

    16 链接子查询:在MySQL中可以使用连接查询来替代子查询。连接查询不需要建立临时表,其速度比子查询要快。 

    17 组函数(忽略null,):

    a) 特性:

    1. 忽略null
    2. 如果语句中带有普通查询,必须做分组处理。Group By().分组处理的列一般情况,分组之后的条件查询是having;
    3. 如: select job,count(empno) count_emp from emp group by deptno having count_emp>1;

    b) count() 统计个数,不计重。

    c) Sum()

    d) Avg()

    e) Min()

    f) Max()

    18 格式化输出:

    a) Format(数据,小数位数) 如:select ename,job,format((salary+ifnull(bonus,0))/1.2) sal from emp;

    b) select date_format(now(),'%y-%m-%d');

    19 通用函数(不忽略null):

    a) Now():获得系统当前详细时间

    b) curdate():

    c) current_timestamp();//详细时间

    d) Localtime();//详细时间

    e) Format(数据,小数位数)

    数据库学习之管理篇

    远程数据库链接链接:想远程链接数据库服务器,首先要保证服务器的防火墙是否允许远程链接,然后在数据库运行状态下管理远程链接。配置如下:

          1、确定服务器上的防火墙没有阻止 3306 端口。MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 3306 端口,否则远程是无法通过 3306 端口连接到 MySQL 的。如果您在安装 MySQL 时指定了其他端口,请在防火墙中开启您指定的 MySQL 使用的端口号。如果不知道怎样设置您的服务器上的防火墙,请向您的服务器管理员咨询。

        2、增加允许远程连接 MySQL 用户并授权。

          1)首先以 root 帐户登陆 MySQL

             在 Windows 主机中点击开始菜单,运行,输入“cmd”,进入控制台,MySQL 的 bin 目录下,然后输入下面的命令。      2)创建远程登陆用户并授权

    格式: grant 权限 on 数据库名.表名 用户@登录主机 identified by "用户密码";

    例如:grant all PRIVILEGES on discuz.* to ted@'123.123.123.123' identified by '123456';

    解释:授权给ted用户使用123456密码通过IP为123.123.123.123 对数据库discuz所有表进行操作。

    ① all PRIVILEGES:表示所有权限,当然可以选择select updata 等

    ② On discus.*:表示对discus数据库所有表的权限。如果是所有数据库所有表,则为*.*

    ③ To ted:表示对ted用户授权

    ④ @”ip”:表示允许通过该IP访问,当然“%”表示任何ip

    ⑤ identified by '123456':表示用户使用密码123456登录。

     3、flush privileges; 使修改生效。

  • 相关阅读:
    linux 定时脚本任务的创建
    win10 Edge 无法上网代理服务器错误
    CentOS 7 系统root用户忘记密码的重置方法
    通过挂载系统光盘搭建本地yum仓库的方法
    Oauth服务端协议开发
    mongodb 用户权限控制
    javascript 数组方法拼接html标签
    存储管理与linux内存寻址(1)
    原型模式
    背包,队列,栈的java实现
  • 原文地址:https://www.cnblogs.com/cz-blog/p/4270998.html
Copyright © 2011-2022 走看看