安装MinGW
1.在官网上下载MinGW-w64
2.安装选项
- 版本号一般选最新
- 系统是64位的,选择x86_64;32位系统,选择i686
- 开发Windows程序,需要选择win32,而开发Linux、Unix、MacOS等其他操作系统下的程序,则需要选择posix
- 异常处理模型sjlj稳定性好,支持 32位,建议64位操作系统选择seh性能好
基本语法
进阶语法
基础部分
进阶部分
未解决问题
1.使用数据库之前要先用USE选择数据库
1 | USE carash; |
2.SHOW可以用来显示当前所有数据库、表、行的名字
1 | SHOW DATABASES; |
3.检索
1 | SELECT 属性名 FROM 表名; |
4.条件检索
1 | # 返回属性2==xx的属性1,并按属性3升序排序 |
5.汇总数据
1 | # 将满足条件并经过函数计算的属性1赋值给新属性并返回,不加WHERE的话会计算所有属性1有值的行 |
6.分组数据
1 | # 会返回以属性1为分组依据,返回每个不同属性1出现的行数的表 |
7.IFNULL的使用
1 | # 表示SELECT DISTINCT ... OFFSET 1有符合要求记录时就返回符合记录,没有符合的就返回NULL |
8.事务中变量的声明
1 |
|
9.四大排名关键字的使用
1 | # 遇到相同的会写成1,1,3形式 |
10.多表链接的写法
1 | select distinct l1.Num as ConsecutiveNums |
11.子查询的写法
1 | select cust_name, cust_contact |
12.存储过程
1 | create procedure-创建存储过程 |
13.date类型数据的比较
1 | # datediff(l1.recordDate, l2.recordDate) = 1表示l2的日期要比l1的日期少一天,diff等于l1-l2 |
14.关键字顺序
1 | 1.select |
15.构建临时表查询
1 | select class |
16.索引
1 |
|
1 |
|
17.数据库建表字段时最后不要允许其为null,原因如下
18.数据库字段的长度意思
19.左连接、右连接、内连接
20.group by执行详解

21.partition by是函数里使用的group by
1 | SELECT NAME,Department,salary, |
22.更新
1 | update 表名 set email = "southern.emperor@outlook.com" where name = "Southern Emperor"; |
23.锁
1 | LOCK TABLES 表名 WRITE; |
1 | UNLOCK TABLES; |
24.对字段值为null的判断应该用以下
1 | where bonus is null; |
25.选取customer_id最多订单的记录用以下逻辑,先分组,再对分组order by
1 | select - from Orders group by customer_id order by count(order_id) DESC limit 1; |
26.求连续的座位
1 | select distinct l1.seat_id from Cinema l1 left join Cinema l2 on abs(l1.seat_id - l2.seat_id) = 1 |
27.返回合法三角形(case when …then xx1 else xx2)
1 | select x, y, z, case when x+y>z and x+z>y and y+z>x then 'YES' else 'NO' from Triangle |
28.一张有字段a、b、c的表,group by多个值(a和b),那么只有a相同并且b也相同的数据才会去聚合,例如此时聚合选的是sum(c),那么就会展示满足a1=a2,b1=b2的数据的c的和
29.sql判断字符串变量的长度用LENGTH()
1 | SELECT - |
30.插入时into和overwrite的区别
31.一张Hive表的写法
1 | WITH old_table AS ( |
1.创建视图
1 | CREATE VIEW v_teachers AS |
32.多次使用的子查询和复杂的逻辑都可以在select上面用with写
1 | ### 以下语句得到的是ad_id相等的 |
1.存储过程就是一套已经预编译过的SQL语句
2.索引时对数据库表中一个或多个列的值进行排序的结构,能加快查找数据而不用扫描整个库
3.事务时并发控制的基本单位,它是一个操作序列,这些操作要么都执行要么都不执行(ACID)
4.并发控制时确保在多个事务同时存取同一数据时不破坏事务的隔离性和一致性以及数据库的一致性,常用的技术手段有
5.悲观锁的实现(用排他锁实现)
6.乐观锁的实现(用版本号实现)
7.drop、delete和truncate区别
8.主键、外键、超键和候选键
9.视图:是一种虚拟的表,具有和物理表相同的功能,通常是一个表或者多个表的行、列的子集,相比多表查询更方便,修改视图也会影响到基本表,可以看作时从不同表抽取一部分组成的新表
10.三大范式
11.触发器时特殊的存储过程,通过事件触发才被执行
12.数据库事务隔离级别
13.三种错误读
14.锁的分类
15.设置索引了却没用上的情形
16.SQL Server支持
17.数据库系统指的是数据库和数据库管理系统
18.数据库模型分为
19.码就是键,例如主码、超码、候选码
20.数据的物理独立性:存储结构改变。模式和应用程序不变,模式-内模式映像改变
数据的逻辑独立性:模式改变,外模式和应用程序不变,外模式-模式映像改变
21.静态表和动态表
22.联合索引(又叫复合索引)
23.索引失效情况
24.主键索引和非主键索引区别
25.索引的实现方式可以是哈希表、b树和b+树
26.顺序读写和随机读写
1.各数据类型占空间
2.left join返回包括左表中的所有记录和右表中联结字段相等的记录(right join同理),inner jon只返回两表中联结字段相等的行
3.Mysql引擎
4.数据库系统的数据独立性:不会因为数据存储结果与逻辑结构的变化而影响应用程序
5.关系模型中数据的逻辑结构是一张二维表
6.将E-R图转换为关系数据模型属于逻辑设计阶段
7.在高并发的线上事务中,无法避免等待和死锁的产生
8.单个用户使用的数据视图描述称为外模式
9.SQL语言分为交互式SQL和嵌入式SQL
10.Oracle
11.MAX()不限制数据类型
12.数据库按使用的数据模型分为
13.数据模型质量的高低直接影响数据库性能
14.transact-SQL函数有:DAY()、MONTH()、YEAR()
15.数据库一般默认用utf-8编码,这种编码一个字符最多存3个字节,而emoji表情是4个字节所有会识别成?
1.这个语句用来删除Id大的重复邮箱为什么提示You can’t specify target table ‘Person’ for update in FROM clause
1 | delete from Person where Id not in (select min(Id) as Id from Person group by Email); |
原因是:不能在一个语句中既修改、删除某表后又select该表
解决办法:用自连接
1 | delete l1 from Person l1, Person l2 where l1.Email = l2.Email and l1.Id > l2.Id; |