SQL 入门 & MySql 简单函数

一、SQL的认识

(一)、SQL解释:

sql(structure query language)结构化查询语言

(二)、sql 的三种注释

 1.  #  注释的文字
 2.  -- 注释的文字
 3.  /* 注释的文字 */

(三)、sql的常见操作

1.改变活动的数据 库。 use 数据库名(表示切换到当前使用数据库)

2.sql不区分大小写,一般来讲 表名、列名 、库名小写 ,关键字大写

3.每一条sql语句结尾 用分号

(四)、sql的常见数据类型

/*
  数值型:整数和小数
    整数:int
    小数:float、double
 字符型:
    varchar(长度)  可变长度的字符串(耗用空间小,效率低)
    char(长度) 固定长度的字符串(耗用空间大,效率高)
    text 较长的文本

 日期型:
    datetime
*/
二、SQL之DML语言之 SELECT (最基础的简单查询)

(一)、查询SELECT

基本查询

1、查询全部行和列

【语法】: select * from 表名

2、查询部分列

【语法】: select 列名,列名 from 表名

3、使用条件运算符或逻辑运算符实现条件查询

【语法】: select 列名,列名 from 表名 where 条件

4、最基本的查询

/*

    关系运算符:> < >= <= = <>(!=)
    逻辑运算符: and or not
*/

【案例】:

//查询表中字段department_id在(80~100)之间的员工详细信息

select * from 表名 where department_id>80 and  department_id<100


//查询表中字段job_id=‘IT’ 或 字段 salary为1200的记录详细信息

select * from 表名 where job_id<>'IT'  or  salary=12000

<5> 起别名

SELECT employee_id 员工编号,first_name 名称,

last_name 姓 FROM Employees;

SELECT employee_id AS '员工编号',first_name AS '名

称',last_name AS '姓' FROM Employees;

6、 查询部分行(条件查询)

6-1 使用条件运算符(关系运算符)

工资大于10000
SELECT * FROM employees WHERE salary>10000;

工资大于10000并且小于15000
SELECT * FROM employees WHERE salary<10000;

工资等于12000
SELECT * FROM employees WHERE salary=12000;

工资不等于12000
SELECT * FROM employees WHERE salary!=12000;

6-2 使用逻辑运算符

工资大于10000并且小于15000
SELECT * FROM employees WHERE salary<10000 AND salary>=8000;

编号大于200或者小于110
SELECT * FROM employees WHERE employee_id<110 OR  employee_id>200;

工资大于10000并且小于15000
SELECT * FROM employees WHERE NOT(salary<10000 AND salary>=8000);

三、MySql 的几个基本函数使用

(一)、mysql中的函数

/*
单行函数: 提供一个值,返回 一个结果
            日期函数:now 获取当前日期
            字符函数:对字符型进行处理
            数学函数:对数值型进行处理

分组函数:(聚合函数) 提供一组值,返回 一个统计结果
*/

1、单行函数

<1>. 日期函数

 SELECT NOW();  获取当前时间 

<2>.字符函数

大写
    SELECT UPPER('AbCd');  //全转大写

    //查询字段last_name 起别名为:大写名字  

    SELECT UPPER(last_name) 大写的姓名 FROM employees;

小写
    SELECT LOWER('AbCd');

    //查询字段last_name 起别名为:小写名字 

    SELECT LOWER(last_name) 小写的姓名 FROM employees;

<3>.字符串连接

使用CONCAT()

SELECT CONCAT(first_name,’ ‘,last_name) FROM employees;

例子:

//将大写的姓名连接起来并输出
SELECT UPPER(CONCAT(first_name,'  ',last_name)) FROM employees;

//将大写的姓 小写的名连接起来并输出
SELECT CONCAT(UPPER(first_name),' ',LOWER(last_name)) FROM employees;

<4>.截取字符串

/*
  SELECT SUBSTR('HelloWorld',1,2)  //结果He
    sql索引从1开始
    参数1:完整的字符串
    参数2:起始索引
    参数3:截取的长度
*/

<5>获取字节长度

SELECT LENGTH('Hello中')  //UTF-8编码  结果为8 GBK编码为7 

SELECT LENGTH('中') //UTF-8编码  结果为3 GBK编码可以为2

<6>获取指定字符的索引,如果没有返回0(因为索引从1开始 不存在可以取0)

SELECT INSTR('HelloWorld', 'q')

<7>显示指定位数,不够的用指定符号填充

lpad 在左边填充,rpad 在右边填充

例如:

 SELECT LPAD(salary,10,'*') FROM employees;

 SELECT RPAD(salary, 10, '%') FROM employees;

<8>去前后 指定的字符,中间的去不掉

SELECT TRIM(' ' FROM '   hello  world ') space

SELECT LENGTH(TRIM(' ' FROM '  hello  world   ')) space

<9> 替换指定的字符

//将l替换为x

SELECT REPLACE('abcdlll','l','x')

2、 数学函数

<1>truncate 截断,保留指定位数,多余的直接截断,没有四舍五入

SELECT TRUNCATE(13.567,2);// 结果13.56

SELECT TRUNCATE(13.567,0);// 结果13

SELECT TRUNCATE(13.567,-1);// 结果10

<2>round 四舍五入

SELECT ROUND(1234.53,1);//1234.5

<3>mod 取余 相当于java中 的% 等价于: 被除数-被除数/除数*除数

SELECT MOD(-15,7);//结果-1

2、分组函数

/*
    max求最大值   (支持 数值、字符、日期类型)
    min求最小值支持  (数值、字符、日期类型)
    sum 求和   (支持数值型)
    avg 求平均值 (支持数值型)
    count 计算非null的个数  
    count(*) 表中的行数

*/

例如:

SELECT MAX(salary) 最高工资,MIN(salary) 最低工资,SUM(salary) 和,AVG(salary) 平均,
COUNT(salary) 个数
FROM employees;

各方法测试如下:

SELECT * FROM employees;
SELECT MAX(*) FROM employees;
SELECT MIN(first_name) FROM employees;
SELECT SUM(first_name) FROM employees;
SELECT AVG(first_name) FROM employees;

COUNT使用例如:

该列非空的值的个数
 SELECT COUNT(first_name) FROM employees;
 SELECT COUNT(commission_pct) FROM employees;

显示表中的行数

SELECT COUNT(*) FROM employees;

(二)、条件表达式

语法:

case 判断的字段
    when 值 then 结果
    when 值 then 结果
    ...
    else 结果
end

案例:

查询部门号为 10, 20, 30 的员工信息, 若部门号为 10,

则打印其工资的 1.1 倍, 20 号部门, 则打印其工资的 1.2 倍,

30 号部门打印其工资的 1.3 倍数

//用普通的switch case 实现:
switch(department_id){
case 10:syso(salary*1.1);break;
case 20:syso(salary*1.2);break;
case 30:syso(salary*1.3);break;
default:syso(salary);break;

//使用MySql条件表达式实现
SELECT department_id,salary 原始工资,
CASE department_id
WHEN 10 THEN salary*1.1
WHEN 20 THEN salary*1.2
WHEN 50 THEN salary*1.3
ELSE salary
END 新工资
FROM employees
WHERE department_id IN(10,20,50,90,100);

//判断查询 if()成立则bad 否则 是 good

SELECT employee_id,commission_pct,
IF(commission_pct IS NULL,'bad','good')
FROM employees;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值