计算机基础知识38

创建表的完整语法

create table t1(id int,name varchar(43),age int);

create table 库名.表名(
               字段名1 数据类型 约束条件 约束条件 约束条件 约束条件,
               字段名2 数据类型 约束条件 约束条件 约束条件 约束条件...);

1. 字段名和数据类型必须写的,不能省略
2. 约束条件是可选的,可有可无,而且可有有多个
3. 表结构中最后一个字段不能有逗号

insert into 库名.t1 values('1', 2, 3, 4, 5, 6);

约束条件

约束条件其实就是在数据类型的基础之上在做约束

1. unsigned   # 无符号     id int unsigned

2. zerofill     # 0填充

3. default    # 默认值

create table t4 (id int, name varchar(32) default 'kevin');
insert into t4 values(1, 'jerry');   # 不传便是默认值
insert into t4(id) values(1);  

4. not null   # 非空

create table t5 (id int, name varchar(32) not null);
insert into t5(id) values(1);   # name不能为空

5. unique  # 唯一

      单列唯一: create table t6 (id int, name varchar(32) unique);   # 手机号

      多列唯一:create table t7 (id int, ip varchar(32), port varchar(32),unique(ip, port));

                             # ip 和端口不能同时重复,单独一个可以重复

6. primary key  主键
   # 主键单纯从约束上来看,它相当于是非空且唯一 unique not null,本质是索引

create table t8 (id int primary key);
create table t8 (id int unique not null);

# InnoDB存储引擎规定每一张表都要有一个主键

        之前创建的表都没有指定主键也创建成功,InnoDB存储引擎内部有一个隐藏的主键,

        这个主键我们看不到,它也不能够加快查询速度,仅仅是为了帮助我们把表创建成功.

 以后创建表时主动创建一个主键,我们自己创建的主键能够加快查询速度,因为是一个索引.
# 主键应大多都给id字段加了,每张表都要有一个id字段,

# 表中不只有一个主键,可以有多个主键,大多一个
       # 主键一般都给 id aid sid uid pid ...
create table t( id int primary key, name varchar(32));
# 我们可以通过主键确定一张表中得唯一一条记录!!!

7. auto_incrment  自增
    # 自增:每一次主动比上一次加1,一般配合主键使用

 create table t9 (id int primary key auto_increment,name varchar(32));

整型中括号中得数字的作用

id int(10)       # 数字不代表的是范围
name varchar(32) # 数字代表的就是存储的范围

清空表的两种方式

1. delete from t; # 不会重置id值
2. truncate t9;   # 清空表、重置id值

# truncate:建议使用truncate,使用这个,万一你清空错了,还有机会恢复

   mysql它有很多个日志文件,binlog日志-----》可以恢复数据,记录了你所有的SQL语句

补充一些其他的SQL语句

1. 修改表名 : alter table t9  rename t9 ;
2. 增加字段
      alter table t8  add name varchar(32);

      alter table t8  add name varchar(32) after name ;

      alter table t8  add name varchar(32) first name ;              
3. 删除字段:  alter table t8 drop age ;
4. 修改字段    # modify只能改字段数据类型完整约束,不能改字段名,但是change可以!
        alter table t8 modify gender int ;  # 报错,有值了就不能改数据类型
        alter table t8 modify gender varchar(64);      # 该范围是可以的
        alter table t8  change gender gender1;

查询关键字之where

# 数据准备
create table emp(id int primary key auto_increment,name varchar(20) not null,sex enum('male','female') not null default 'male', #大部分是男的age smallint(3) unsigned not null default 28,hire_date date not null,post varchar(50),post_comment varchar(100),salary double(15,2),office int, #一个部门一个屋子depart_id int
);insert into emp(name,sex,age,hire_date,post,salary,office,depart_id) values
('tom','male',78,'20150302','teacher',1000000.31,401,1),#以下是教学部
('kevin','male',81,'20130305','teacher',8300,401,1),
('tony','male',73,'20140701','teacher',3500,401,1),
('owen','male',28,'20121101','teacher',2100,401,1),
('jack','female',18,'20110211','teacher',9000,401,1),
('jenny','male',18,'19000301','teacher',30000,401,1),
('sank','male',48,'20101111','teacher',10000,401,1),
('哈哈','female',48,'20150311','sale',3000.13,402,2),#以下是销售部门
('呵呵','female',38,'20101101','sale',2000.35,402,2),
('西西','female',18,'20110312','sale',1000.37,402,2),
('乐乐','female',18,'20160513','sale',3000.29,402,2),
('拉拉','female',28,'20170127','sale',4000.33,402,2),
('僧龙','male',28,'20160311','operation',10000.13,403,3), #以下是运营部门
('程咬金','male',18,'19970312','operation',20000,403,3),
('程咬银','female',18,'20130311','operation',19000,403,3),
('程咬铜','male',18,'20150411','operation',18000,403,3),
('程咬铁','female',18,'20140512','operation',17000,403,3);

# 1、查询id大于等于3小于等于6的数据

select id,name from emp where id >= 3 and id <= 6;
select *  from emp where id between 3 and 6;  

# 2.查询薪资是20000或者18000或者17000的数据

select * from emp where salary = 20000 or salary = 18000 or salary = 17000;
select * from emp where salary in (20000,18000,17000);  # 简写

# 3.查询员工姓名中包含o字母的员工姓名和薪资

select name,salary from emp where name like '%o%';
"""模糊查询:没有明确的筛选条件:show variables like '%mode%se';""

# 4.查询员工姓名是由四个字符组成的员工姓名与其薪资

select name,salary from emp where name like '____';
select name,salary from emp where char_length(name) = 4;

# 5.查询id小于3或者大于6的数据

select *  from emp where id not between 3 and 6;

# 6.查询薪资不在20000,18000,17000范围的数据

select * from emp where salary not in (20000,18000,17000);

# 7.查询岗位描述为空的员工名与岗位名  # 针对null不能用等号,只能用is

select name,post from emp where post_comment is NULL;   # 查询为空!
select name,post from emp where post_comment is not NULL;

查询关键字之group by分组

分组: 按照某个指定的条件将单个单个的个体分成一个个整体,应用场景:每个

分组一般配合聚合函数使用: sum max min avg count 
                      分组的关键字:group by

# 按部门分组: select * from emp group by post;    

            1. 分组之后默认可以获取所有的字段信息
            2. 分组之后,展示的数据都是每个组的第一条数据

# 不开严格模式会显示所有,开了只显示这个字段信息

   严格模式,退出重新登录:   set global sql_mode = 'only_full_group_by,STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH';

# 获取每个部门的最高工资  
      select post,max(salary) from emp group by post;
补充:在显示的时候还可以给字段取别名,as也可以省略 但是不推荐省 因为寓意不明确
      select post as '部门',max(salary) as '最高工资' from emp group by post;     

"""# 每个部门的最低工资\平均工资\工资总和\人数  """
select post,min(salary) from emp group by post;
select post,avg(salary) from emp group by post;
select post,sum(salary) from emp group by post;
select post,count(id) from emp group by post;

分组补充函数

# group_concat  分组之后使用

         select post,group_concat(name,'|',sex, '|', gender) from emp group by post ;

# concat  不分组使用
         select concat(name,'|',sex) from emp;

# concat_ws()
         select post,concat_ws('|', name, age, gender) from emp;

关键字之having过滤

#   where在分组之前对数据进行筛选
     having在分组之后对数据进行筛选

# 统计各部门年龄在30岁以上的员工平均薪资,并且保留平均薪资大于10000的部门.
select * from emp where age > 30;       # 先筛选出年龄在30岁以上的
select avg(salary) as avg_salary from emp where age > 30 group by post;    # 在进行分组
select avg(salary) as avg_salary from emp where age > 30 group by post having avg(salary) > 10000;            # 保留平均薪资大于10000的部门

关键字之distinct去重

distinct:去重:带主键的数据去重有没有意义

select distinct id,age from emp;

关键字之order by排序

select * from emp order by salary;   #默认升序排
select * from emp order by salary desc;   #降序排

#先按照age降序排,在年轻相同的情况下再按照薪资升序排
        select * from emp order by age desc,salary;

# 统计各部门年龄在20岁以上的员工平均工资,并且保留平均工资大于1000的部门,然后对平均工资进行排序
select * from emp where age > 20;       #  20岁以上的员工
# 各部门的平均薪资
select avg(salary) from emp where age > 20 group by post having avg(salary) > 1000;
select avg(salary) from emp where age > 20 group by post having avg(salary) > 1000 order by avg(salary) desc;

关键字之limit分页

# 限制展示条数
select * from emp limit 3;
# 查询工资最高的人的详细信息
select * from emp order by salary desc limit 1;

# 分页显示
select * from emp limit 5,5;          # 从5行开始,限制显示5行

 # 第一个参数表示起始位置,第二个参数表示的是条数,不是索引位置

关键字之regexp正则

select * from emp where name regexp '^j.*(n|y)$';     # 了解就行,一般不会用

今日思维导图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/170671.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++类和对象(1)

目录 目录&#xff1a; 1.类的定义 1.1:类的语法及相关概念 1.2:类的两种定义方式 1.3:类的成员变量名命名规范 2.类的访问限定符 2.1:三种访问限定符关键字引入 2.2:访问限定符的语法说明 2.3:c中struct与class的区别(面试常考) 3.类的作用域 4.类的实例化 5.类对象 5.1:类对…

adb: error: 46-byte write failed: Invalid argument

使用adb pull可以&#xff0c;但是adb push fail。 貌似是adb的问题&#xff0c;将adb.exe 重命名为pdb&#xff0c;使用pdb push就行了。

二、【常用的几种抠图方式一】

文章目录 选框抠图快速选择工具抠图魔棒工具抠图对象选择工具抠图套索工具抠图多边形套索工具抠图磁性套索工具抠图 选框抠图 选框工具抠图适合规则的图形&#xff0c;如下图先使用选框工具框出对象的图轮廓&#xff0c;然后再选择并遮住在里边擦出图形的边缘&#xff0c;根据…

软考高级系统架构 上午真题错题总结

目录 前言一、2022年真题&#xff08;√&#xff09;二、2021年真题&#xff08;√&#xff09;三、2020年真题&#xff08;√&#xff09;四、2019年真题&#xff08;√&#xff09;五、2018年真题&#xff08;√&#xff09;六、2017年真题&#xff08;√&#xff09;七、201…

百度Comate SaaS版本正式发布,助力开发者加速研发过程

百度Comate是基于文心大模型的智能代码助手&#xff0c;让开发者的编码更快、更好、更简单&#xff0c;为开发者自动生成完整的、且更符合实际研发场景的代码行或整个代码块&#xff0c;帮助每一位开发者轻松完成研发任务。10月17日召开的百度世界大会上&#xff0c;百度CTO王海…

酷开科技依托酷开系统推动家庭智能化加速发展

为什么越来越多的人会选择智能家居&#xff1f;因为智能家居的出现&#xff0c;大大方便了我们的生活&#xff0c;为生活提供便利舒适的体验&#xff1b;就如同洗衣机与洗碗机解放了我们的双手是一样的道理&#xff0c;智能家居是在生活的方方面面为我们提供更加便利化的可能性…

p5.js 状态管理

本文简介 带尬猴&#xff0c;我是德育处主任 原生 canvas 提供了 save() 和 restore() 两个方法去管理画布状态。p5.js 作为一个 canvas 库&#xff0c;也理所当然的提供了状态管理的方法。在 p5.js 里这两个方法叫 push() 和 pop()。 本文主要讲解 p5.js 的 push() 和 pop()…

基于java的ssm框架农夫果园管理系统设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

python爬虫入门(四)爬取猫眼电影排行(使用requests库和正则表达式)

本例中&#xff0c;利用 requests 库和正则表达式来抓取猫眼电影 TOP100 的相关内容。 1.目标 提取出猫眼电影 TOP100 的电影名称、时间、评分、图片等信息&#xff0c;提取的站点 URL 为 http://maoyan.com/board/4&#xff0c;提取的结果会以文件形式保存下来。 2.抓取分析…

vscode推送gitee方法

有一套uni-app代码需要修改&#xff0c;版本控制使用vscode的git功能&#xff0c;远程库在gitee上。 1、设置vscode中git.exe路径 由于git使用了绿色便携版&#xff08;PortableGit-2.42.0.2-64-bit.7z.exe&#xff09;&#xff0c;vscode未识别到git安装路径&#xff0c;需要…

OKLink携手CertiK在港举办Web3生态安全主题论坛

2023年10月23日&#xff0c;OKLink与CertiK共同发起的Web3生态安全主题论坛在香港铜锣湾拉开帷幕。本次论坛由OKLink和CertiK主办&#xff0c;香港投资推广署独家支持&#xff0c;聚焦如何构建安全可靠的Web3生态系统议题&#xff0c;同时深入剖析这一进程中所面临的潜在挑战。…

OkHttp网络框架深入理解-SSL握手与加密

OkHttp简介 由Square公司贡献的一个处理网络请求的开源项目&#xff0c;是目前Android使用最广泛的网络框架。从Android4.4开始HttpURLConnection的底层实现采用的是OkHttp。 特点&#xff1a; 支持HTTP/2并允许对同一主机的所有请求共享一个套接字通过连接池,减少了请求延迟…

每日汇评:黄金争取本周收于2000美元上方

在周五美国个人消费支出通胀之前&#xff0c;金价巩固了周四的双向价格走势&#xff1b; 在市场情绪改善之际&#xff0c;美元与美债收益率一同下跌&#xff1b; 黄金价格在日线图上确认了一个多头标志&#xff0c;相对强弱指数仍然指向更多的上涨&#xff1b; 周五早盘&#x…

万能鼠标设置 SteerMouse v5.6.8

鼠标可谓是用户们在使用电脑时候的必备外接设备呢&#xff01;适合你自己的鼠标设置也绝对能够优化你的Mac使用体验&#xff01;想要更好的Mac体验就试试用Steermouse Mac版吧。它通过软件来自由设置你的鼠标操作&#xff01;在这款万能鼠标设置工具中&#xff0c;用户可以在偏…

Hadoop3.0大数据处理学习4(案例:数据清洗、数据指标统计、任务脚本封装、Sqoop导出Mysql)

案例需求分析 直播公司每日都会产生海量的直播数据&#xff0c;为了更好地服务主播与用户&#xff0c;提高直播质量与用户粘性&#xff0c;往往会对大量的数据进行分析与统计&#xff0c;从中挖掘商业价值&#xff0c;我们将通过一个实战案例&#xff0c;来使用Hadoop技术来实…

【STM32】HAL库ADC多通道精准测量(采用VREFINT内部参考电压)

【STM32】HAL库ADC多通道精准测量&#xff08;采用VREFINT内部参考电压&#xff09; 文章目录 多通道测量VREFINTADC采样周期多通道配置 附录&#xff1a;Cortex-M架构的SysTick系统定时器精准延时和MCU位带操作SysTick系统定时器精准延时延时函数阻塞延时非阻塞延时 位带操作…

【蓝桥杯选拔赛真题03】C++输出字母Y 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析

目录 C/C++输出字母Y 一、题目要求 1、编程实现 2、输入输出 二、算法分析

GMT中标注特殊字符:平方,%,±号,希腊字母

在gmt中文社区的官网&#xff0c;我们可以得到以下的特殊字符表&#xff0c;通过在cmd命令窗口输入以下命令 gmt get PS_CHAR_ENCODING 查到你所安装的GMT的默认字符编码方式。如下图所示&#xff0c;本人是默认的ISOLation1 编码。 下面是一些具体的特殊字符的代码与标注效果…

Postgresql在jdbc处理bit字段的解决方案

问题&#xff1a; bit如果长度为1&#xff0c;则会默认为布尔型&#xff08;1-true 0-false&#xff09;&#xff1b; bit如果长度大于1&#xff0c;则会默认为bit类型&#xff0c;但是代码中以前常用的两种set方式&#xff0c;会报错 第一种方式&#xff1a; ps.setObject(i1,…

Facebook账号被封?那是因为没做对这些事

Facebook是全球最大的社交媒体平台之一&#xff0c;拥有数十亿的全球用户。它的主要产品包括Facebook&#xff08;面向个人用户的社交媒体平台&#xff09;、Instagram、WhatsApp和Messenger。同时他也是美国数字广告市场的主要参与者之一&#xff0c;其广告平台吸引了数百万广…