Mysql基本操作
1.概念
1.1 数据库概念
DB(数据库):存储数据库对象的容器。
DBMS(数据库管理系统):专门用于管理数据库的计算机系统软件;能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并对数据完整性、安全性进行控制;我们一般说的数据库,就是指的DBMS,例如我们马上学习的MySQL就是其中之一。
1.2 数据分类
关系型数据库:Oracle、Mysql
非关系型数据库:Nosql、MongoDB
1.3 数据库引擎
InnoDB:支持事务,支持外键,支持行级锁定,性能较低。
MyISAM:拥有较高的插入,查询速度,但不支持事务,不支持外键。
2. SQL语言
**SQL:**结构化查询语言(Structured Query Language),是关系数据库的标准语言,它的特点是:简单、灵活、功能强大。
2.1 DQL(数据库查询语言)
其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER
BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。
2.2 DML(数据库操作语言)
其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。
2.3 TPL(事务处理语言)
它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。
2.4 DCL(数据控制语言)
它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
2.5 DDL(数据定义语言)
其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
2.6 CCL(指针控制语言)
它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
3. 数据库操作
3.1 启动Mysql服务
启动服务:net start mysql;
关闭服务:net stop mysql;
3.2 连接数据库
mysql -uroot -padmin -hlocalhost -P3306
mysql -uroot -padmin -h127.0.0.1 -P3306
mysql -uroot -padmin -h192.168.1.100 -P3306
mysql -uroot -p802134
mysql -uroot -p,弹出界面再输入密码
3.3 数据库操作
show databases;
use databaseName;
create database databaseName;
drop database databaseName;
3.4 常用列类型
int 短整型
bigint 长整型
float 单精度
double 双精度
decimal 金融数据
char 不可变字符串
varchar 可变字符串
Bit 取值0和1(对应java中的boolean)
DATETIME(年月日,时分秒)
DATE(年月日)
TIMESTAMP(时间戳--范围19700101080001 - 203801191111407 基本不会用它,了解)对于到Java中也是 Date时间
TIME:存时间,不带日期
YEAR:只存年份
BLOB:保存的时候,根据自己的大小,选择使用的类型.一般使用BLOB就够用了.
3.5 操作表
SHOW TABLES; 查看数据库中存在哪些表
DESC table_name; 查看表结构:
SHOW CREATE TABLE table_name; 查看表的详细定义(定义表的SQL语句)
DROP TABLE table_name; 删除表:
3.5.1 建表语法
-- 创建表
CREATE TABLE 表名(
列名1 列的类型 [约束],
列名2 列的类型 [约束],
....
列名N 列的类型 约束
);
3.5.2 表的约束
1.非空约束(NK):NOT NULL,不允许某列的内容为空。
2.设置列的默认值:DEFAULT。
3.唯一约束(UK):UNIQUE,在该表中,该列的内容必须唯一。
4.主键约束:PRIMARY KEY, 非空且唯一。
5.主键自增长:AUTO_INCREMENT,从1开始,步长为1。
6.外键约束:FOREIGN KEY,A表中的外键列.A表中的外键列的值必须参照于B表中的某一列(B表主键)。
1:单列主键,单列作为主键,建议使用。
复合主键,使用多列充当主键,不建议。
2:主键分为两种:
① 自然主键:使用有业务含义的列作为主键(不推荐使用);
② 代理主键:使用没有业务含义的列作为主键(推荐使用); id
4. 单表查询
4.1 简单查询
SELECT * FROM product;
4.1.1 数据去重
SELECT DISTINCT productName FROM product;
4.1.2 数学运算
对NUMBER型数据可以使用算数操作符创建表达式(+ - * /)
4.1.3 设置别名
SELECT id,productName,(costPrice+1)*50 AS price FROM product;-- AS可省略
4.1.4 显示格式
-- CONCAT函数可以连接字符串
SELECT CONCAT(productName,'商品的零售价为:',salePrice) FROM product;
SELECT CONCAT(productName,'商品的零售价为:') salePrice FROM product;
SELECT id,productName,CONCAT('成本价格是:',salePrice) 成本 FROM product;
4.2 过滤查询
4.2.1 比较运算符
4.2.2 逻辑运算符
4.2.3 范围查询
-- 需求: 查询id,货品名称,批发价在300-400之间的货品(使用between)
SELECT id,productName,salePrice*cutoff FROM product WHERE salePrice*cutoff BETWEEN 300 AND 400;
4.2.4 集合查询
-- IN(),括号中为离散集合
-- 需求: 查询id,货品名称,分类编号不为2,4的所有货品
SELECT id,productName,dir_id FROM product WHERE dir_id NOT IN(2,4);
4.2.5 空值查询
-- 需求: 查询商品名为NULL的所有商品信息。
SELECT * FROM product WHERE productName IS NULL;
4.2.6 模糊查询
-- 需求: 查询id,货品名称,货品名称匹配'%罗技M9_'
SELECT id,productName FROM product WHERE productName LIKE '%罗技M9_';
4.2.7 正则表达式
4.3 结果排序
使用ORDER BY子句将结果的记录排序:
ASC : 升序,缺省。
DESC: 降序。
ORDER BY 语句出现在SELECT语句的最后。
4.4 分页查询
-- 第N页:
SELECT * FROM product LIMIT (N-1)*3,3;
4.5 聚集函数
COUNT:统计结果记录数 如果列的值为null 不会计算在内的
MAX: 统计计算最大值
MIN: 统计计算最小值
SUM: 统计计算求和
AVG: 统计计算平均值 如果列的值为null 不会计算在内的
4.6 分组查询
语法格式:
SELECT 聚集函数或者分组的列
FROM table_name
WHERE 条件
GROUP BY 列名
HAVING 分组之后的条件;
说明:不能在 WHERE 子句中使用组函数(注意),可以在 HAVING 子句中使用组函数。