数据库 (DataBase,DB):就是数据的仓库,分为关系型数据库和非关系型数据库。
由于MySQL实际操作的是数据库中的表,所以得先创建数据库:
创建数据库:CREATE DATABASE [IF NOT EXISTS] 数据库名;
展示数据库:SHOW DATABASES;
使用数据库:USE 数据库名;
删除数据库:DORP DATABASE [IF EXISTS] 数据库名;
对数据库操作分成以下四类:
DDL(数据定义语言)定义和管理数据对象(CREATE、DROP、ALTER)
创建表(一般在数据库下面创建):
CREATE TABLE [ IF NOT EXISTS ] 表名(
字段名1 列类型 [ 属性 ] [ 索引 ] [注释] ,
字段名2 列类型 [ 属性 ] [ 索引 ] [注释] ,
… …
字段名n 列类型 [ 属性 ] [ 索引 ] [注释]
) [ 表类型 ] [ 表字符集 ] [注释] ;
显示表结构:desc 表名;
显示创建表的语句:show create table 表名;
显示数据库中所有表:show tables;
修改表名:ALTER TABLE 旧表名 RENAME AS 新表名
添加字段: ALTER TABLE 表名 ADD 字段名 列类型 [ 属性 ]
修改字段:ALTER TABLE 表名 MODIFY 字段名 列类型 [ 属性 ]
删除字段:ALTER TABLE 表名 DROP 字段名
删除表:DROP TABLE [ IF EXISTS ] 表名
DML(数据操作语言)用于操作数据库对象中的数据(INSERT、UPDATE、DELETE)
向表中插入数据:
INSERT INTO 表名 [ ( 字段1, 字段2, 字段3, … ) ] VALUES ( '值1', '值2', '值3', …)
修改表中数据:
UPDATE 表名 SET 字段名 = 值 [ , 字段名2 = 值2, …. ] [ WHERE 提交 ];
删除表中数据:
DELETE FROM 表名 [ WHERE condition ];
清空表中数据,结构外键不变:
TRUNCATE [TABLE] table_name
使用TRUNCATE TABLE重新设置AUTO_INCREMENT计数器,也不会对事物产生影响
DQL(数据查询语言)用于查询数据库数据(SELECT)(重点)
SELECT distinct(去重)需要查询的字段名 as 别名
FROM 表名 as 别名
WHERE #指定结果需满足的条件
GROUP BY #指定结果按照哪几个字段来分组
HAVING #过滤分组的记录必须满足的次要条件
ORDER BY#指定查询记录按一个或者多个条件排序
LIMIT m,n或者 n offset m;
DCL(数据控制语言)用来管理数据库的语言,包括管理权限及数据更改(GRANT、COMMIT、ROLLBACK)
事物是指将一系列数据操作捆绑成一个整体进行统一管理。事物特性:原子性,一致性,隔离性,持久性。
set autocommit=0/1 1代表自动提交,0代表手动提交
begin/ start transaction; 开启事物
commit; 提交事物
rollback; 回滚事务
/让所有输入该用户名和密码的进行连接,并可以对所有数据库及表访问、删除、修改
grant all on *.* to '用户名'@'%' identified by '密码';
常用函数及相关运算符
逻辑运算符:
and(&&) or(||) not(!)
比较运算符:
is null,is not null,between,like,in,>,<,=
模糊查询:
like %匹配任意字符,_匹配一个字符
聚合函数:
avg()平均数,count()计数,max()最大值,min()最小值,sum()求和
字符串函数:
concat()拼接字符串,lower()转小写,upper()转大写,length()长度,substring()截取字符串,trim()去左右空格,reverse()反转
日期函数:
curdate()获得当前日期,年月日;curtime()获得当前时间,时分秒;year(date)获得年;month(date)获得月份;now(),获得当前日期时间;unix_timestamp()获得unix时间戳;date_format()格式化日期
数学函数:
ceil()向上取整,rand()0-1之间随机小数,floor()向下取整,abs()绝对值,sqrt()开方,mod()取余,round()四舍五入
其他函数:
if(a,b,c)a为true,则返回b,反之返回c
ifnull(a,b)为null,返回b,否则返回a
nullif(a,b)a=b返回null,否则返回a