菜鸟的修炼之MySQL

作者: 憧憬着的未来 | 来源:发表于2017-07-02 12:16 被阅读13次

1.1 安装与配置

百度一下

1.2 环境变量配置

添加MYSQL_HOME,值是MySQL的安装目录,比如:D:\MySQL\MySQL Server 5.0
在Path中添加MYSQL_HOME的引用,值是%MYSQL_HOME%\bin;
此配置是为了方便使用mysql命令,如果使用可视化开发工具可以忽略。

2.1 连接与断开服务器

连接:

mysql -h host[数据库的url] -u username -p
enter password: 

断开:

QUIT或者\q

2.2 数据库的创建和使用

查询服务器上的数据库:

show databases;

访问数据库

use database_name;
2.2.1 创建并选择数据库

创建

create database database_name;

选择数据库

  1. 登陆时选择
mysql -h host[which_db_url] -u username -p which_database
enter password:
  1. 使用use命令
use database_name;
2.2.2 数据类型
用途 名称 大小 格式
整数 INTEGER 4字节
单精度浮点数 FLOAT 4字节
双精度浮点数 DOUBLE 8字节
日期值 DATE 3字节 YYYY-MM-DD
时间值 TIME 3字节 HH:MM:SS
年份值 YEAR 1字节 YYYY
日期和时间混合 DATETIME 8字节 YYYY-MM-DD HH:MM:SS
时间戳 TIMESTAMP 4字节 YYYYMMDDHHMMSS
定长字符串 CHAR 0-225字节
变长字符串 VARCHAR 0-65635字节
长文本数据 TEXT 0-65635字节
2.2.3 创建表

查看数据库中的表

show tables;

创建表

create table table_name (column_name column_type column_description);

范例

CREATE TABLE IF NOT EXISTS user (
    C_OID INT AUTO_INCREMENT,    //AUTO_INCREMENT字段自增;
    C_NAME VARCHAR(128) NOT NULL,
    C_PSWD VARCHAR (64) NOT NULL,
    C_UPDATE DATE,
    PRIMARY KEY (C_OID)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;    //ENGINE=InnoDB表明此表可以进行事务管理;DEFAULT CHARSET设置默认编码

显示表的结构

describe table_name;

范例

DESCRIBE user;

删除表

drop table table_name;

范例

DROP TABLE user;

2.2.4 操作表中的数据

2.2.4.1 数据检索
select column_name
from table_name
where conditions_to_satisfy;

范例

SELECT C_OID, C_NAME, C_PSWD, C_UPDATE
FROM user
WHERE 1 = 1
2.2.4.2 数据插入

1) 使用文本文件(*.txt)插入,文件格式是一条记录一行,空的值使用\N,数据的数据要跟表的字段顺序相同,而且之间用定位符(tab)隔开。

load data local infile '/path/file' into table table_name
lines terminated by '\r\n';

2) 使用insert into语句

insert into table_name(column_name) values(column_value);

范例

INSERT INTO user(C_NAME, C_PSWD, C_UPDATE) VALUES('张三', '1234', '2017-06-27');
2.2.4.3 数据更新

1) 通过修改文件更新

delete from table_name;
load data local infile '/path/file' into table table_name;

2) 使用update语句

update table_name set what_to_update = value 
where conditions_to_satisfy;

范例

UPDATE user SET C_NAME = '李四' 
WHERE C_OID = 1
2.2.4.4 数据删除
delete from table_name 
where conditions_to_satisfy;

范例

DELETE FROM USER WHERE C_OID = 2;
2.2.4.5 特殊操作

1) 去除重复

select distinct table_name from table_name;

范例

SELECT DINSTINCT C_NAME FROM user;

2) 排序
mysql的排序默认是升序(asc)的,如果是降序的话要使用desc

SELECT * FROM user
ORDER BY C_OID ASC;    //升序
ORDER BY C_OID DESC;    //降序

3)NULL值操作
查询NULL值的时候不能使用普通的算术运算符去判断

SELECT 0 IS NULL, 0 IS NOT NULL;

当使用order by语句是NULL值会被当做最小值
4) 模糊匹配
like

SELECT * FROM user WHERE C_NAME LIKE '';
SELECT * FROM user WHERE C_NAME NOT LIKE '';

"_"字符匹配任何单人字符,"%"匹配任意数目字符,查询时默认不区分大小写,比较操作符应使用like或not like。
regexp

  • '.'匹配任何单个的字符
  • 字符类"[...]"匹配在方括号内的任何字符
  • "*"匹配零个或者多个在它前面的字符
  • bifnary比较式区分大小写
  • '^'匹配以跟在后边的字符开头,'$'匹配以跟在前面的字符结尾
  • '^ $' 匹配 '^' 和'$'之间的字符相同的字符串
  • '{n}'匹配重复n次跟在前面的字符

找出以b开头的名字

SELECT * FROM user WHERE C_NAME REGEXP '^b';

找出以fy结尾的名字

SELECT * FROM user WHERE C_NAME REGEXP 'fy$';

找出包含一个w的名字

SELECT * FROM user WHERE C_NAME REGEXP 'w';

找出长度为5的名字

SELECT * FROM user WHERE C_NAME REGEXP '^.....$';
SELECT * FROM user WHERE C_NAME REGEXP '^.{5}$';

5) 计数
count();

SELECT COUNT(*) FROM user;

6) 分组
group by

SELECT C_NAME FROM user 
GROUP BY C_NAME

使用group by时,要注意group by后要求跟上所有的查询字段,并且字段的名字不能为别名。
7) 批处理
处理sql脚本

mysql -h host[数据库的url] -u username -p < batch-file
enter password: 

2.2.5 常用查询的例子

2.2.5.1 求最大值或最小值
select max(column_name), min(column_name) from table_name;

范例 最大/小的物品号

SELECT MAX(article) AS article FROM shop;
SELECT MIN(article) AS article FROM shop;
2.2.5.2 求某列的最大值或最小值

最贵/便宜的编号、销售商和价格

SELECT article, dealer, price
FROM shop
WHERE price = (SELECT MAX(price) FROM shop);
SELECT article, dealer, price
FROM shop
ORDER BY price DESC
LIMIT  1;    //获取第一行,并显示
2.2.5.3 自增长

auto_increment

CREATE TABLE shop (
    article INT NOT NULL AUTO_INCREMENT,
    dealer CHAR(8),
    price DOUBLE(16, 2),
    PRIMARY KEY (article)
);
INSERT INTO shop VALUE('A', '3.45');

可以通过last_insert_id()函数来查询最新的索引值

SELECT LAST_INSERT_ID() FROM shop;

设置自增长的值

ALTER TABLE shop AUTO_INCREMENT = 2;

3 函数和操作符

3.1 操作符优先级

同行的优先级相同

:=
||, OR, XOR
&&, AND
NOT
BETWEEN AND, CASE WHEN THEN ELSE
=, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
|
&
<<, >>
-, +
*, /, DIV, %, MOD
^
-, ~
!
BINGARY, COLLATE
3.2 比较函数和操作符

比较运算产生的结果为1(true)、0(false)或NULL
MySQL数值比较规则

  • 若有一个或两个参数为NULL时,除<=>算符,其他的结果都为NULL
  • 若同一个比较运算中的两个参数都是字符串,则按字符串进行比较
  • 若两个参数均为整数,则按照整数比较
  • 默认情况下,字符串比较不区分大小写

数值比较

  • = 等于
SELECT 1 = 0;    //0 fales
  • <=> 等于
SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;    //1, 1, 0 true, true, false
SELECT 1 = 1, NULL = NULL, 1 = NULL;    // 1, NULL, NULL   
  • <> != 不等于
SELECT 1 <> 2;    //1
SELECT 1 != 2;    //1
  • <=、<、>=、> 小于等于、小于、大于等于、大于
  • is boolean_value、not is boolean_value根据布尔值检验一个值
SELECT 1 IS TRUE, O IS FALSE, NULL IS UNKNOWN;    //1, 1, 1
  • is null、is not null检验一个值是否为null
SELECT 1 IS NULL, NULL IS NULL, 1 IS NOT NULL;    //0, 1, 1
  • exper between min and max当exper大于等于min并且小于等于max的时候返回1,否则返回0
SELECT 2 BETWEEN 1 AND 3;    //1
  • coalesce(value, ...) 返回列表中第一个非NULL值,如果没有非NULL值的情况下返回NULL
SELECT COALESCE(NULL, 1, 2);    //1
SELECT COALESCE(NULL, NULL, NULL);    //NULL
  • greatest(value1, value2,...) 返回列表中的最大值,当包含NULL值时,返回值为NULL
SELECT GREATEST(2, 0);    //2
  • exper in (value1, value2) 判断exper是否在列表中,在返回1,否则返回0
SELECT 2 IN (1, 3, 4, 5, 2);    //1
  • isnull(exper) 判断exper是否为null
SELECT ISNULL(1/0);    //1
  • interval(n, n1, n2, n3, ....) 返回列表中第一个不比n小的值的列表下标,n1的下标为0
SELECT INTERVAL(23, 1, 34, 56, 2);    //1
  • least(value1, value2,...) 返回列表中的最小值,当包含NULL时,返回NULL
SELECT LEAST(4, 2, 3);    //2
3.3 逻辑操作符
  • not、! 逻辑not,当操作数为0时,返回值为1,当操作数为非零时,返回值为0,当操作数为NULL时,返回NULL
SELECT NOT 10, NOT 0, NOT NULL, !(1+1), !1+1;    //0, 1, null, 0, 1 
  • and、&& 逻辑and,当所有操作数均为非零值、并且不为NULL时,计算所得结果为 1 ,当一个或多个操作数为0 时,所得结果为 0 ,其余情况返回值为 NULL
SELECT 1&&1, 1&&0, 1&&NULL, 0&&NULL, NULL&&NULL;    //1, 0, null, 0, null
  • or、|| 逻辑or,当两个操作数均为非 NULL值时,如有任意一个操作数为非零值,则结果为1,否则结果为0。当有一个操作数为NULL时,如另一个操作数为非零值,则结果为1,否则结果为 NULL 。假如两个操作数均为 NULL,则所得结果为 NULL。
SELECT 1||1, 1||0, 0||0, 0||NULL, 1||NULL, NULL||NULL;    //1, 1, 0, 0, 1, NULL
  • xor 逻辑xor,当任意一个操作数为 NULL时,返回值为NULL。对于非 NULL 的操作数,假如一个奇数操作数为非零值,则计算所得结果为 1 ,否则为 0 。
SELECT 1XOR1, 1XOR0, 1XORNULL, 1XOR1XOR1;    //0, 1, NULL, 1
3.4 控制流程函数
case value 
when [compare-value] 
then result 
[when [compare-value] then result ...]
[else result] 
end

范例:

CASE 1
WHEN 1 THEN 'ONE'
WHEN 2 THEN 'TWO'
ELSE 'OTHER'
END;   //ONE

相关文章

网友评论

  • mmlmml:99.99%的Mysql都运行在Linux上.So.安装配置补充一下Linux吧.以后甚至可以安装都只写Linux版.

本文标题:菜鸟的修炼之MySQL

本文链接:https://www.haomeiwen.com/subject/olmncxtx.html