Mysql数据库(3)-CURD语句
Maysql数据库(3)-数据库的CURD语句
C:create 添加数据-insert语句
U:update 更新数据-update语句
R:read 读取(查找)数据-select语句
D:delete 删除数据-delete语句
一.Insert 语句
1.基本使用:insert into table_name(要添加数据的列名)
values (与列名对应的列类型)
![]()
2.注意事项
2.1 如果是给表中的所有字段添加数据,可以不写前面的字段名称
2.2 一条语句添加多行数据 insert into table_name (列名..) values (),(),() 形式添加多条记录
2.3在 values 中列出的数据位置必须与被加入的列的排列位置相对应。
2.4 关于默认值,当不给某个字段值时(此时2.3的相对应没有满足),并且指定了not null,那么如果有默认值就会添加默认值,否则就会报错。如果某个列没有指定 not null ,那么当添加数据时,没有给定值,则会默认给 null(指定某个列的默认值,可以在创建表时进行指定,在列名 列类型 后加上 dafault xxx即可,同理指定为not null也是在列类型后加上 not null)
二.Update语句
1.基本使用
UPDATE table_name
SET 具体设置的更新内容
WHERE 在哪里更新数据,指明更新那些行
UPDATE employee
SET salary = salary + 1000 , job = 'java程序员'
WHERE user_name = 'ZitWang'
2.注意事项
(WHERE 在哪里更新数据,指明更新那些行)注意如果不写这个句子,那么,会更新所有的记录(行)
三.Delete语句
1.基本使用
DELETE FROM table_name
WHERE 将哪里的数据删除,指明删除那些行
DELETE FROM employee
WHERE user_name = 'tom';
2.注意事项
2.1(WHERE 将哪里的数据删除,指明删除那些行)注意如果不写这个句子,那么,会删除表中所有的数据
但不会删除表本身(结构还在,还可以insert),要与(drop table 表名)句子分开。
2.2 Delete 语句不能删除某一列的值(可使用 update 将其置空实现)
四.Select语句
1.基本使用
SELECT [distinct] *或者(列名a,列名b,使用列名构建的表达式)
from 表名/*可以有多个,会涉及到多表查询,暂且不细说*/
WHERE 查询条件是XXXX
2.注意事项
2.1SELECT [distinct] 中[distinct]是可选的,写上表示将查询结果去重,要查询的记录,每个字段都相同,才会去重。eg:SELECT DISTINCT `name`, english FROM student(有学生名字与英语分数都一致,此时才会去重)
2.2 *或者(列名a,列名b,使用列名构建的表达式) 中使用*,表示所有列全都查询出来,(列名a,列名b,使用列名构建的表达式)表示将某几列查询出来,此时,列名可以构建成表达式,eg:(列名a+列名b+10)整体作为查查询结果输出。可以给列名取别名,eg: 列名a AS 别名XXX。
2.3 from 表名 中,表名可以有多个,会涉及到多表查询,后面拓展说明。
2.4 WHERE 查询条件是XXXX 中在where子句中确定查询条件时,需要往往需要使用逻辑运算符与比较运算符来实现。
3.Select语句拓展-order by 子句
3.1作用:将查询结果进行排序
3.2基本使用:order by 列名 ASC/DESC
3.3注意事项: 1.order by 子句 位于整条查询语句的结尾
2.ASC/DESC,ASC表示将输出结果升序排列,DESC降序,如果语句中不写,默认ASC升序
3.order by 列名,这个列名可以是表中本来就有的,也可以是你取的别名
4.Select语句拓展-group by 与having子句
4.1作用:group by子句将查询结果按照列分组,having子句可以实现对分组的结果进行过滤,二者往往结合起来使用。
4.2基本使用:
SELECT [distinct] *或者(列名a,列名b,使用列名构建的表达式)
FROM 表名
GROUP BY 列名
HAVING 过滤条件
GROUP by 用于对查询的结果分组统计,
-- having 子句用于限制分组显示结果
SELECT AVG(sal), deptno
FROM emp
GROUP BY deptno
HAVING AVG(sal) < 2000;
5.Select语句拓展-合计/统计函数的使用
5.1 count函数:返回行的总数
SELECT COUNT(*) FROM 表名
WHERE 条件
count(*) 返回满足条件的记录的行数
count(列): 统计满足条件的某列有多少个,但是会排除为 null的情况
5.2 sum函数:求和
SELECT SUM(列名) AS 别名,SUM(列名),SUM(列名) FROM 表名;
5.3 avg函数:求平均
SELECT AVG(列名/列名的表达式) FROM 表名;
5.4 min/max:求最值
SELECT MAX(列名/列名的表达式) FROM 表名;
SELECT MIN(列名/列名的表达式) FROM 表名;
6.Select语句拓展-时间日期相关函数的使用
6.1显示当前时间:
current:最近的
CURRENT_DATE()当前日期;CURRENT_TIME()当前时间点;
CURRENT_TIMESTAMP()当前时间戳(日期年月日+时间点时分秒);
now();当前时间(日期年月日+时间点时分秒)
6.2日期加减时间:
DATE_ADD(date,INTERVAL 多长时间) ;DATE_SUB(date,INTERVAL 多长时间)
6.3日期加减日期:
加:DATE_ADD(date1,INTERVAL date2) ;
减:DATEDIFF(date1, date2);返回两个日期差(天数),可以取负数
6.4 unix_timestamp() 返回1970.1.1到当前时间的秒数
FROM_UNIXTIME() : 可以把一个 unix_timestamp 秒数[时间戳],转成指定格式的日期。 %Y-%m-%d 格式是规定好的,表示年月日。在开发中,可以存放一个整数,然后表示时间,通过 FROM_UNIXTIME 转换。
SELECT UNIX_TIMESTAMP() FROM DUAL;
SELECT FROM_UNIXTIME(1234567891, '%Y-%m-%d') FROM DUAL;
SELECT FROM_UNIXTIME(789463345, '%Y-%m-%d %H:%i:%s') FROM DUAL;
DUAL:亚元表
7.Select语句拓展-加密与系统函数
USER();查询用户
DATABASE();查询当前使用数据库名称
MD5(str); 为字符串算出一个 MD5 的32位的字符串,常用于(用户密码)加密
PASSWORD(str; 加密函数, MySQL 数据库的用户密码就是 PASSWORD 函数加密
SELECT USER() FROM DUAL; -- 用户@IP 地址
SELECT DATABASE();
SELECT MD5('passwordxxxx') FROM DUAL;
SELECT LENGTH(MD5('passwordxxxx')) FROM DUAL;//此时长度为32,说明在数据库中存放的是加密后的密码
MD5(str)的应用:INSERT INTO 表名
VALUES(MD5('密码'))//这样存入数据库的密码就是加密形式的,安全性up
7.Select语句拓展-流程控制函数
7.1 IF(expr1,expr2,expr3) 如果 expr1 为 True ,则返回 expr2 否则返回 expr3[类似(a?b:c)]
7.2 IFNULL(expr1,expr2) 如果 expr1 不为空,则返回 expr1,否则返回 expr2[是空吗(是,返回2)/(不是,返回1)--返回不是空的优先返回expr1]
7.3 SELECT CASE
WHEN expr1 THEN expr2
WHEN expr3 THEN expr4
ELSE expr5 END; [类似if-else if- else .]
//如果 expr1 为 true,则返回 expr2,如果 expr2 为 true, 返回 expr4, 否则返回 expr5

浙公网安备 33010602011771号