SQL学习笔记

DDL语句--操作数据表

/*
    快捷键:
        insert键              在插入 和 替换模式之间切换
        ctrl + 字母z          撤销上一步操作
        tab                  往后缩进(默认4个空格)
        shift + tab          往前缩进(默认4个空格)
        ctrl + alt + 字母L    格式化(对其)代码
*/
# 场景3: DDL操作 数据表
# 1. 创建day02数据库
create database day02;
# 2. 切换到day02数据库.
use day02;
# 3. 查询指定数据库下, 所有的数据表.
show tables;

# 扩展:
#   计算机存储数据(编码): '中' => 十进制的整数, 例如: 55653 => 转成二进制, 例如: 0b00110110 => 存储到计算机中.
#   计算机读取数据(解码): 读取二进制 => 转成十进制 => 找到对应的字符 => 显示
#   问题: '中' 这个字符 应该对应哪个数字呢? 码表说了算, 即: 码表就是维护 字符 和 数字之间的关系的.
#   结论: GBK主要针对于国内, UTF-8是国际通用码表, 也叫万国码.

# 4. 查看指定表的信息.
# 4.1 查看数据表的码表等信息(没什么用, 了解)
show create table student;

# 4.2 查看具体表的信息.
desc student;       -- 查看表结构信息.

# 5. 创建数据表.
/*
    格式:
        create table 表名 (
            字段名1 数据类型 [约束],
            字段名2 数据类型 [约束],
            字段名3 数据类型 [约束]
        );
    格式解释:
        字段名:  方便我们快速查找某列数据的, 一般要做到: 见名知意.
        数据类型: 标记着这一列能放什么形式的数据, 例如: 整数, 小数, 时间格式, 字符串等等...
            常用的数据类型(目前先了解, 稍后解释):
                整数: int,
                字符串: varchar(长度), 长度的意思是, 这里可以存多少个字符.      '张', '三', '0'等都是1个字符,  '张三' 就是字符串.
        约束:    这里的[]表示可选项, 它(约束)是基于数据类型之外, 加强的规范和规则.
*/
# 需求: 创建学生表, 字段有: 学生编号, 姓名, 性别, 详细信息(describe)
create table if not exists student
(
    id     int not null, # 字段名:id, 整数类型, 约束: 非空约束
    name   varchar(20),  # 字段名: name, 字符串类型, 无约束.
    gender varchar(10),   # 字段名: gender, 字符串类型, 无约束
    `desc` varchar(20)      # 细节: 如果非得要用关键字做字段名, 记得用``包裹该词, 这样它就是1个普通的字符串了.
);

# 6. 修改数据表,  即: 修改表名, 格式为: rename table 旧表名 to 新表名;
rename table student to stu;

# 7. 删除数据表. 格式: drop table 数据表名;
drop table stu;

数据类型和约束介绍

  • 数据类型

    用来限定该列值的类型的, 即: 能存什么样的数据, 不能存什么样的数据.

    常用的数据类型有:

    • 整数: int

    • 字符串: varchar(长度)

    • 日期: datetime

    • 枚举: enum

  • 约束

    就是在数据类型的基础上, 额外增加的规则.

    常用的约束:

    • 单表约束

      • 主键约束: primary key, 默认: 非空, 唯一. 一般要结合自增(auto_increment)一起使用.

      • 非空约束: not null

      • 唯一约束: unique

      • 默认约束: default

    • 多表约束

      • 外键约束

        • foreign key, 有外键列的表叫: 外表, 有主键列的表叫主表.

        • 特点: 外表的外键列不能出现主表的主键列没有的数据.

  • 结论

    数据类型和约束保证了表中数据的准确性和完整性.

DDL语句--操作字段

# ------------------------------------------- 以下内容是DDL操作 字段 -------------------------------------------
# 场景3: DDL操作 字段
# 1. 查看(某表的)所有的字段信息.
desc student;

# 2. 添加列. 添加地址列, address varchar(30) 非空约束
# 格式: alter table 表名 add 字段名 数据类型 [约束];
alter table student add address varchar(30) not null;

# 3. 修改列.
# 3.1 修改address列的 数据类型为 int
# 格式: alter table 表名 modify 字段名 数据类型 [约束];
alter table student modify address int;     -- 细节: 因为没写非空约束, 所以约束没了.

# 3.2 修改address列的名字为 addr, 类型为 date, 非空约束.
# 格式: alter table 表名 change 旧字段名 新的字段名 数据类型 [约束];
alter table student change address addr date not null;

# 4. 删除列.
# 格式: alter table 表名 drop 字段名;
alter table student drop addr;      -- 删除addr列
alter table student drop `desc`;      -- 删除desc列

# 简化记忆格式:
# alter table 表名 add/modify/change/drop 字段名 [新的字段名] 数据类型 约束;

DML--操作表数据

# DML语句, 主要是对表数据进行更新操作的, 更新操作 = 增, 删, 改.
# 快捷键: alt + shift + ↑/↓    代码的上下移动
# 快捷键: shift + 回车          快速向下插入一行
# ----------------------------------以下是DML语句之 添加表数据 ----------------------------------
# 1. 切库.
use day02;
# 2. 查看数据表.
show tables;
# 3. 查询表数据, 这个先了解, 稍后详解.
# 格式: select * from 表名;
select * from student;      # 查询表中所有的数据.

# 查看学生表的字段信息.
desc student;

# 4. 添加表数据, 方式1: 不指定字段, 添加一条.
# 格式: insert into 表名 value(值1, 值2, 值3...);      要求: 因为没有指定字段, 默认是全列名, 所以必须给每一列值赋值.
# 细节1: 值的个数 和 类型, 必须和 列的 个数和类型保持一致.
# 细节2: 数字可以直接写, 其它类型用引号包裹, 单双引号均可, 建议: 单引号.
insert into student value(1, '乔峰', '男');

# 5. 添加表数据, 方式2: 指定字段, 添加一条.
# 格式: insert into 表名(列名1, 列名2...) value(值1, 值2...);
insert into student(id, gender) value(2, '女');

-- 报错, 因为id列我们设置了非空约束, 因为只写了gender列, 所以只会给该列添加值, 其它的列会默认用null填充.
insert into student(id, gender) value(null, '女');     # 报错.

# 6. 添加表数据, 方式3: 不指定字段, 添加多条.
# 格式: insert into 表名 value(值1, 值2, 值3...), (值1, 值2, 值3...), (值1, 值2, 值3...);
insert into student value(1, '虚竹', '男'), (3, '段誉', '男');

# 7. 添加表数据, 方式4: 指定字段, 添加多条.
# 格式: insert into 表名(列名1, 列名2...) value(值1, 值2...), (值1, 值2...), (值1, 值2...);
insert into student(id, gender) values(4, '保密'), (5, '萨瓦迪卡');

总结(细节)

  1. 如果不指定字段, 则默认是全列名.

  2. 无论是否指定字段, value后边写的值的个数和类型, 必须和字段的个数和类型保持一致

一定一定要写where条件, 否则是修改所有.

# ---------------------以下是DML语句之 修改表数据 ----------------------
# 非常非常非常重要的内容, 一个老屌丝的含泪忠告, 当你在进行删除或者修改操作的时候, 一定一定一定要加where条件.
# 格式: update 表名 set 列名1=值1, 列名2=值2 where 条件;
# 需求: 修改id为2的数据, 姓名为: 许文杰, 男
update student set name='许文杰', gender='男' where id=2;

# 这个动作看看就行了, 很危险, 别碰.   因为没有写where, 会一次性修改表中所有的数据.
update student set name='许文杰', gender='男';

select * from student;

一定一定要写where条件, 否则是删除所有.

# ---------------------以下是DML语句之 删除表数据 ------------------------------
# 格式: delete from 表名 where 条件;
# 细节: 不能值删除某个字段的值, 是以 行为单位进行删除的.
delete from student where id=1;     # 删除id=1的数据.
delete from student where id>=3;     # 删除id 大于3的数据.

# 这个动作看看就行了, 很危险, 别碰.   因为没有写where, 会一次性修改表中所有的数据.
delete from student;

SQL约束--增强

主键约束

/*
    约束:
        概述/作用:
            是基于数据类型之上, 对某列的数据做要求的, 保证数据的完整性和安全性.
        分类:
            单表约束:
                主键约束    primary key
                    特点:
                        非空, 唯一, 一张表中, 主键列最多只能有1列.
                        一般要结合 自增(自动增长, auto_increment)一起使用.
                非空约束
                    not null
                唯一约束
                    unique
                默认约束
                    default
            多表约束:
                主外键约束,  foreign key
*/
# 1. 创建员工表 employee, 字段: 员工id(主键), 姓名, 性别, 工资, 部门
# 为了防止建表的时候, 建错库, 要么记得use 切库, 要么写: 数据库名.数据表名
create table if not exists day02.employee(
    id int primary key ,        # 员工id(主键)
    name varchar(20),           # 姓名
    gender varchar(10),         # 性别
    salary decimal(5, 3),       # 工资
    dept varchar(10)            # 部门
);

# 2. 设置id列为主键列.
# 2.1 方式1: 创建表的时候, 直接设置主键.
# 参考上述代码.

# 2.2 方式2: 创建表之后, 设置主键.
# 格式: alter table 表名 add primary key(主键列);
alter table day02.employee add primary key(id);
alter table day02.employee add primary key(name);       # 报错, 一张表主键只能有1个.

# 3. 往员工表中添加表数据.
insert into employee value(1, '乔峰', '男', 66.123, '丐帮');
# insert into employee value(1, '洪七公', '男', 33.33, '丐帮');     # 报错, 主键必须唯一.
# insert into employee value(null, '洪七公', '男', 33.33, '丐帮');    # 报错, 主键不能为空.
insert into employee value(2, '洪七公', '男', 33.33, '丐帮');
insert into employee value(4, '黄蓉', '女', 55.33, '丐帮');

# 4. 查询结果.
select * from day02.employee;

# 5. 查看表结构.
desc day02.employee;

-- 6. 删除主键.
alter table day02.employee drop primary key ;
alter table day02.employee modify id int;

-- 7. 实际开发中, 主键约束一般要结合自动增长(auto_increment)一起使用, 因为主键仅仅是1个标记, 标记着这条数据的唯一性, 不参与业务.
drop table day02.employee;

create table if not exists day02.employee(
    id int primary key auto_increment,        # 员工id(主键)
    name varchar(20),           # 姓名
    gender varchar(10),         # 性别
    salary decimal(5, 3),       # 工资
    dept varchar(10)            # 部门
);

# 查询表数据
select * from day02.employee;

# 有了自增后, 主键添加数据的方式如下, 只要传入null即可, 至于具体的数字是谁, 程序(计算机)会自动生成.
insert into employee value(1, '乔峰', '男', 66.123, '丐帮');
insert into employee value(null, '洪七公', '男', 33.33, '丐帮');    # 不报错, 有自增, 主键会自动生成.

insert into employee value(1, '洪七公', '男', 33.33, '丐帮');     # 报错, 主键必须唯一.

# 细节: 此时删除了id 为 5的数据, 之后再填加数据, 主键从几开始.
delete from day02.employee where id = 5;

# 扩展: delete from 和 truncate table 之间的区别是什么?
# delete from 会清除表数据, 不会重置主键id. 属于DML语句, 一般可以结合事务一起使用.
delete from day02.employee;

# truncate table 会清除表数据, 会重置主键id, 相当于把表摧毁了, 然后创建一张和该表一模一样的表. 属于DDL语句.
truncate table day02.employee;      -- 这个table可以省略.

约束总结

/*
    约束:
        概述/作用:
            是基于数据类型之上, 对某列的数据做要求的, 保证数据的完整性和安全性.
        分类:
            单表约束:
                主键约束    primary key
                    特点:
                        非空, 唯一, 一张表中, 主键列最多只能有1列.
                        一般要结合 自增(自动增长, auto_increment)一起使用.
                非空约束
                    not null
                唯一约束
                    unique
                默认约束
                    default
            多表约束:
                主外键约束,  foreign key
*/
# 1. 创建员工表 employee, 字段: 员工id(主键), 姓名, 性别, 工资, 部门
# 为了防止建表的时候, 建错库, 要么记得use 切库, 要么写: 数据库名.数据表名
create table if not exists day02.employee(
    id int primary key ,        # 员工id(主键)
    name varchar(20),           # 姓名
    gender varchar(10),         # 性别
    salary decimal(5, 3),       # 工资
    dept varchar(10)            # 部门
);

# 2. 设置id列为主键列.
# 2.1 方式1: 创建表的时候, 直接设置主键.
# 参考上述代码.

# 2.2 方式2: 创建表之后, 设置主键.
# 格式: alter table 表名 add primary key(主键列);
alter table day02.employee add primary key(id);
alter table day02.employee add primary key(name);       # 报错, 一张表主键只能有1个.

# 3. 往员工表中添加表数据.
insert into employee value(1, '乔峰', '男', 66.123, '丐帮');
# insert into employee value(1, '洪七公', '男', 33.33, '丐帮');     # 报错, 主键必须唯一.
# insert into employee value(null, '洪七公', '男', 33.33, '丐帮');    # 报错, 主键不能为空.
insert into employee value(2, '洪七公', '男', 33.33, '丐帮');
insert into employee value(4, '黄蓉', '女', 55.33, '丐帮');

# 4. 查询结果.
select * from day02.employee;

# 5. 查看表结构.
desc day02.employee;

-- 6. 删除主键.
alter table day02.employee drop primary key ;
alter table day02.employee modify id int;

-- 7. 实际开发中, 主键约束一般要结合自动增长(auto_increment)一起使用, 因为主键仅仅是1个标记, 标记着这条数据的唯一性, 不参与业务.
drop table day02.employee;

create table if not exists day02.employee(
    id int primary key auto_increment,        # 员工id(主键)
    name varchar(20),           # 姓名
    gender varchar(10),         # 性别
    salary decimal(5, 3),       # 工资
    dept varchar(10)            # 部门
);

# 查询表数据
select * from day02.employee;

# 有了自增后, 主键添加数据的方式如下, 只要传入null即可, 至于具体的数字是谁, 程序(计算机)会自动生成.
insert into employee value(1, '乔峰', '男', 66.123, '丐帮');
insert into employee value(null, '洪七公', '男', 33.33, '丐帮');    # 不报错, 有自增, 主键会自动生成.

insert into employee value(1, '洪七公', '男', 33.33, '丐帮');     # 报错, 主键必须唯一.

# 细节: 此时删除了id 为 5的数据, 之后再填加数据, 主键从几开始.
delete from day02.employee where id = 5;

# 扩展: delete from 和 truncate table 之间的区别是什么?
# delete from 会清除表数据, 不会重置主键id. 属于DML语句, 一般可以结合事务一起使用.
delete from day02.employee;

# truncate table 会清除表数据, 会重置主键id, 相当于把表摧毁了, 然后创建一张和该表一模一样的表. 属于DDL语句.
truncate table day02.employee;      -- 这个table可以省略.

# ----------------------------------------- 单表约束总结 -----------------------------------------
# 创建英雄表hero, 字段: id, 姓名, 技能, hp血量, mp蓝量
create table hero(
    id int primary key auto_increment,      # 主键, 自增
    name varchar(20) unique ,               # 姓名, 唯一约束
    skill varchar(20) not null unique,      # 技能, 伪主键(即: 非空 + 唯一)
    hp int default 100,                     # 血量, 默认是100
    mp int default 10                       # 蓝量, 默认是10
);

# 添加数据.
insert into hero(id, name, skill) value(null, '典韦', '疯魔');      # 测试 默认约束.
insert into hero value(null, '典韦', '吸血', 6666, 20);             # 报错, 姓名要求唯一.
insert into hero value(null, '典韦2', '疯魔', 6666, 20);            # 报错, 技能要求唯一.
insert into hero value(null, '典韦2', null, 6666, 20);             # 报错, 技能要求不能为空.

insert into hero value(null, '吕布', '天魔乱舞', 10000, 0);

# 查询表数据.
select * from hero;

DQL语句

简单查询

# DQL语句主要是针对于 表数据 进行查询操作的.
# 0. 准备数据, 即, 直接执行如下的内容即可, 这样就有表以及数据了.
use day02;
# 创建表
CREATE TABLE product        # 商品表
(
    pid         INT PRIMARY KEY,        # 商品id, 主键.
    pname       VARCHAR(20),            # 商品名
    price       DOUBLE,                 # 价格, 小数
    category_id VARCHAR(32)             # 商品所属的类别id
);
# 插入记录
INSERT INTO product(pid,pname,price,category_id) VALUES(1,'联想',5000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(2,'海尔',3000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(3,'雷神',5000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(4,'杰克琼斯',800,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(5,'真维斯',200,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(6,'花花公子',440,null);
INSERT INTO product(pid,pname,price,category_id) VALUES(7,'劲霸',2000,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(8,'香奈儿',800,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(9,'相宜本草',200,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(10,'面霸',5,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(11,'好想你枣',56,'c004');
INSERT INTO product(pid,pname,price,category_id) VALUES(12,'香飘飘奶茶',1,'c005');
INSERT INTO product(pid,pname,price,category_id) VALUES(13,'海澜之家',1,'c002');
# ---------------------------------------- 以下是具体的查询动作 简单查询 ----------------------------------------
# 1. 查询数据表中所有的数据, 格式: select * from 表名;
select pid, pname, price, category_id from product;     # 查询所有的列
select * from product;      # 如果查询的是所有的列, 则: 可以用*替代所有的列名.
# 2. 获取所有商品的名称和价格
select pname,price from product;
# 3. 获取所有商品的名称和电商价(电商价 = 价格 + 10), 数值列可以直接运算.
select pname,price + 10 from product;
# 4. 给列起别名, 注意: 别名只是为了查询方便做的, 表中真实的列名并没有被修改.
# 格式: as 别名,  且 as 可以省略不写.
select pname as '商品名称',price + 10 as '我是修改后的价格' from product;
select pname '商品名称',price + 10  '我是修改后的价格' from product;        --  as 可以省略不写

条件查询

# ---------------------------------------- 以下是具体的查询动作 条件查询 ----------------------------------------
/*
    DQL中的条件查询指的是 where条件, 即: 写了where之后, 只会筛选出我们要的数据.

格式:
        select * from 表名 where 条件;

where后边可以写:
        1. 比较运算符
        2. 逻辑运算符
        3. 模糊查询
        4. 范围查询
        5. 空判断
 */
# 需求0: 查询所有.
select * from product;

# 需求1. 比较运算符, 查询id是偶数的数据.
# 比较运算符: >, >=, <, <=, =, !=
select * from product where pid % 2 = 0;

# 查询id不为3的数据.
select * from product where pid != 3;

# 需求2. 逻辑运算符
# and(逻辑与, 并且的意思, 要求条件都要满足), or(逻辑或, 或者的意思, 只要满足任意1个条件即可), not(取反的意思),  这三个运算符都要和 真(true), 假(false) 一起使用.
# 查询售价在 1000以上 且 分配id是c001的商品.
select * from product where price > 1000 and category_id = 'c001';

# 查询分类id是c001 或者 c003的商品信息.
select * from product where category_id = 'c001' or category_id = 'c003';

# 需求3. 模糊查询, 格式: like '内容',  _ 表示1个占位符,  %表示多个占位符
# 查找以 香开头的商品名.
select * from product where pname like '香_';    # _表示1个占位符, 所以这里只能匹配 香后边跟1个字的.
select * from product where pname like '香%';    # %表示多个占位符, 所以这里是 以香开头, 后边是啥无所谓.
select * from product where pname like '%香%';   # 只要包含香字即可.
select * from product where pname like '%霸';   # 以 霸 结尾的.

# 需求4. 范围查询, between ... and ...
# 固定区间: 查找价格区间在 200 ~ 5000之间的商品信息.
select * from product where price >= 200 and price <= 5000;     # 比较运算符.
select * from product where price between 200 and 5000;         # 范围查询, 包左也包右.

# 不固定区间, 查找pid为3, 5, 6的数据.
select * from product where pid = 3 or pid = 5 or pid = 6;      # 比较运算符.
select * from product where pid in (3, 5, 6);                   # 范围查询.
select * from product where pid not in (3, 5, 6);               # 范围查询.

# 需求5. 空判断, is null,  is not null
# 查找 分类id 为null的数据.
select * from product where category_id is null;

# 查找 分类id 不为null的数据.
select * from product where category_id is not null;

SQL-DDL语句DQL语句相关推荐

  1. SQL语言之DQL语句

    数据库版本:MySQL8 文章目录 一.DQL语句简介 二.DQL语句 1.简单查询 2.条件查询 3.模糊查询 4.字段控制查询 5.结果集排序 7.聚合函数 7.分组查询 8.LIMIT结果显示 ...

  2. mysql基础之DML、DQL语句

    课程笔记Day25 DDL语句 DML语句 DQL语句 第一章 DDL语句 第01节 操作数据库 1.创建数据库 简单的创建语法 -- 语法格式: CREATE DATABASE 数据库的名称;-- ...

  3. MySQL学习记录 (二) ----- SQL数据查询语句(DQL)

    相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...

  4. 关于SQL语句的分类及DQL语句执行顺序

    关于SQL语句的分类及DQL语句执行顺序 SQL语句的分类 DQL语句 数据查询语言 select DML语句 数据操作语言 insert delete update DDL语句 数据定义语言 cre ...

  5. 【JavaWeb之旅二】MySQL数据库之SQL语句中的DML语句与DQL语句

    SQL语句中的DML语句与DQL语句 文章目录 SQL语句中的DML语句与DQL语句 1.SQL语句之DML 1.1DML常见的语法 1.添加数据常见语句 2.修改.删除数据常用语法 2.SQL语句之 ...

  6. Mysql单表、多表、SQL语句(DQL)

    第1章    SQL语句(DQL) 1.1     DQL准备工作和语法 1.1.1     准备工作 #创建商品表: create table product( pid int primary ke ...

  7. 在mysql数据库中DDL_Mysql 数据库操作之DDL、DML、DQL语句操作

    Mysql 数据库操作之DDL.DML.DQL语句操作 设置数据库用户名密码 l  Show databases 查看数据库列表信息 l  查看数据库中的数据表信息 ,格式: use 数据库名: sh ...

  8. sql之dql语句,语法和思路

    这些都是我自学时手打到文本文档,在复制粘贴到博客的,有一些命令格式不对,但全部百分百原创,如果有疑问或者不对的地方,欢迎评论区指正,也可以加q群592383030来探讨(我就是自学的普通人,不卖课,不 ...

  9. mysql属于dql语句的是_4.MySql中的SQL语句(三):DQL

    DQL数据查询语言 数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端. 查询返回的结果集是一张虚拟表. 查询关键字:SELECT 语法:SELECT列名FROM表名 [WHERE ...

最新文章

  1. php字符串类型讲解
  2. 清空python的变量
  3. android 半浮层框架,GitHub - Jodragon/AnyLayer: Android稳定高效的浮层创建管理框架
  4. 游戏迷英雄联盟游戏高清壁纸!扮演你的英雄
  5. 两个“敢”,是销售员必须懂的心法
  6. Python 处理分析 128 张 Excel 表格竟不到3秒?| 附数据集
  7. 问答| 为什么汽车会采用前轮转向,后轮驱动的方式?为什么反过来的搭配方式很少见?
  8. STM32/TMS320F2812+W5500硬软件调试总结
  9. 【Unity3D日常BUG】Unity3D中使用高亮插件Highlighting出现的错误:Parameter name:shader
  10. 线性回归之最小二乘法公式推导和原理介绍
  11. 【IDE-Visual Studio】无法启动程序“xxx.exe”。由于应用程序配置不正确,未能启动此应用程序。
  12. docker拉取镜像报错unexpected EOF的解决方法
  13. 《新修本草》是世界上由政府颁布的最早药典
  14. 台式计算机全网页截图,电脑如何截图整个网页并保存?实现整个网页截图的最简单办法...
  15. 连玉君链接-Stata连享会
  16. Docker|Maven编译推送Docker服务器生成镜像
  17. 词袋 图像检索 matlab,词袋模型BoW图像检索Python实战
  18. 【第三章:标准单元库 下】静态时序分析圣经翻译计划
  19. 【已解决】Discuz论坛头像无法上传,出现access……
  20. [句子互动] 全栈、后端开发 [ Github 10000+star 开源项目]

热门文章

  1. 内网横向移动常用方法总结
  2. android 仿qq修改头像,Qt:小项目仿QQ修改头像界面,技术点记录
  3. 使用max31865读取PT100温度
  4. 深度优先搜索算法及其MATLAB实现
  5. 科比晒合影谢成龙款待 网友调侃:黑曼巴心机BOY
  6. Javascript中的url编码与解码(详解)
  7. Yahoo.com.cn邮箱的OutLook设置
  8. python底层与机器底层关系_起底 Python 的底层逻辑
  9. Qcom-高通OTP完全调试指南
  10. mysql alter user 修改密码