目录
1. 聚合查询是进行行与行的运算合并,是不能和别的列放在一块查询
3. 有group by时先执行where,后执行having
5. 删除数据用delete,删除表时drop,选中数据库后,再用drop删
6. IF(expr1,expr2,expr3)有点类似三目运算符,expr1为true或不为0,就是真
7. IN()范围查询括号中存在的,NOT IN()范围查询不在括号中存在的,ALL表示全部都满足才返回true
10. MySQL是一个数据库服务器,一定要保证数据传输的可靠,而UDP是无连接,不可靠传输
12. 在关系模型中,实现表示了两个关系之间的相关联系的约束是通过 外键
12.修改表结构的关键字都是 alter table 表名 ,再跟具体修改的语句
14. 授予用户某张表的查询数据的权限:grant select on 数据库.表名 to 用户名 '@' 该用户允许访问的 ‘ip’
15. 修改表结构,给表中添加列 alter table table_name add 字段名称 字段类型
16. group by 通常和集合函SUM(),AVG().MAX(),MIN(),COUNT()等结合在一起,后接限制条件语句 having,不可用where语句
BC 聚合查询是行和行进行统计合并为一条数据,是不能和别的列放在一块查询的
D Delete是删除数据
delete from 表名 where 条件; 删除条件控制的列
delete from 表名; 删除所有列
如果想把表删除那就 drop table 表名;
group by是进行分组,在进行分组前,先用where进行条件过滤,然后再进行分组,分完组之后,再使用having 对分组的结果进行条件筛选
join 常用在数据库操作内连接和外连接中,一般涉及两张表
但是这里问至少涉及到几张表,那就可以考虑如果是自连接的话,那么就涉及到一张表了
删除数据用delete,删除表时drop
C选项是只有当进入这个数据库后,才可以直接删除 tb_ame这个表
D选项是不论在哪个数据库中都可以执行这个命名,都能成功删除这个表
IF()是一个函数具体用法是:IF(expr1,expr2,expr3),如果expr1的值为真(boolean值为true,或不为0的数值),则返回expr2的值,否则返回expr3的值(感觉有点像三目运算符)
题目链接:查找输入整数二进制中1的个数_牛客题霸_牛客网 (nowcoder.com)
题目要求:
上代码
在Integer中有一个方法bitCount()是输入int类型数字,输出这个数字二进制1的个数
当然,这道题考我们的就是int转二进制,然后统计1的个数,肯定是不能直接这么搞的
- import java.util.Scanner;
-
- public class Main {
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- while(in.hasNext()) {
- int n = in.nextInt();
- System.out.println(Integer.bitCount(n));
- }
- }
- }
所以还是老实的写吧
- import java.util.Scanner;
-
- public class Main {
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- while(scan.hasNext()) {
- int n = scan.nextInt();
-
- int count = 0;
- while (n != 0) {
- if((n&1) == 1) {
- count++;
- }
- n = n>>1;
- }
- System.out.println(count);
- }
- }
- }
一个操作属于一个会话,另一个操作,属于另一个会话
冲突:两个会话的操作,同时执行时,是否会相互影响
MySQL中的通信协议
TCP/IP协议:通常我们连接MySQL ,各种主要编程语言都是根据这个协议实现了连接模块
Unix Socket协议:通常我们登入MySQL服务器中使用这个协议,因为要使用这个协议连接MySQL需要一个物理文件。文件的存放位置在配置文件中有定义,Unix Socket协议是所有协议中最高效的一个(网络编程、网络通信使用)
Share Memory协议:这个协议一般不用,因为这个只有windows可以使用,这个协议需要在配置文件中在启动的时候使用shared-memory参数,需要注意的是,使用此协议,一个host上只能有一个server,所以这个东西一般没啥用,除非你怀疑其他协议不能正常工作
Named Pipes协议:这个协议也是只有windos才可以使用。同 shared memory一样,使用此协议,一个host上依然只能有一个server,即使是使用不同的端口也不可以(为局域网而开发的协议)
超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键
候选键(candidate key):不含有多余属性的超键称为候选键
修改表结构的关键字都是 alter table 表名 ,再跟具体修改的语句
添加表字段
alter table table_name add 字段名称 字段类型
删除表字段
alter table table_name drop 字段名称
修改表字段
alter table table_name change 旧字段名称 新字段名称 字段类型
alter table table_name modify 字段名称 字段类型
题目链接:完全数计算_牛客题霸_牛客网 (nowcoder.com)
题目要求:
题目分析:
计算完全数的个数,就要先要判断一个数的真因子的和等不不等于它本身,
也就是求一个数除了它自身以外的约数的和,判断这个和 是否与 本身相等
然后统计满足要求数的个数就可以了
上代码
- import java.util.Scanner;
-
- public class Main {
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- int n = scan.nextInt();
-
- int count = 0;
- for (int i = 2; i < n; i++) {
- if(constraint(i) == i) {
- count++;
- }
- }
- System.out.println(count);
- }
-
- //求出 除自身以外约数的和
- private static int constraint(int a) {
- int sum = 0;
- for (int i = 1; i <= a/2; i++) {
- if(a%i == 0){
- sum += i;
- }
- }
- return sum;
- }
- }
常用的管理权限的命令有:
(1)授予用户某张表的查询数据的权限:grant select on 数据库.表名 to 用户名 '@' 该用户允许访问的 ‘ip’
(2)授予用户某张表的插入数据的权限:grant insert on 数据库.表名 to 用户名 '@' 该用户允许访问的 ‘ip’
(3)授予用户某张表的修改数据的权限:grant update on 数据库.表名 to 用户名 '@' 该用户允许访问的 ‘ip’
(4)授予用户某张表的删除数据的权限:grant delete on 数据库.表名 to 用户名 '@' 该用户允许访问的 ‘ip’
修改表结构,给表中添加列
alter table table_name add 字段名称 字段类型
返回至少被订购过至少两次的productid,说明根据产品id分组,分组后,相同产品id行数>1的产品
分组group by 分组后条件过滤 having
相同的分组字段productid,合并时,可以计算行数(相同productid,合并,每一个的行数)
而Oracle 、Sql Server 、Db23 都是企业级,大型数据库
题目链接:杨辉三角的变形_牛客题霸_牛客网 (nowcoder.com)
题目要求:
题目分析:
上代码
- import java.util.Scanner;
-
- public class Main {
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- int n = scan.nextInt();
-
- if(n == 1 || n == 2) {
- System.out.println(-1);
- }else if(n%4 == 0) {
- System.out.println(3);
- }else if(n%4 == 2) {
- System.out.println(4);
- }else {
- System.out.println(2);
- }
- }
- }
题目链接:计算某字符出现次数__牛客网 (nowcoder.com)
题目要求:
题目分析:
输入字符串和一个字符,统计这个字符在字符串中出现的次数
直接遍历就可以了用equals,注意这个要是String类型的才可以直接比较
而且题中还说不区分大小写字母,可以都转为大写(toUpperCase())或小写,
也可以用equlsTolgnoreCase()忽略字母大小写,比较是否相等
上代码
- import java.util.Scanner;
-
- public class Main{
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- String str = scan.nextLine();
- String ch = scan.nextLine();
-
- int count = 0;
- for (int i = 0; i < str.length(); i++) {
- if((String.valueOf(str.charAt(i)).equalsIgnoreCase(ch)) == true) {
- count++;
- }
- }
- System.out.println(count);
- }
- }