当前位置: 首页 > news >正文

SQL语句大全(详解)

SQL

  • 前言
  • 1 DDL
    • 1.1 显示所包含的数据库
    • 1.2 创建数据库
    • 1.3 删除数据库
    • 1.4 使用数据库
      • 1.4.1 创建表
      • 1.4.2 查看表的结构
      • 1.4.3 查看当前数据库下的所有表
      • 1.4.4 基础的增删改查
        • 1.4.4.1 删除表
        • 1.4.4.2 添加列
        • 1.4.4.3 修改表名
        • 1.4.4.4 修改数据类型
        • 1.4.4.5 修改列名和数据类型
  • 2 DML
    • 2.1 给指定列添加数据
      • 2.1.1 修改中文列的编码格式(修改列名和数据类型):
      • 2.1.2 给所有列添加数据
      • 2.1.3 给所有列添加数据,列名的列表可以省略
      • 2.1.4 批量添加
    • 2.2 修改数据
      • 2.2.1 将张三的性别改为男
      • 2.2.2 将张三的生日改成2000-02-28,成绩改成99.00
      • 2.2.3 如果update语句没有where条件,则表中的数据全部都被修改
    • 2.3 删除数据
      • 2.3.1 删除小米记录
    • 2.4 简单的创建表,添加数据,查询数据
  • 3 DQL
    • 3.1 基础查询
      • 3.1.1 查询所有列的数据,列名的列表可以使用*代替
      • 3.1.2 查询name age 两列
      • 3.1.3 查询英语分数
      • 3.1.4 去除重复记录
      • 3.1.5 查询时起别名 as
    • 3.2 条件查询
      • 3.2.1 查询年龄大于23岁的学员信息
      • 3.2.2 查询年龄>=24岁的学员信息
      • 3.2.3 查询21<=年龄<=23岁的学员信息
      • 3.2.4 查询入学时间在1997-05-09--1998-07-09之间的学员信息
      • 3.2.5 查询年龄等于21岁的学员信息
      • 3.2.6 查询年龄等于21岁或者年龄等于24岁或者年龄等于25岁的学员信息
      • 3.2.7 查询英语成绩为空null的学员信息
    • 3.3 模糊查询
      • 3.3.1 查询姓'张'的学员信息
    • 3.4 排序查询
      • 3.4.1 查询学生信息,按照年龄升序排列
      • 3.4.2 查询学生信息,按照数学成绩降序排列
      • 3.4.3 查询学生信息,按照英语成绩降序排列,如果英语成绩一样,再按照数学成绩升序排列
    • 3.5 分组查询
      • 3.5.1 聚合函数
        • 3.5.1.1 统计班级有多少个学生
        • 3.5.1.2 查询数学成绩最高分
        • 3.5.1.3 查询数学成绩最低分
        • 3.5.1.4 查询数学成绩总分
        • 3.5.1.5 查询数学成绩平均分
      • 3.5.2 分组函数
        • 3.5.2.1 查询男同学和女同学的各自平均分
        • 3.5.2.2 查询男同学和女同学的各自平均分,以及各自人数
        • 3.5.2.3 查询男同学和女同学的各自平均分,以及各自人数,要求分数低于80的不参与分组
        • 3.5.2.4 查询男同学和女同学的各自平均分,以及各自人数,要求分数低于80的不参与分组,分组之后人数大于2
    • 3.6 分页查询
      • 3.6.1 从0开始查询,查询第一页数据
      • 3.62 每页显示3条数据显示第一页
      • 3.6.3 每页显示3条数据显示第二页
      • 3.6.4 每页显示3条数据显示第三页
      • 3.6.5 每页显示4条数据显示第二页
    • 3.7 约束
      • 3.7.1 字段的约束
      • 3.7.2 演示主键约束,非空且唯一
      • 3.7.3 演示非空约束
      • 3.7.4 演示唯一约束
      • 3.7.5 对约束的操作
        • 3.7.5.1 删除约束
        • 3.7.5.2 添加约束
        • 3.7.5.3 外键约束(实例演示)
  • 4 外键
    • 4.1 外键的建立
      • 4.1.1 多对多关系
      • 4.1.2 一对一关系
    • 4.2 实例演示练习
      • 逆向化模型
    • 1.2 创建数据库
    • 1.3 删除数据库
    • 1.4 使用数据库
      • 1.4.1 创建表
      • 1.4.2 查看表的结构
      • 1.4.3 查看当前数据库下的所有表
      • 1.4.4 基础的增删改查
        • 1.4.4.1 删除表
        • 1.4.4.2 添加列
        • 1.4.4.3 修改表名
        • 1.4.4.4 修改数据类型
        • 1.4.4.5 修改列名和数据类型
  • 2 DML
    • 2.1 给指定列添加数据
      • 2.1.1 修改中文列的编码格式(修改列名和数据类型):
      • 2.1.2 给所有列添加数据
      • 2.1.3 给所有列添加数据,列名的列表可以省略
      • 2.1.4 批量添加
    • 2.2 修改数据
      • 2.2.1 将张三的性别改为男
      • 2.2.2 将张三的生日改成2000-02-28,成绩改成99.00
      • 2.2.3 如果update语句没有where条件,则表中的数据全部都被修改
    • 2.3 删除数据
      • 2.3.1 删除小米记录
    • 2.4 简单的创建表,添加数据,查询数据
  • 3 DQL
    • 3.1 基础查询
      • 3.1.1 查询所有列的数据,列名的列表可以使用*代替
      • 3.1.2 查询name age 两列
      • 3.1.3 查询英语分数
      • 3.1.4 去除重复记录
      • 3.1.5 查询时起别名 as
    • 3.2 条件查询
      • 3.2.1 查询年龄大于23岁的学员信息
      • 3.2.2 查询年龄>=24岁的学员信息
      • 3.2.3 查询21<=年龄<=23岁的学员信息
      • 3.2.4 查询入学时间在1997-05-09--1998-07-09之间的学员信息
      • 3.2.5 查询年龄等于21岁的学员信息
      • 3.2.6 查询年龄等于21岁或者年龄等于24岁或者年龄等于25岁的学员信息
      • 3.2.7 查询英语成绩为空null的学员信息
    • 3.3 模糊查询
      • 3.3.1 查询姓'张'的学员信息
    • 3.4 排序查询
      • 3.4.1 查询学生信息,按照年龄升序排列
      • 3.4.2 查询学生信息,按照数学成绩降序排列
      • 3.4.3 查询学生信息,按照英语成绩降序排列,如果英语成绩一样,再按照数学成绩升序排列
    • 3.5 分组查询
      • 3.5.1 聚合函数
        • 3.5.1.1 统计班级有多少个学生
        • 3.5.1.2 查询数学成绩最高分
        • 3.5.1.3 查询数学成绩最低分
        • 3.5.1.4 查询数学成绩总分
        • 3.5.1.5 查询数学成绩平均分
      • 3.5.2 分组函数
        • 3.5.2.1 查询男同学和女同学的各自平均分
        • 3.5.2.2 查询男同学和女同学的各自平均分,以及各自人数
        • 3.5.2.3 查询男同学和女同学的各自平均分,以及各自人数,要求分数低于80的不参与分组
        • 3.5.2.4 查询男同学和女同学的各自平均分,以及各自人数,要求分数低于80的不参与分组,分组之后人数大于2
    • 3.6 分页查询
      • 3.6.1 从0开始查询,查询第一页数据
      • 3.62 每页显示3条数据显示第一页
      • 3.6.3 每页显示3条数据显示第二页
      • 3.6.4 每页显示3条数据显示第三页
      • 3.6.5 每页显示4条数据显示第二页
    • 3.7 约束
      • 3.7.1 字段的约束
      • 3.7.2 演示主键约束,非空且唯一
      • 3.7.3 演示非空约束
      • 3.7.4 演示唯一约束
      • 3.7.5 对约束的操作
        • 3.7.5.1 删除约束
        • 3.7.5.2 添加约束
        • 3.7.5.3 外键约束(实例演示)
  • 4 外键
    • 4.1 外键的建立
      • 4.1.1 多对多关系
      • 4.1.2 一对一关系
    • 4.2 实例演示练习
      • 逆向化模型
  • 总结

前言

在这里插入图片描述
  本教程为常用SQL语句的汇总,我把他放到了码云上面,项目地址:https://gitee.com/love-code-bear/java/blob/master/SQL.md


1 DDL

1.1 显示所包含的数据库

SHOW DATABASES;

1.2 创建数据库

CREATE DATABASE db2;
CREATE DATABASE IF NOT EXISTS db2;

1.3 删除数据库

DROP DATABASE db2;
drop DATABASE IF EXISTS db2;

– 查看当前所使用的数据库

SELECT DATABASE();

1.4 使用数据库

use db1;

1.4.1 创建表

CREATE TABLE jd_user(
id int,
username VARCHAR(32),
password VARCHAR(32)
);

1.4.2 查看表的结构

DESC stu;

1.4.3 查看当前数据库下的所有表

USE DATABASE db1;
SHOW TABLES;

1.4.4 基础的增删改查

1.4.4.1 删除表

DROP TABLE tb_user;
DROP TABLE IF EXISTS tb_user;

1.4.4.2 添加列

ALTER TABLE jd_user ADD address VARCHAR(32);

1.4.4.3 修改表名

ALTER TABLE jd_user RENAME TO jd_user;

1.4.4.4 修改数据类型

ALTER TABLE jd_user MODIFY address CHAR(32);
DESC jd_user;

1.4.4.5 修改列名和数据类型

ALTER TABLE jd_user CHANGE address location VARCHAR(64);

1.4.5 查询所有数据

SELECT * FROM jd_user;
SELECT * FROM stu;

2 DML

2.1 给指定列添加数据

2.1.1 修改中文列的编码格式(修改列名和数据类型):

alter table stu change name name varchar(255) character set utf8;
INSERT INTO stu(id,name) VALUES(1,'张三');

2.1.2 给所有列添加数据

alter table stu change sex sex varchar(255) character set utf8;
INSERT INTO stu(id,name,sex,birthday,score,email,tel,status) VALUES
(2,'lisa','女','1999-11-11',98.00,'1@qq.com',1123,1);

2.1.3 给所有列添加数据,列名的列表可以省略

INSERT INTO stu VALUES(3,'小米','男','1998-10-17',93.00,'2@qq.com',1433,1);

2.1.4 批量添加

INSERT INTO stu VALUES
(4,'huawei','男','1998-10-17',93.00,'2@qq.com',1433,1),
(5,'荣耀','男','1998-10-17',93.00,'2@qq.com',1433,1),
(6,'苹果','男','1998-10-17',93.00,'2@qq.com',1433,1);

2.2 修改数据

2.2.1 将张三的性别改为男

UPDATE stu SET sex = '男' WHERE name = '张三';

2.2.2 将张三的生日改成2000-02-28,成绩改成99.00

UPDATE stu SET birthday = '2000-02-28',score = '99.00' WHERE name = '张三';

2.2.3 如果update语句没有where条件,则表中的数据全部都被修改

2.3 删除数据

2.3.1 删除小米记录

DELETE FROM stu WHERE name = '小米';

2.4 简单的创建表,添加数据,查询数据

– 使用数据库
USE db1;
– 创建表

CREATE TABLE stu1 (
id int,
name VARCHAR(32),
age int,
sex VARCHAR(4),
address VARCHAR(64),
math DOUBLE(5,2),
english DOUBLE(5,2),
hire_date DATE
);

– 插入数据

ALTER TABLE stu1 CHANGE name name VARCHAR(32) character set utf8;
ALTER TABLE stu1 CHANGE sex sex VARCHAR(4) character set utf8;
ALTER TABLE stu1 CHANGE address address VARCHAR(64) character set utf8;
INSERT INTO stu1(id,name,age,sex,address,math,english,hire_date) 
VALUES
(1,'张一',25,'男','杭州',66.00,78.00,'1998-09-09'),
(2,'张二',24,'女','北京',87.00,76.00,'1996-09-09'),
(3,'张三',22,'男','郑州',94.00,65.00,'1997-09-09'),
(4,'张四',23,'男','合肥',69.00,75.00,'1998-09-09'),
(5,'张五',23,'女','无锡',76.00,79.00,'1999-09-09'),
(6,'张六',24,'女','苏州',88.00,94.00,'1998-03-09'),
(7,'张七',21,'男','南通',89.00,90.00,'1998-05-09'),
(8,'张八',22,'男','南充',98.00,90.00,'1998-07-09');

– 查询所有数据

SELECT * FROM stu1;
USE db1;

3 DQL

3.1 基础查询

3.1.1 查询所有列的数据,列名的列表可以使用*代替

SELECT *FROM stu1;
SELECT `name`,age,sex,address,math,english,hire_date FROM stu1;

3.1.2 查询name age 两列

SELECT `name`,age FROM stu1;

3.1.3 查询英语分数

SELECT english FROM stu1;

3.1.4 去除重复记录

SELECT DISTINCT english FROM stu1;

3.1.5 查询时起别名 as

SELECT name AS 姓名,math AS 数学,english AS 英语 FROM stu1;

3.2 条件查询

3.2.1 查询年龄大于23岁的学员信息

SELECT * FROM stu1	WHERE age > 23;

3.2.2 查询年龄>=24岁的学员信息

SELECT * FROM stu1 WHERE age >= 24;

3.2.3 查询21<=年龄<=23岁的学员信息

SELECT * FROM stu1 WHERE age>=21 AND age <= 23;
SELECT * FROM stu1 WHERE age BETWEEN 21 AND 23;

3.2.4 查询入学时间在1997-05-09–1998-07-09之间的学员信息

SELECT * FROM stu1 WHERE hire_date BETWEEN '1997-05-09' AND '1998-07-09';

3.2.5 查询年龄等于21岁的学员信息

SELECT * FROM stu1 WHERE age = 21;

3.2.6 查询年龄等于21岁或者年龄等于24岁或者年龄等于25岁的学员信息

SELECT * FROM stu1 WHERE age = 21 OR age = 24 OR age = 25;
SELECT * FROM stu1 WHERE age IN(21,24,25);

3.2.7 查询英语成绩为空null的学员信息

SELECT * FROM stu1 WHERE english IS NOT null;

3.3 模糊查询

3.3.1 查询姓’张’的学员信息

SELECT * FROM stu1 WHERE `name` LIKE '张%';
-- 查询第二个字是'三'的学员信息
SELECT * FROM stu1 WHERE `name` LIKE '_三%';
-- 查询名字中含有'四'的学员信息
SELECT * FROM stu1 WHERE `name` LIKE '%四%';

3.4 排序查询

3.4.1 查询学生信息,按照年龄升序排列

SELECT * FROM stu1 ORDER BY age ASC;

3.4.2 查询学生信息,按照数学成绩降序排列

SELECT * FROM stu1 ORDER BY math DESC;

3.4.3 查询学生信息,按照英语成绩降序排列,如果英语成绩一样,再按照数学成绩升序排列

SELECT * FROM stu1 ORDER BY english DESC , math ASC;

3.5 分组查询

3.5.1 聚合函数

3.5.1.1 统计班级有多少个学生

SELECT COUNT(id) FROM stu1;
SELECT COUNT(*) FROM stu1;

3.5.1.2 查询数学成绩最高分

SELECT MAX(math) FROM stu1;

3.5.1.3 查询数学成绩最低分

SELECT MIN(math) FROM stu1;

3.5.1.4 查询数学成绩总分

SELECT SUM(math) FROM stu1;

3.5.1.5 查询数学成绩平均分

SELECT AVG(math) FROM stu1;

3.5.2 分组函数

3.5.2.1 查询男同学和女同学的各自平均分

SELECT sex,AVG(math) FROM stu1 GROUP BY sex;

3.5.2.2 查询男同学和女同学的各自平均分,以及各自人数

SELECT sex,AVG(math),COUNT(*) FROM stu1 GROUP BY sex;

3.5.2.3 查询男同学和女同学的各自平均分,以及各自人数,要求分数低于80的不参与分组

SELECT sex,AVG(math),COUNT(*) FROM stu1 WHERE math > 80 GROUP BY sex;

3.5.2.4 查询男同学和女同学的各自平均分,以及各自人数,要求分数低于80的不参与分组,分组之后人数大于2

SELECT sex,AVG(math),COUNT(*) FROM stu1 WHERE math > 80 GROUP BY sex HAVING COUNT(*) > 2;

3.6 分页查询

SELECT * FROM  stu1;

3.6.1 从0开始查询,查询第一页数据

SELECT  * FROM stu1 LIMIT 0,3;

3.62 每页显示3条数据显示第一页

SELECT  * FROM stu1 LIMIT 0,3;

3.6.3 每页显示3条数据显示第二页

SELECT  * FROM stu1 LIMIT 3,3;

3.6.4 每页显示3条数据显示第三页

SELECT  * FROM stu1 LIMIT 6,3;

3.6.5 每页显示4条数据显示第二页

SELECT  * FROM stu1 LIMIT 4,4;

3.7 约束

3.7.1 字段的约束

-- 员工表
CREATE TABLE emp(
id INT PRIMARY KEY,/*员工id主键,且自增长*/
ename VARCHAR(32) UNIQUE,/*员工姓名,非空且唯一*/
joindate DATE NOT NULL,/*入职日期非空*/
salary DOUBLE(7,2) NOT NULL,/*薪水,非空*/
bonus DOUBLE(7,2) DEFAULT 0/*奖金,默认为0*/
);
DESC emp;
ALTER TABLE emp CHANGE ename ename VARCHAR(32) CHARACTER set utf8;
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(1,'张三','1999-11-11',8800,5000);
SELECT * FROM emp;

3.7.2 演示主键约束,非空且唯一

INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(NULL,'张三','1999-11-11',8800,5000);
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(1,'张三','1999-11-11',8800,5000);
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(2,'李四','1999-11-11',8800,5000);

3.7.3 演示非空约束

DELETE FROM emp WHERE id = 3;
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(3,null,'1999-11-11',8800,5000);

3.7.4 演示唯一约束

INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(3,'李四','1999-11-11',8800,5000);

3.7.5 对约束的操作

3.7.5.1 删除约束

ALTER TABLE emp MODIFY ename VARCHAR(32) CHARACTER set utf8;

3.7.5.2 添加约束

ALTER TABLE emp MODIFY ename VARCHAR(32) NOT NULL ;
DESC emp;
DROP TABLE emp;

3.7.5.3 外键约束(实例演示)

-- 员工表
CREATE TABLE emp(
id INT PRIMARY KEY auto_increment,/*员工id主键,且自增长*/
name VARCHAR(32),/*员工姓名,非空且唯一*/
age INT,
dep_id INT,/*联系到拎一个表*/
-- 添加一个外键约束
CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id)
);
-- 部门表
CREATE TABLE dept(
id INT PRIMARY KEY auto_increment,
dep_name VARCHAR(32),
address VARCHAR(32)
);
DESC emp;
DESC dept;
DROP TABLE emp;
DROP TABLE dept;
ALTER TABLE emp CHANGE name name VARCHAR(32) CHARACTER set utf8;
ALTER TABLE dept CHANGE dep_name dep_name VARCHAR(32) CHARACTER set utf8;
ALTER TABLE dept CHANGE address address VARCHAR(32) CHARACTER set utf8;
INSERT INTO emp (name,age,dep_id) VALUES
('张三',20,1),
('李四',20,1),
('王五',20,1),
('赵六',20,2),
('孙七',22,2),
('周八',18,2);
INSERT INTO dept (dep_name,address) VALUES
('研发部','广州'),
('销售部','深圳');
SELECT * FROM emp;
SELECT * FROM dept;
-- 删除外键
ALTER TABLE emp DROP FOREIGN KEY fk_emp_dept;
-- 添加外键
ALTER TABLE emp ADD CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id);

4 外键

使用数据库,展示所有表

USE db1;
SHOW TABLES;

4.1 外键的建立

4.1.1 多对多关系

-- 订单表
CREATE TABLE tb_order(
id INT PRIMARY KEY auto_increment,
payment double(10,2),
payment_type TINYINT,
status TINYINT
);
-- 商品表
CREATE TABLE tb_goods(
id INT PRIMARY KEY auto_increment,
title VARCHAR(100),
price DOUBLE(10,2)
);
-- 中间表
CREATE TABLE tb_order_goods(
id INT PRIMARY KEY auto_increment,
order_id INT,
goods_id INT
);
-- 添加外键
ALTER TABLE tb_order_goods ADD CONSTRAINT fk_order_id FOREIGN KEY(order_id) REFERENCES tb_order(id);
ALTER TABLE tb_order_goods ADD CONSTRAINT fk_goods_id FOREIGN KEY(goods_id) REFERENCES tb_goods(id);
SHOW TABLES;

4.1.2 一对一关系

-- 用户表
CREATE TABLE tb_user(
id INT PRIMARY KEY auto_increment,
photo VARCHAR(100),
name VARCHAR(32),
age INT,
sex VARCHAR(4),
desc_id INT UNIQUE,
CONSTRAINT tb_user_desc FOREIGN KEY(desc_id) REFERENCES tb_user_desc(id) 
);
-- 用户详情表
CREATE TABLE tb_user_desc(
id INT PRIMARY KEY auto_increment,
city VARCHAR(32),
edu VARCHAR(32),
income DOUBLE(7,2),
status TINYINT
);
ALTER TABLE tb_user_desc CHANGE status status VARCHAR(16) CHARACTER set utf8;
INSERT into tb_user_desc(city,edu,income,status) VALUES
('广州','本科',3000,'单身'),
('广州','硕士',12000,'单身');
INSERT into tb_user(photo,`name`,age,sex,desc_id) VALUES
('c盘','林青霞',22,'女',1),
('d盘','风清扬',24,'男',2);
ALTER TABLE tb_user auto_increment = 1;
SELECT * FROM tb_user;
SELECT * FROM tb_user_desc;
DESC tb_user;
DESC tb_user_desc;
DROP TABLE tb_user;

4.1.3 查看所有外键

SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE;

4.2 实例演示练习

-- 音乐专辑表名
CREATE TABLE music(
title VARCHAR(32),/*专辑名*/
alias VARCHAR(32),/*专辑别名*/
image VARCHAR(64),/*封面图片*/
style VARCHAR(16),/*流派(经典、流行、民谣)*/
type VARCHAR(8),/*类型(专辑,单曲)*/
medium VARCHAR(8),/*介质(胶片,cd)*/
publish_time DATE,/*发行时间*/
publisher VARCHAR(8),/*出版者*/
number TINYINT,/*唱片数量*/
barcode BIGINT,/*条形码*/
summary VARCHAR(1024),/*简介*/
artist VARCHAR(32),/*艺术家*/
id INT UNIQUE/*编号,唯一*/
);
-- 曲目表名
CREATE TABLE song(
name VARCHAR(32),/*歌曲名*/
serial_number TINYINT,/*歌曲序号*/
id INT UNIQUE/*编号,唯一*/
);
-- 评论表名
CREATE TABLE review(
content VARCHAR(1024),/*评论内容*/
rating TINYINT,/*评分1-5*/
review datetime,/*评论时间*/
content_user_id INT,
content_music_id INT
);
-- 用户表名
CREATE TABLE user(
username VARCHAR(32),
image VARCHAR(64),
signture VARCHAR(64),
name VARCHAR(32),
id INT PRIMARY KEY
);
-- 展示
DESC music;
DESC song;
DESC review;
DESC user;
-- 删除
DROP TABLE music;
DROP TABLE song;
DROP TABLE review;
DROP TABLE user;
-- 专辑和用户的中间表
CREATE TABLE music_user(
id INT PRIMARY KEY auto_increment,
music_id INT,
user_id INT
);
-- 添加专辑和用户外键
ALTER TABLE music_user ADD CONSTRAINT fk_music_id FOREIGN KEY(music_id) REFERENCES music(id);
ALTER TABLE music_user ADD CONSTRAINT fk_user_id FOREIGN KEY(user_id) REFERENCES user(id);
-- 添加短评和用户外键
ALTER TABLE review ADD CONSTRAINT fk_review_user FOREIGN KEY(content_user_id) REFERENCES user(id);
-- 添加短评专辑外键
ALTER TABLE review ADD CONSTRAINT fk_review_music FOREIGN KEY(content_music_id) REFERENCES music(id);
-- 添加曲目和专辑外键
ALTER TABLE song ADD CONSTRAINT fk_song_music FOREIGN KEY(id) REFERENCES music(id);
ALTER TABLE song DROP FOREIGN KEY fk_song_user;

逆向化模型

– 多表查询

SELECT * FROM emp;
SELECT * FROM dept;
SELECT * FROM emp,dept;

– 产生笛卡尔积(有ab两个集合,去a和b所有的组合情况)
– 消除无效数据
– 查询emp和dept的数据,emp.dep_id = dept.id
– 隐式内连接

SELECT * FROM emp,dept WHERE emp.dep_id = dept.id;

– 查询emp的name,age,dept表的dep_name

SELECT emp.`name`,emp.age,dept.dep_name FROM emp,dept WHERE emp.dep_id = dept.id;

– 给表起别名

SELECT t1.`name`,t1.age,t2.dep_name FROM emp AS t1,dept AS t2 WHERE t1.dep_id = t2.id;

– 显式内连接

SELECT * FROM emp LEFT OUTER JOIN dept ON emp.dep_id = dept.id;
SELECT * FROM emp LEFT /*OUTER*/ JOIN dept ON emp.dep_id = dept.id;

– 右外连接

SELECT * FROM emp RIGHT OUTER JOIN dept ON emp.dep_id = dept.id;
SELECT * FROM emp RIGHT /*OUTER*/ JOIN dept ON emp.dep_id = dept.id;
```# 1 DDL## 1.1  显示所包含的数据库```mysql
SHOW DATABASES;

1.2 创建数据库

CREATE DATABASE db2;
CREATE DATABASE IF NOT EXISTS db2;

1.3 删除数据库

DROP DATABASE db2;
drop DATABASE IF EXISTS db2;

– 查看当前所使用的数据库

SELECT DATABASE();

1.4 使用数据库

use db1;

1.4.1 创建表

CREATE TABLE jd_user(
id int,
username VARCHAR(32),
password VARCHAR(32)
);

1.4.2 查看表的结构

DESC stu;

1.4.3 查看当前数据库下的所有表

USE DATABASE db1;
SHOW TABLES;

1.4.4 基础的增删改查

1.4.4.1 删除表

DROP TABLE tb_user;
DROP TABLE IF EXISTS tb_user;

1.4.4.2 添加列

ALTER TABLE jd_user ADD address VARCHAR(32);

1.4.4.3 修改表名

ALTER TABLE jd_user RENAME TO jd_user;

1.4.4.4 修改数据类型

ALTER TABLE jd_user MODIFY address CHAR(32);
DESC jd_user;

1.4.4.5 修改列名和数据类型

ALTER TABLE jd_user CHANGE address location VARCHAR(64);

1.4.5 查询所有数据

SELECT * FROM jd_user;
SELECT * FROM stu;

2 DML

2.1 给指定列添加数据

2.1.1 修改中文列的编码格式(修改列名和数据类型):

alter table stu change name name varchar(255) character set utf8;
INSERT INTO stu(id,name) VALUES(1,'张三');

2.1.2 给所有列添加数据

alter table stu change sex sex varchar(255) character set utf8;
INSERT INTO stu(id,name,sex,birthday,score,email,tel,status) VALUES
(2,'lisa','女','1999-11-11',98.00,'1@qq.com',1123,1);

2.1.3 给所有列添加数据,列名的列表可以省略

INSERT INTO stu VALUES(3,'小米','男','1998-10-17',93.00,'2@qq.com',1433,1);

2.1.4 批量添加

INSERT INTO stu VALUES
(4,'huawei','男','1998-10-17',93.00,'2@qq.com',1433,1),
(5,'荣耀','男','1998-10-17',93.00,'2@qq.com',1433,1),
(6,'苹果','男','1998-10-17',93.00,'2@qq.com',1433,1);

2.2 修改数据

2.2.1 将张三的性别改为男

UPDATE stu SET sex = '男' WHERE name = '张三';

2.2.2 将张三的生日改成2000-02-28,成绩改成99.00

UPDATE stu SET birthday = '2000-02-28',score = '99.00' WHERE name = '张三';

2.2.3 如果update语句没有where条件,则表中的数据全部都被修改

2.3 删除数据

2.3.1 删除小米记录

DELETE FROM stu WHERE name = '小米';

2.4 简单的创建表,添加数据,查询数据

– 使用数据库
USE db1;
– 创建表

CREATE TABLE stu1 (
id int,
name VARCHAR(32),
age int,
sex VARCHAR(4),
address VARCHAR(64),
math DOUBLE(5,2),
english DOUBLE(5,2),
hire_date DATE
);

– 插入数据

ALTER TABLE stu1 CHANGE name name VARCHAR(32) character set utf8;
ALTER TABLE stu1 CHANGE sex sex VARCHAR(4) character set utf8;
ALTER TABLE stu1 CHANGE address address VARCHAR(64) character set utf8;
INSERT INTO stu1(id,name,age,sex,address,math,english,hire_date) 
VALUES
(1,'张一',25,'男','杭州',66.00,78.00,'1998-09-09'),
(2,'张二',24,'女','北京',87.00,76.00,'1996-09-09'),
(3,'张三',22,'男','郑州',94.00,65.00,'1997-09-09'),
(4,'张四',23,'男','合肥',69.00,75.00,'1998-09-09'),
(5,'张五',23,'女','无锡',76.00,79.00,'1999-09-09'),
(6,'张六',24,'女','苏州',88.00,94.00,'1998-03-09'),
(7,'张七',21,'男','南通',89.00,90.00,'1998-05-09'),
(8,'张八',22,'男','南充',98.00,90.00,'1998-07-09');

– 查询所有数据

SELECT * FROM stu1;
USE db1;

3 DQL

3.1 基础查询

3.1.1 查询所有列的数据,列名的列表可以使用*代替

SELECT *FROM stu1;
SELECT `name`,age,sex,address,math,english,hire_date FROM stu1;

3.1.2 查询name age 两列

SELECT `name`,age FROM stu1;

3.1.3 查询英语分数

SELECT english FROM stu1;

3.1.4 去除重复记录

SELECT DISTINCT english FROM stu1;

3.1.5 查询时起别名 as

SELECT name AS 姓名,math AS 数学,english AS 英语 FROM stu1;

3.2 条件查询

3.2.1 查询年龄大于23岁的学员信息

SELECT * FROM stu1	WHERE age > 23;

3.2.2 查询年龄>=24岁的学员信息

SELECT * FROM stu1 WHERE age >= 24;

3.2.3 查询21<=年龄<=23岁的学员信息

SELECT * FROM stu1 WHERE age>=21 AND age <= 23;
SELECT * FROM stu1 WHERE age BETWEEN 21 AND 23;

3.2.4 查询入学时间在1997-05-09–1998-07-09之间的学员信息

SELECT * FROM stu1 WHERE hire_date BETWEEN '1997-05-09' AND '1998-07-09';

3.2.5 查询年龄等于21岁的学员信息

SELECT * FROM stu1 WHERE age = 21;

3.2.6 查询年龄等于21岁或者年龄等于24岁或者年龄等于25岁的学员信息

SELECT * FROM stu1 WHERE age = 21 OR age = 24 OR age = 25;
SELECT * FROM stu1 WHERE age IN(21,24,25);

3.2.7 查询英语成绩为空null的学员信息

SELECT * FROM stu1 WHERE english IS NOT null;

3.3 模糊查询

3.3.1 查询姓’张’的学员信息

SELECT * FROM stu1 WHERE `name` LIKE '张%';
-- 查询第二个字是'三'的学员信息
SELECT * FROM stu1 WHERE `name` LIKE '_三%';
-- 查询名字中含有'四'的学员信息
SELECT * FROM stu1 WHERE `name` LIKE '%四%';

3.4 排序查询

3.4.1 查询学生信息,按照年龄升序排列

SELECT * FROM stu1 ORDER BY age ASC;

3.4.2 查询学生信息,按照数学成绩降序排列

SELECT * FROM stu1 ORDER BY math DESC;

3.4.3 查询学生信息,按照英语成绩降序排列,如果英语成绩一样,再按照数学成绩升序排列

SELECT * FROM stu1 ORDER BY english DESC , math ASC;

3.5 分组查询

3.5.1 聚合函数

3.5.1.1 统计班级有多少个学生

SELECT COUNT(id) FROM stu1;
SELECT COUNT(*) FROM stu1;

3.5.1.2 查询数学成绩最高分

SELECT MAX(math) FROM stu1;

3.5.1.3 查询数学成绩最低分

SELECT MIN(math) FROM stu1;

3.5.1.4 查询数学成绩总分

SELECT SUM(math) FROM stu1;

3.5.1.5 查询数学成绩平均分

SELECT AVG(math) FROM stu1;

3.5.2 分组函数

3.5.2.1 查询男同学和女同学的各自平均分

SELECT sex,AVG(math) FROM stu1 GROUP BY sex;

3.5.2.2 查询男同学和女同学的各自平均分,以及各自人数

SELECT sex,AVG(math),COUNT(*) FROM stu1 GROUP BY sex;

3.5.2.3 查询男同学和女同学的各自平均分,以及各自人数,要求分数低于80的不参与分组

SELECT sex,AVG(math),COUNT(*) FROM stu1 WHERE math > 80 GROUP BY sex;

3.5.2.4 查询男同学和女同学的各自平均分,以及各自人数,要求分数低于80的不参与分组,分组之后人数大于2

SELECT sex,AVG(math),COUNT(*) FROM stu1 WHERE math > 80 GROUP BY sex HAVING COUNT(*) > 2;

3.6 分页查询

SELECT * FROM  stu1;

3.6.1 从0开始查询,查询第一页数据

SELECT  * FROM stu1 LIMIT 0,3;

3.62 每页显示3条数据显示第一页

SELECT  * FROM stu1 LIMIT 0,3;

3.6.3 每页显示3条数据显示第二页

SELECT  * FROM stu1 LIMIT 3,3;

3.6.4 每页显示3条数据显示第三页

SELECT  * FROM stu1 LIMIT 6,3;

3.6.5 每页显示4条数据显示第二页

SELECT  * FROM stu1 LIMIT 4,4;

3.7 约束

3.7.1 字段的约束

-- 员工表
CREATE TABLE emp(
id INT PRIMARY KEY,/*员工id主键,且自增长*/
ename VARCHAR(32) UNIQUE,/*员工姓名,非空且唯一*/
joindate DATE NOT NULL,/*入职日期非空*/
salary DOUBLE(7,2) NOT NULL,/*薪水,非空*/
bonus DOUBLE(7,2) DEFAULT 0/*奖金,默认为0*/
);
DESC emp;
ALTER TABLE emp CHANGE ename ename VARCHAR(32) CHARACTER set utf8;
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(1,'张三','1999-11-11',8800,5000);
SELECT * FROM emp;

3.7.2 演示主键约束,非空且唯一

INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(NULL,'张三','1999-11-11',8800,5000);
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(1,'张三','1999-11-11',8800,5000);
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(2,'李四','1999-11-11',8800,5000);

3.7.3 演示非空约束

DELETE FROM emp WHERE id = 3;
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(3,null,'1999-11-11',8800,5000);

3.7.4 演示唯一约束

INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(3,'李四','1999-11-11',8800,5000);

3.7.5 对约束的操作

3.7.5.1 删除约束

ALTER TABLE emp MODIFY ename VARCHAR(32) CHARACTER set utf8;

3.7.5.2 添加约束

ALTER TABLE emp MODIFY ename VARCHAR(32) NOT NULL ;
DESC emp;
DROP TABLE emp;

3.7.5.3 外键约束(实例演示)

-- 员工表
CREATE TABLE emp(
id INT PRIMARY KEY auto_increment,/*员工id主键,且自增长*/
name VARCHAR(32),/*员工姓名,非空且唯一*/
age INT,
dep_id INT,/*联系到拎一个表*/
-- 添加一个外键约束
CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id)
);
-- 部门表
CREATE TABLE dept(
id INT PRIMARY KEY auto_increment,
dep_name VARCHAR(32),
address VARCHAR(32)
);
DESC emp;
DESC dept;
DROP TABLE emp;
DROP TABLE dept;
ALTER TABLE emp CHANGE name name VARCHAR(32) CHARACTER set utf8;
ALTER TABLE dept CHANGE dep_name dep_name VARCHAR(32) CHARACTER set utf8;
ALTER TABLE dept CHANGE address address VARCHAR(32) CHARACTER set utf8;
INSERT INTO emp (name,age,dep_id) VALUES
('张三',20,1),
('李四',20,1),
('王五',20,1),
('赵六',20,2),
('孙七',22,2),
('周八',18,2);
INSERT INTO dept (dep_name,address) VALUES
('研发部','广州'),
('销售部','深圳');
SELECT * FROM emp;
SELECT * FROM dept;
-- 删除外键
ALTER TABLE emp DROP FOREIGN KEY fk_emp_dept;
-- 添加外键
ALTER TABLE emp ADD CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id);

4 外键

使用数据库,展示所有表

USE db1;
SHOW TABLES;

4.1 外键的建立

4.1.1 多对多关系

-- 订单表
CREATE TABLE tb_order(
id INT PRIMARY KEY auto_increment,
payment double(10,2),
payment_type TINYINT,
status TINYINT
);
-- 商品表
CREATE TABLE tb_goods(
id INT PRIMARY KEY auto_increment,
title VARCHAR(100),
price DOUBLE(10,2)
);
-- 中间表
CREATE TABLE tb_order_goods(
id INT PRIMARY KEY auto_increment,
order_id INT,
goods_id INT
);
-- 添加外键
ALTER TABLE tb_order_goods ADD CONSTRAINT fk_order_id FOREIGN KEY(order_id) REFERENCES tb_order(id);
ALTER TABLE tb_order_goods ADD CONSTRAINT fk_goods_id FOREIGN KEY(goods_id) REFERENCES tb_goods(id);
SHOW TABLES;

4.1.2 一对一关系

-- 用户表
CREATE TABLE tb_user(
id INT PRIMARY KEY auto_increment,
photo VARCHAR(100),
name VARCHAR(32),
age INT,
sex VARCHAR(4),
desc_id INT UNIQUE,
CONSTRAINT tb_user_desc FOREIGN KEY(desc_id) REFERENCES tb_user_desc(id) 
);
-- 用户详情表
CREATE TABLE tb_user_desc(
id INT PRIMARY KEY auto_increment,
city VARCHAR(32),
edu VARCHAR(32),
income DOUBLE(7,2),
status TINYINT
);
ALTER TABLE tb_user_desc CHANGE status status VARCHAR(16) CHARACTER set utf8;
INSERT into tb_user_desc(city,edu,income,status) VALUES
('广州','本科',3000,'单身'),
('广州','硕士',12000,'单身');
INSERT into tb_user(photo,`name`,age,sex,desc_id) VALUES
('c盘','林青霞',22,'女',1),
('d盘','风清扬',24,'男',2);
ALTER TABLE tb_user auto_increment = 1;
SELECT * FROM tb_user;
SELECT * FROM tb_user_desc;
DESC tb_user;
DESC tb_user_desc;
DROP TABLE tb_user;

4.1.3 查看所有外键

SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE;

4.2 实例演示练习

-- 音乐专辑表名
CREATE TABLE music(
title VARCHAR(32),/*专辑名*/
alias VARCHAR(32),/*专辑别名*/
image VARCHAR(64),/*封面图片*/
style VARCHAR(16),/*流派(经典、流行、民谣)*/
type VARCHAR(8),/*类型(专辑,单曲)*/
medium VARCHAR(8),/*介质(胶片,cd)*/
publish_time DATE,/*发行时间*/
publisher VARCHAR(8),/*出版者*/
number TINYINT,/*唱片数量*/
barcode BIGINT,/*条形码*/
summary VARCHAR(1024),/*简介*/
artist VARCHAR(32),/*艺术家*/
id INT UNIQUE/*编号,唯一*/
);
-- 曲目表名
CREATE TABLE song(
name VARCHAR(32),/*歌曲名*/
serial_number TINYINT,/*歌曲序号*/
id INT UNIQUE/*编号,唯一*/
);
-- 评论表名
CREATE TABLE review(
content VARCHAR(1024),/*评论内容*/
rating TINYINT,/*评分1-5*/
review datetime,/*评论时间*/
content_user_id INT,
content_music_id INT
);
-- 用户表名
CREATE TABLE user(
username VARCHAR(32),
image VARCHAR(64),
signture VARCHAR(64),
name VARCHAR(32),
id INT PRIMARY KEY
);
-- 展示
DESC music;
DESC song;
DESC review;
DESC user;
-- 删除
DROP TABLE music;
DROP TABLE song;
DROP TABLE review;
DROP TABLE user;
-- 专辑和用户的中间表
CREATE TABLE music_user(
id INT PRIMARY KEY auto_increment,
music_id INT,
user_id INT
);
-- 添加专辑和用户外键
ALTER TABLE music_user ADD CONSTRAINT fk_music_id FOREIGN KEY(music_id) REFERENCES music(id);
ALTER TABLE music_user ADD CONSTRAINT fk_user_id FOREIGN KEY(user_id) REFERENCES user(id);
-- 添加短评和用户外键
ALTER TABLE review ADD CONSTRAINT fk_review_user FOREIGN KEY(content_user_id) REFERENCES user(id);
-- 添加短评专辑外键
ALTER TABLE review ADD CONSTRAINT fk_review_music FOREIGN KEY(content_music_id) REFERENCES music(id);
-- 添加曲目和专辑外键
ALTER TABLE song ADD CONSTRAINT fk_song_music FOREIGN KEY(id) REFERENCES music(id);
ALTER TABLE song DROP FOREIGN KEY fk_song_user;

逆向化模型

music

– 多表查询

SELECT * FROM emp;
SELECT * FROM dept;
SELECT * FROM emp,dept;

– 产生笛卡尔积(有ab两个集合,去a和b所有的组合情况)
– 消除无效数据
– 查询emp和dept的数据,emp.dep_id = dept.id
– 隐式内连接

SELECT * FROM emp,dept WHERE emp.dep_id = dept.id;

– 查询emp的name,age,dept表的dep_name

SELECT emp.`name`,emp.age,dept.dep_name FROM emp,dept WHERE emp.dep_id = dept.id;

– 给表起别名

SELECT t1.`name`,t1.age,t2.dep_name FROM emp AS t1,dept AS t2 WHERE t1.dep_id = t2.id;

– 显式内连接

SELECT * FROM emp LEFT OUTER JOIN dept ON emp.dep_id = dept.id;
SELECT * FROM emp LEFT /*OUTER*/ JOIN dept ON emp.dep_id = dept.id;

– 右外连接

SELECT * FROM emp RIGHT OUTER JOIN dept ON emp.dep_id = dept.id;
SELECT * FROM emp RIGHT /*OUTER*/ JOIN dept ON emp.dep_id = dept.id;

总结

  以上就是SQL语句大全的全部内容,希望对你有所帮助。

相关文章:

SQL语句大全(详解)

SQL前言1 DDL1.1 显示所包含的数据库1.2 创建数据库1.3 删除数据库1.4 使用数据库1.4.1 创建表1.4.2 查看表的结构1.4.3 查看当前数据库下的所有表1.4.4 基础的增删改查1.4.4.1 删除表1.4.4.2 添加列1.4.4.3 修改表名1.4.4.4 修改数据类型1.4.4.5 修改列名和数据类型2 DML2.1 给…...

视频营销活动中7个常见的错误

如今&#xff0c;越来越多的企业在社交媒体平台上开展视频营销活动。与其他传统营销策略不同&#xff0c;视频营销可以为企业带来更多的销售机会。随着越来越多的视频社交媒体平台的出现&#xff0c;营销人员更应该抓住这个机会。但在开始视频创作之前&#xff0c;您需要有一个…...

MapReduce小试牛刀

部署完hadoop单机版后&#xff0c;试下mapreduce是怎么分析处理数据的 Word Count Word Count 就是"词语统计"&#xff0c;这是 MapReduce 工作程序中最经典的一种。它的主要任务是对一个文本文件中的词语作归纳统计&#xff0c;统计出每个出现过的词语一共出现的次…...

2023年全国最新工会考试精选真题及答案7

百分百题库提供工会考试试题、工会考试预测题、工会考试真题、工会证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 21.会员大会或会员代表大会与职工代表大会或职工大会须分别行使职权&#xff0c;&#xff08;&#xff09;…...

13-mvc框架原理与实现方式

1、mvc原理 # mvc 与框架## 1.mvc 是什么1. m:model,模型(即数据来源),主要是针对数据库操作 2. v:view,视图,html 页面。视图由一个一个模板构成(模板是视图的一个具体展现或载体,视图是模板的一个抽象) 3. c:controller,控制器,用于mv之间的数据交互## 2.最简单的 mvc 就是一…...

弹性盒子布局

目录一、弹性盒子属性二、认识flex的坐标轴三、简单学习父级盒子属性三、属性说明3.1、flex-grow一、弹性盒子属性 说明&#xff1a; div的默认样式&#xff1a;display:block 块盒子 display:flex弹性盒子&#xff08;可以控制下级盒子的位置&#xff09; 当两种盒子单独出现…...

C# Sqlite数据库加密

sqlite官方的数据库加密是收费的&#xff0c;而且比较贵。 幸亏微软提供了一种免费的方法。 1 sqlite加密demo 这里我做了一个小的demo演示如下&#xff1a; 在界面中拖入数据库名、密码、以及保存的路径 比如我选择保存路径桌面的sqlite目录&#xff0c;数据库名guigutool…...

高压放大器在声波谐振电小天线收发测试系统中的应用

实验名称&#xff1a;高压放大器在声波谐振电小天线收发测试系统中的应用研究方向&#xff1a;信号传输测试目的&#xff1a;声波谐振电小天线颠覆了传统电小天线以电磁波谐振作为理论基础的天线发射和接收模式&#xff0c;它借助声波谐振实现电磁信号的辐射或接收。因为同频的…...

锁相环的组成和原理及应用

一.锁相环的基本组成 许多电子设备要正常工作&#xff0c;通常需要外部的输入信号与内部的振荡信号同步&#xff0c;利用锁相环路就可以实现这个目的。 锁相环路是一种反馈控制电路&#xff0c;简称锁相环(PLL)。锁相环的特点是&#xff1a;利用外部输入的参考信号控制环路内…...

[C++]string类模拟实现

目录 前言&#xff1a; 1. string框架构造 2. 默认函数 2.1 构造函数 2.2 析构函数 2.3 拷贝构造 2.4 赋值重载 3. 迭代器 4. 整体程序 前言&#xff1a; 本篇文章模拟实现了C中string的部分功能&#xff0c;有助于大家了解和熟悉string类&#xff0c;虽然这个类不难实…...

一个更适合Java初学者的轻量级开发工具:BlueJ

Java是世界上最流行的编程语言之一&#xff0c;它被广泛用于从Web开发到移动应用的各种应用程序。大部分Java工程师主要是用IDEA、Eclipse为主&#xff0c;这两个开发工具由于有强大的能力&#xff0c;所以复杂度上就更高一些。如果您刚刚开始使用Java&#xff0c;或者您更适合…...

从程序员到项目组长,要经历六重修炼

最近和粉丝朋友们交流时发现&#xff0c;有很多刚刚开始做项目组长的朋友自我认可度非常低&#xff0c;感觉做组长之后天天打杂&#xff0c;技术也荒废了。领导天天找你要成果&#xff0c;下属天天找你说困难&#xff0c;你在中间受领导和下属的夹板气。时间久了&#xff0c;你…...

我的 System Verilog 学习记录(5)

、 引言 本文简单介绍 System Verilog 语言的 控制流。 前文链接&#xff1a; 我的 System Verilog 学习记录&#xff08;1&#xff09; 我的 System Verilog 学习记录&#xff08;2&#xff09; 我的 System Verilog 学习记录&#xff08;3&#xff09; 我的 System Ver…...

多芯片设计 Designing For Multiple Die

Why a system-level approach is essential, and why its so challenging作者&#xff1a;Ann MutschlerAnn Mutschler is executive editor at Semiconductor Engineering.将多个裸片或芯粒集成到一个封装中&#xff0c;与将它们放在同一硅片上有着很大的区别。在同一硅片上&a…...

2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A(10)

目录 竞赛内容 模块A 基础设施设置与安全加固 一、项目和任务描述&#xff1a; 二、服务器环境说明 三、具体任务&#xff08;每个任务得分以电子答题卡为准&#xff09; A-1任务一 登录安全加固&#xff08;Windows, Linux&#xff09; 1.密码策略&#xff08;Windows, …...

数据结构-简介

目录 1、简介 2、作用 3、分类 4、实现分类 1、简介 数据结构指的是组织和存储数据的方法。它涉及到一系列的算法和原则&#xff0c;用来设计和实现不同种类的数据类型&#xff0c;如数组、链表、树、图等等。数据结构的目的是在计算机程序中有效地管理和操作数据&#xff…...

python装饰器及其用法

python装饰器是什么? Python装饰器是一种语法结构&#xff0c;它可以让开发者在不修改原函数的基础上&#xff0c;在函数的前后运行额外的代码&#xff0c;这些代码可以达到修改函数行为的目的。Python装饰器的实质是一个可调用的对象&#xff0c;它可以接收函数作为参数…...

Appium自动化测试之启动时跳过初始化设置

Appium每次启动时都会检查和安装Appium Settings&#xff0c;这是完全没有必要的&#xff0c;在首次使用Appium连接设备是Appium Settings便已经安装好。怎样跳过安装Appium Settings呢&#xff1f;之前的做法是修改appium中的源文件中的android-helpers.js实现&#xff0c;如M…...

JavaScript DOM【快速掌握知识点】

目录 DOM简介 获取元素 修改元素 添加和移除元素 事件处理 DOM简介 JavaScript DOM 是指 JavaScript 中的文档对象模型&#xff08;Document Object Model&#xff09;&#xff1b;它允许 JavaScript 与 HTML 页面交互&#xff0c;使开发者可以通过编程方式动态地修改网页…...

不需要高深技术,只需要Python:创建一个可定制的HTTP服务器!

目录 1、编写服务端代码,命名为httpserver.py文件。 2、编写网页htmlcss文件&#xff0c;命名为index.html和style.css文件。 3、复制htmlcss到服务端py文件同一文件夹下。 4、运行服务端程序。 5、浏览器中输入localhost:8080显示如下&#xff1a; 要编写一个简单的能发布…...

渗透测试常用浏览器插件汇总

1、shodan这个插件可以自动探测当前网站所属的国家、城市&#xff0c;解析IP地址以及开放的服务和端口&#xff0c;包括但不限于FTP、DNS、SSH或者其他服务等&#xff0c;属被动信息搜集中的一种。2、hackbar&#xff08;收费之后用Max Hackerbar代替&#xff09;这个插件可用于…...

社区1月月报|OceanBase 4.1 即将发版,哪些功能将会更新?

我们每个月都会和大家展开一次社区进展的汇报沟通会&#xff0c;希望通过更多的互动交流让OceanBase 开源社区更加透明&#xff0c;实现信息共享&#xff0c;也希望能营造更加轻松的氛围&#xff0c;为大家答疑解惑&#xff0c;让大家畅所欲言。如果您对我们的社区有任何建议&a…...

Javascript的API基本内容(二)

一、事件监听 结合 DOM 使用事件时&#xff0c;需要为 DOM 对象添加事件监听&#xff0c;等待事件发生&#xff08;触发&#xff09;时&#xff0c;便立即调用一个函数。 addEventListener 是 DOM 对象专门用来添加事件监听的方法&#xff0c;它的两个参数分别为【事件类型】和…...

ChatGPT热度“狂飙”,OceanBase也去找它唠了唠

最近互联网的关键字 非 ChatGPT 莫属 就是这个小东西 集唠嗑、提问、答疑、科普、写作于一体 让我看看哪个孤独的打工人 还没和 ChatGPT 聊上一聊 有人说 ChatGPT 这么智能 或将取代人类的工作 OceanBase 的小编表示不服气 于是&#xff0c;抱着好奇之心试了一试 对 …...

HTTP协议基础知识点扫盲;HTTPS协议及密码学基础

目录 一、Http协议的特性 二、http协议的请求 1.请求行第一行&#xff0c;包含三个信息&#xff1a;请求方式&#xff0c;url&#xff0c;http协议版本 2.请求头浏览器向服务器发送一些状态数据&#xff0c;标识数据等等 3.请求主体请求代理端项服务器端&#xff0c;发送的…...

【golang/go语言】Go语言之反射

本文参考了李文周的博客——Go语言基础之反射。 一、反射初识 1. 什么是反射 在计算机科学中&#xff0c;反射是指计算机程序在运行时&#xff08;run time&#xff09;可以访问、检测和修改它本身状态和行为的一种能力。用比喻来说&#xff0c;反射就是程序在运行的时候能够…...

Java+Swing+Mysql实现超市管理系统

一、系统介绍1.开发环境操作系统&#xff1a;Win10开发工具 &#xff1a;IDEA2018JDK版本&#xff1a;jdk1.8数据库&#xff1a;Mysql8.02.技术选型JavaSwingMysql3.功能模块4.系统功能1.系统登录登出管理员可以登录、退出系统2.商品信息管理管理员可以对商品信息进行查询、添加…...

华为OD机试题,用 Java 解【机器人走迷宫】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...

软件测试基本概念

软件测试基本概念 1. 什么是软件测试 软件测试就是验证软件产品特性(功能, 界面, 兼容性, 性能…)是否符合用户的需求&#xff0c;同时软件测试不仅要测试系统是否做了其应该做的, 还需要测试系统是否未作其不应该做的。 2. 调试与测试 软件测试与调试的区别&#xff1a; …...

数学建模介绍

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏&#xff1a; &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是对我最大的激励…...

wordpress亲子模板下载/免费b站在线观看人数在哪里找到

在c言语中pow()函数是用来求x的y次幂。x、y及函数值都是double型 &#xff0c;其语法为“double pow(double x, double y)”&#xff1b;个中参数“double x”示意底数&#xff1b;参数“double y”示意指数。pow()函数用来求x的y次幂&#xff0c;x、y及函数值都是double型 &am…...

优化企业网站/百度一下打开

w10设置文件服务器 内容精选换一换华为云弹性文件服务(Scalable File Service)为用户的弹性云服务器(ECS)提供一个完全托管的共享文件存储&#xff0c;符合标准文件协议(NFS)来自&#xff1a;产品cd /home/ior-master/src/home/OpenMPI/bin/mpirun --allow-run-as-root -machin…...

使用wordpress的企业/深圳网站设计专家乐云seo

今天一个小伙伴问我&#xff0c;为什么他新装的vscode在使用感叹号!Tab生成html模板的时候不弹出自动生成模板。 然后我上去就是一通操作&#xff0c;英文状态的感叹号不行&#xff0c;就看网上说ctrlshiftp输入change language mode (更改语言模式),选择HTML,再重新输入发现…...

php 网站开发心得/百度搜索优化关键词排名

相同点: 都可以动态的申请并释放内存 不同点: 1. 用法不同 <1> malloc 函数为 void* malloc(size_t size), 用于申请一块长度为 size 字节的内存空间. 假如我们希望申请一个长度为 100 的 int 型数组所需的内存空间的话, 我们需要写成这样, malloc(100*sizeof(int)). 同时…...

做不了飞机要看什么网站/b站推广网站2024下载

概念介绍&#xff1a; 1、px (pixel&#xff0c;像素)&#xff1a; 是一个虚拟长度单位&#xff0c;是计算机系统的数字化图像长度单位&#xff0c;如果px要换算成物理长度&#xff0c;需要指定精度DPI(Dots Per Inch&#xff0c;每英寸像素数)&#xff0c;在扫描打印时一般都有…...

设计素材网站免费大全最新/软文推广系统

是时候给个例子了. scullc 是一个简化的 scull 模块的版本, 它只实现空设备 -- 永久 的内存区. 不象 scull, 它使用 kmalloc, scullc 使用内存缓存. 量子的大小可在编译 时和加载时修改, 但是不是在运行时 -- 这可能需要创建一个新内存区, 并且我们不想处 理这些不必要的细节. …...