1 Mysql的安装与配置
安装需要注意:
- 编码选择UTF8
- 存储引擎选择多功能的
2 启动和连接MySQL
2.1 启动MySQL服务
必须先在操作系统中开启MySQL的服务,才能够使用MySQL软件,可以通过如下的一些方式来启动:
- cmd–dos运行中输入 services.msc 打开服务界面,找到MySQL服务;
- 控制面板-管理工具-服务;
- Window7 开始 搜索 服务
- dos命令的方式:做好笔记就行了
i. 启动MySQL服务 : net start MySQL
ii. 关闭MySQL服务 : net stop MySQL
提示: 如果启动出现下面的提示请使用管理员权限打开cmd在尝试
2.2 连接MySQL
1、如果数据库在本机并且端口是默认端口3306,可以这样简写:
mysql -uroot -padmin
2、如果觉得上面这种直接暴露密码不安全,可以这样写:
mysql -uroot -p
弹出界面再输入密码就是*****
3 MySQL数据库操作
3.1 数据库操作
查看&使用数据库
show databases; //查看数据库
use 数据库名; //使用数据库
创建数据库
create database 数据库名;
删除数据库
drop database 数据库名;
注意: 每一句后面都是有分号; 结束的
3.2 Mysql与Java数据类型对比
MySql日期类型
- DATETIME(年月日,时分秒)
- DATE(年月日)
- TIMESTAMP(时间戳–范围19700101080001 - 203801191111407 基本不会用它,了解)对于到Java中也是 Date时间
- TIME:存时间,不带日期
- YEAR:只存年份
注意:在MySQL中,日期时间值使用单引号引起来。 相当于Java中Date(主要),Calender。
3.3 创建表
CREATE TABLE `student` (
`id` bigint(20) PRIMARY KEY AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`age` int(11) SHOW TABLES; 查看数据库中存在哪些表:
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3.4 查看表结构和删除表
SHOW TABLES; 查看数据库中存在哪些表:
DESC table_name; 查看表结构:
SHOW CREATE TABLE table_name; 查看表的详细定义(定义表的SQL语句)
DROP TABLE table_name; 删除表:
3.5 表的约束
1.非空约束(NK):NOT NULL,不允许某列的内容为空。
2.设置列的默认值:DEFAULT。
3.唯一约束(UK):UNIQUE,在该表中,该列的内容必须唯一。
4.主键约束:PRIMARY KEY, 非空且唯一。
5.主键自增长:AUTO_INCREMENT,从1开始,步长为1。
6.外键约束:FOREIGN KEY,A表中的外键列.A表中的外键列的值必须参照于B表中的
主键设计:
1:单列主键,单列作为主键,建议使用。
复合主键,使用多列充当主键,不建议。
2:主键分为两种:
① 自然主键:使用有业务含义的列作为主键(不推荐使用);
② 代理主键:使用没有业务含义的列作为主键(推荐使用);
4 简单查询
(1) 简单数据查询
语法:
SELECT {*, column [alias],...} FROM table_name;
(2)去重查询。只对某一列有效
语法:
SELECT DISTINCT 列名,..
(3) 实现数学运算查询:
对NUMBER型数据可以使用算数操作符创建表达式(+ - * /)
对DATE型数据可以使用部分算数操作符创建表达式 (+ -)
运算符优先级:
- 乘法和除法的优先级高于加法和减法
- 同级运算的顺序是从左到右
- 表达式中使用"括号"可强行改变优先级的运算顺序
(4)设置列名的别名
例如:
SELECT id,productName,50*(costPrice+1) AS ABC FROM product
这里的AS可删
(5) 设置显示格式:
格式:xxx商品的零售价为:xxx
例如:
SELECT CONCAT(productName,'成本价为:',costPrice) AS productCostPrice
FROM product
5 过滤查询
5.1 比较运算符
语法
SELECT <selectList>
FROM table_name
WHERE 条件1 AND/OR 条件2;
注意:字符串和日期要用单引号扩起来.
要让MySQL查询区分大小写,可以:
SELECT * FROM table_name WHERE BINARY productName='g9x'
SELECT * FROM table_name WHERE BINARY productName='G9X'
5.2 逻辑运算
5.3 优先级规则
5.4 范围查询-BETWEEN AND
语法:
SELECT <selectList>
FROM table_name
WHERE 列名 BETWEEN minvalue AND maxvalue:闭区间。
5.5 集合查询- IN
语法:
SELECT <selectList>
FROM table_name
WHERE 列名 IN (值1,值2....);
5.6 空值查询 IS NULL
IS NULL:判断列的值是否为空。
语法:WHERE 列名 IS NULL;
注意 : 列的值是 null 和空字符串不一样,如果是空字符串 应该 = “”
5.7 模糊查询 LIKE
使用LIKE运算符执行通配查询,查询条件可包含文字字符或数字:
%:通配符:可表示零或多个任意的字符。
_:通配符:可表示任意的一个字符。
通配符:用来实现匹配部分值得特殊字符。
5.8 正则表达式
例如:
SELECT * FROM product WHERE productName REGEXP '[a-zA-Z]'
6 结果排序
语法:
SELECT <selectList>
FROM table_name
WHERE 条件
ORDER BY 列名1 [ASC/DESC],列名2 [ASC/DESC]...;
7 分页查询
例如:
SELECT * FROM product LIMIT 0,5
起始位置=(页数-1)*每页条数
8 聚集函数
COUNT:统计结果记录数 如果列的值为null 不会计算在内的
MAX: 统计计算最大值
MIN: 统计计算最小值
SUM: 统计计算求和
AVG: 统计计算平均值 如果列的值为null 不会计算在内的
例如:
SELECT AVG(salePrice) FROM product
9 分组查询
语法格式:
SELECT 聚集函数或者分组的列
FROM table_name
WHERE 条件
GROUP BY 列名
HAVING 分组之后的条件;
10 sql执行顺序
面试题