【快速了解】数据库CREATE|INSERT INTO|DELETE|UPDATE|SELECT|DROP|RENAME|ALTER...

发布于:2023-01-20 ⋅ 阅读:(300) ⋅ 点赞:(0)

用表student为例(如有需要我会随时添加新的字段)

目录

1. 创建表

create table

2. 添加信息

insert into

3. 修改表中数据

update(慎用)

4. 删除表中数据

delete(慎用)

5. 查找表中数据

select

 order by的使用

COUNT(*) 和 COUNT(`列`) 的使用和区别

演示avg的使用

 演示max 和 min 的使用

6. 删除整个表

drop(慎用)

7. 修改表名

rename

8. 查看并且修改表结构

alter

9.字符串相关的函数

10.数学相关函数


1. 创建表

create table

# 创建表student
CREATE TABLE student(
	id INT NOT NULL DEFAULT 1, -- 不为空,且默认为1
	`name` VARCHAR(255) NOT NULL DEFAULT '' -- 不为空,且默认为空字符串)
    CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE INNODB;

# CHARACTER SET ==> CHARSET  定义字符集(不定义就默认该数据库的字符集)
# COLLATE 定义校验规则
# ENGINE 定义引擎

2. 添加信息

insert into

# 注意添加的顺序要按照创建表的顺序
# 注意添加数据的类型也要匹配
INSERT INTO student VALUES(1, 'Marry');

# 也可以指定添加的列(字段)
INSERT INTO student(id, `name`) VALUES(1, 'Marry');

3. 修改表中数据

update(慎用)

# 修改表中所有数数据(慎用)
UPDATE student SET `name` = 'Jack'; -- 所有人的name 将会全成为'Jack'

# 修改 将id = 1 的学生名字改为Tom
UPDATE student SET `name` = 'Tom' where id = 1;

4. 删除表中数据

delete(慎用)

# 删除表中所有数据
DELETE FROM student;(慎用)

# 删除表中指定数据
# 删除表中名字为Marry的信息
DELETE FROM student WHERE `name` = 'Marry'

5. 查找表中数据

select

# 查询表中所有学生的信息
SELECT * FROM student;

# 查询表中所有学生的姓名
SELECT `name` FROM student

# 过滤表中的重复数据distinct
SELECT DISTINCT * FROM student -- 要查询的记录要求每个列(字段)都相同才可以去重

 order by的使用

# 升序降序order by的使用
-- 对id排序后输出【升序】。-- 默认是Asc 从上到下由小到大排序
SELECT * FROM student ORDER BY id;

-- 【降序】 加DESC 从上到下由大到小排序
SELECT * FROM student ORDER BY id DESC;

COUNT(*) 和 COUNT(`列`) 的使用和区别

-- 统计函数
-- 统计一个班级共有多少学生? 需要判断在后面加入where判断语句
SELECT COUNT(*) FROM student;
SELECT COUNT(`name`) FROM student;
# COUNT(*) 和 COUNT(`列`) 的区别
-- COUNT(*) 就是有多少行数据 数据中就算有空数据,也会计入总数中
-- COUNT(`列`) 是有多少行不为空的数据

COUNT(*) 就是有多少行数据。 数据中就算有空数据,也会计入总数中
COUNT(`列`) 是有多少行不为空的数据

例如有一个表(name):

 COUNT(*) 查询后会显示4,因为就算是null也会包含在总数中

 

 而COUNT(`列`)查询后会显示3,统计中排除了为null的这一行

演示avg的使用

# 演示avg的使用 【算平均数】
-- 例如计算年龄的平均值
SELECT AVG(age) FROM student;

 演示max 和 min 的使用

# 演示max 和 min 的使用
SELECT MAX(age) FROM student; -- 最大年龄
SELECT MIN(age) FROM student; -- 最小年龄

6. 删除整个表

drop(慎用)

# 删除表student
DROP TABLE student;

7. 修改表名

rename

# 给表student 改名为students
RENAME TABLE student TO students

8. 查看并且修改表结构

alter

# 查看student 的表结构
DESC student;

# 在学生表上增加一个列(字段) 性别sex, varchar类型
ALTER TABLE student
	ADD sex VARCHAR(16) NOT NULL DEFAULT '男'; -- 添加列sex 不为空 默认为男

# 修改name列,使长度为65
ALTER TABLE student 
    MODIFY `name` VARCHAR(65) NOT NULL DEFAULT ''; -- 定义长度,不为空,默认为空串

# 将列名`name` 修改为`user_name`
ALTER TABLE student
    CHANGE `name` `user_name` VARCHAR(32) NOT NULL DEFAULT ''; -- 定义长度,不为空,默认为空串

# 修改表的字符集
ALTER TABLE student CHARACTER SET utf8;
ALTER TABLE student CHARSET utf8;

9.字符串相关的函数

# CHARSET(列名) 返回字符串字符集
SELECT CHARSET(name) FROM emp
# CONCAT (列名1, [... ], 列名2)	连接字符串,将多个列拼接成一列
SELECT CONCAT(name, ' job is ', job) FROM emp

# INSTR (string ,substring )	返回substring在string中出现的位置,没有返回0
SELECT INSTR('hanshupingjiaoyu', 'jiao') FROM DUAL;
# dual 亚元表,是一个系统的表,可以作为默认的测试表来使用


# UCASE (列名 )	转换成大写
SELECT UCASE(name) FROM emp;
#  LCASE (列名 )	转换成小写
SELECT LCASE(name) FROM emp;


# LEFT (string2 ,length )	从string2列中的左边起取length个字符
SELECT LEFT(name, 2) FROM emp;
#  RIGHT (string2 ,length )	从string2列中的右边起取length个字符
SELECT RIGHT(name, 2) FROM emp;


#  LENGTH (string )	string列每一行的长度[按照字节来返回的]
SELECT LENGTH(name) FROM emp;
# REPLACE (str ,search_str ,replace_str ) 	
-- 在str中用replace_str替换search_str
-- 如果是manager 就替换成 经理
SELECT 	name, REPLACE(job, 'MANAGER', '经理')
	FROM emp;

# STRCMP (string1 ,string2 )	逐字符比较两字串大小
SELECT STRCMP('hsp', 'hsp') FROM DUAL;

# SUBSTRING (列 ,[position] ,[length ])	
# 从列 的position开始【从1开始计算】,取length个字符
# 从ename列中第一个字符开始取到第三个字符结束
SELECT SUBSTRING(ename, 1, 3) FROM emp;

# LTRIM (列名) RTRIM (列名)  TRIM(列名)
# 去除前端空格
SELECT LTRIM('  Marry  ') FROM DUAL;
# 去除后端空格
SELECT RTRIM('   Marry   ') FROM DUAL;
# 去除前后端空格
SELECT TRIM('   Marry   ') FROM DUAL;

10.数学相关函数

# ABS(num)  绝对值
SELECT ABS(-10) FROM DUAL;

# BIN(decimal_number) 十进制转二进制
SELECT BIN(10) FROM DUAL;

# CEILING(number) 向上取整,得到比number大的最小整数
SELECT CEILING(2.4) FROM DUAL;

# CONV(number, fore_base转换前进制, to_base转换后进制)
SELECT CONV(8, 10, 2) FROM DUAL;-- 解读:将十进制的8,转成二进制后输出

# FLOOR(number) 向下取整,得到比number小的最大整数
SELECT FLOOR(1.1) FROM DUAL;

# FORMAT(number, decimal_places小数后几位) 格式化 保留小数位数(按照四舍五入)
SELECT FORMAT(78.123458, 2) FROM DUAL;
# 使用数学方法,给group by中的平均薪水四舍五入一下小数点后两位
SELECT FORMAT(AVG(sal), 2), deptno
	FROM emp
	GROUP BY deptno;
	
# LEAST(number1, number2, number3,...) 求最小值
SELECT LEAST(5, -2, 9, 3) FROM DUAL;

# MOD(number1, number2) 求余
SELECT MOD(10, 3) FROM DUAL;

# RAND() 每次返回不同的随机数 其范围为 0 <= v <= 1
SELECT RAND() FROM DUAL;
# RAND(seed) 生成随机数后,如果seed不变,生成的随机数也不会改变
SELECT RAND(5) FROM DUAL;

本文含有隐藏内容,请 开通VIP 后查看