MySQL基础
什么是MySQL?
MySQL是一款Oracle公司出口的轻量级数据库软件,广泛应用于互联网场景,同时也是目前最主流的数据库。
那什么又是数据库呢?
数据库是“按照数据结构来组织、存储、和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。其本质是一个文件系统,将数据按照特定的格式将数据存储起来,并通过特定的应用程序(数据库管理系统,DateBase Managemennt System),用户可以对数据库中的数据进行增加、修改、删除、及查询操作。
为什么使用MySQL?(优点是什么?)
MySQL相对于文件系统,有点如下:
-
MySQL的结构相对于文件系统跟方便管理
-
MySQL支持各种编程语言
-
MySQL比文件系统支持更大规模的数据
-
MySQL更具备扩展性
-
MySQL数据能更快检索
-
MySQL支持分布式
结构化查询语言SQL
什么是SQL?
结构化查询语言(Structured Query Language)简称SQL,SQL语句就是对数据库进行操作(作用)的一种语言。
SQL语句分类
-
DDL(Data Definition Language):数据库定于语句,用于数据库、表、列的管理(create、drop、alter)
-
DML(Data Manipulation Language):数据库表中数据的CUD,表数据的增删改(insert、update、delete)
-
DQL(Data Query Language):表数据的查询(select)
-
DCL(Data Control Language):权限控制
-
TCL(Transaction Control Language):事务控制
-
CCL(Cursor Control Language):指针控制、指针管理
SQL通用语法
-
SQL语句可以单行或多行书写,以分号结尾。
-
可使用空格和缩进来增强语句的可读性(语句之间可以多个空格)
-
MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
一些简单操作
用户管理(DDL)
-
查看用户
select host, user, authentication_string from mysql.user;
-
创建用户
create user '用户名'@'ip地址' IDENTIFIED by '密码';
-
修改密码
-
alter user 'zs'@'localhost' IDENTIFIED by '456';
权限管理(DCL)
-
用户授权
grant 权限码 on 数据库名.表名 to 用户名@主机名;
-
查看用户权限
show grants for 用户名@主机名;
-
取消用户权限
REVOKE 权限码 ON 库名.表名 FROM 用户名@主机名;
-
刷新权限
FLUSH PRIVILEGES;
数据库操作(DDL)
-
创建数据库
create database 数据库名称;-- 直接创建 create database if not EXISTS 数据库名称;-- 如果不存在则创建 create database if not EXISTS 数据库名称 character set 编码;-- 创建并指定编码
-
查看当前所有数据库
show databases;
-
修改数据库字符集
ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
-
删除数据库
DROP DATABASE 数据库名;
-
使用数据库(一般用于命令行下使用)
use 数据库名称;
数据库表的操作
-
创建表
CREATE TABLE [IF NOT EXISTS] 表名 ( 字段名 字段类型 [ primary key | unique | not null | auto_increment | | binary | default 缺省值 | comment 注释语句], ...... ) [ ENGINE=InnoDB | DEFAULT CHARSET=utf8 ];
-
查看表
show tables;-- 查看当前数据库下有哪些表 desc 表名;-- 查看表的结构 show create table 表名;-- 查看建表语句
-
删除表
drop table 表名;
-
修改表
-- 1.添加列 ALTER TABLE 表名 ADD 列名 类型; -- 2.修改类型 ALTER TABLE 表名 MODIFY 列名 新的类型; -- 3.修改列名 ALTER TABLE 表名 CHANGE 旧列名 新列名 类型; -- 4.删除列 ALTER TABLE 表名 DROP 列名; -- 5.修改表名 RENAME TABLE 表名 TO 新表名; -- 6.修改字符集 ALTER TABLE 表名 character set 字符集;
表数据的CRUD
-
添加数据
-- 向表中添加一行数据 insert into 表名(列名,...) values(值1,值2,...); -- 批量插入 insert into 表名(列名,...) values(值1,值2,...),(值1,值2,...),(值1,值2,...),(值1,值2,...); -- 插入数据(指定列) insert into 表名(列名)values('值')
-
删除表中数据
delete from 表名 where 列名=值 (and 列名=值 and 列名=值);
-
修改表中数据
update 表名 set 列名=值,列名=值,... where 列名=值;
-
查询表中数据
select 列名,... from 表名 where 列名=值; -- 别名查询 select 列名 (as) '别名' ,... from 表名 where 列名=值;
SQL运算符
和Java语言一样,SQL语言也有自己的运算符。两者算术运算符相差无几,但其他运算符有所差异。
算术运算符
算术运算符 | 说明 |
---|---|
+ | 加法运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算,返回商 |
% | 求余运算,返回余数 |
比较运算符
比较运算符 | 说明 |
---|---|
= | 等于 |
<>,!= | 不等于 |
> | 大于 |
< | 小于 |
<= | 小于等于 |
>= | 大于等于 |
BETWEEN | 在两值之间 |
NOT BETWEEN | 不在两值之间 |
IN | 在集合中 |
NOT IN | 不在集合中 |
<=> | 严格比较两个NULL值是否相等 |
LIKE | 模糊匹配 |
REGEXP或RLIKE | 正则式匹配 |
IS NULL | 为空 |
IS NOT NULL | 不为空 |
逻辑运算符
逻辑运算符 | 说明 |
---|---|
NOT 或 ! | 逻辑非 |
AND | 逻辑与 |
OR | 逻辑或 |
XOR | 逻辑异或 |
聚合函数
聚合函数 | 说明 |
---|---|
AVG | 返回平均数 |
MAX | 返回最大值 |
MIN | 返回最小值 |
COUNT() | 返回结果集中的行数 |
SUM() | 返回一组值得总和 |
Order by(排序)
ASC | 升序 |
---|---|
DESC | 降序 |
用 union/union all来连接结果集
把两次或者多次查询得结果合并起来
union | 去重 |
---|---|
union all | 不去重 |
目录