SQL的使用总结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
select * from emp
select * from dept
select * from job
select * from salarygrade
 
 
 
-- 1.查询所有员工信息。查询员工编号,员工姓名,工资,职务名称,职务描述
SELECT
    t1.mgr,
    t1.ename,
    t1.salary,
    t2.jname,
    t2.description
FROM
    emp AS t1,
    job AS t2
WHERE
    t1.job_id = t2.id
-- 2.查询员工编号,员工姓名,工资,职务名称,职务描述,部门名称,部门位置
SELECT
    t1.ename,
    t1.salary,
    t2.jname,
    t2.description,
  t3.dname,
  t3.loc
FROM
    emp AS t1,
    job AS t2,
  dept AS t3
WHERE
    t1.job_id = t2.id and
  t1.dept_id = t3.id
 
 
-- 3.查询员工姓名,工资,工资等级
SELECT
    t1.ename,
    t1.salary,
  t2.grade
FROM
    emp AS t1,
  salarygrade as t2
where t1.salary BETWEEN t2.losalary and hisalary
     
 
-- 4.查询员工姓名,工资,职务名称,职务描述,部门名称,部门位置,工资等级
SELECT
    t1.ename,
    t1.salary,
  t2.jname,
    t2.description,
  t3.dname,
  t3.loc,
  t4.grade
FROM
  emp AS t1,
    job AS t2,
  dept AS t3,
  salarygrade as t4
WHERE
    t1.job_id = t2.id
   and
  t1.dept_id = t3.id
 and t1.salary BETWEEN t4.losalary and t4.hisalary
 
-- 5.查询出部门编号、部门名称、部门位置、部门人数
SELECT
    t1.*, COUNT(t2.id) 部门人数
FROM
    dept AS t1,
    emp AS t2
WHERE
    t2.dept_id = t1.id
GROUP BY
    t2.dept_id
 
 
 
SELECT dept.*,t1.num
from dept,(select dept_id,COUNT(*) num from emp GROUP BY  dept_id) t1
where t1.dept_id = dept.id

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
SQL总结:
********************************************************************************
           1.ddl语句: 操作数据库或表
               //创建数据库
             create Database if not 数据库名称;
               
               //删除数据库
             drop database if exists 数据库名称
 
               //使用数据库
             use 数据库名称
 
               //查看数据库
              show database
 
               //查看当前使用的数据库
              select database()
 
                
 
---------------------------------------------------------------------
               //查询该数据库下的所有表
               select tables
                
               //查询表结构
               desc 表的名称
            
               //创建表
                create table 表的名称(字段1名称 数据类型  约束 ,
                                                                            字段2名称 数据类型  约束,
                                                                            字段3名称 数据类型  约束
                                      )
 
               //删除表
                drop table if exists 表的名称
 
               //修改表的名称
               alter table 表的名称 rename to 新的表名
             
               //添加列
              alter table 表的名称 add 列名 数据类型;
       
               //修改列的数据类型
               alter table 表的名称 modify 列名 新的数据类型;
 
               //修改列的名称以及数据类型
                alter table 表的名称 change 列名 新列名 新数据类型
 
               //删除列
              alter table 表的名称 drop 列名 ;     
              
 
   
 
********************************************************************************
           2.dml语句:对数据进行操作
             //添加数据【指定列添加】
            insert into 表的名称 (字段名1,字段名2,字段名3,……)
                           values(字段名1值,字段名2值,字段名3值,……)
 
            //添加数据【给全部列添加数据】
            insert into 表的名称 values(字段名1值,字段名2值,字段名3值,……)
 
                        //添加数据【给全部列添加数据,多条数据同时添加】
            insert into 表的名称 values(字段名1值,字段名2值,字段名3值,……),
                                                                                (字段名1值,字段名2值,字段名3值,……),
                                                                                (字段名1值,字段名2值,字段名3值,……);
  
            //修改数据【指定列修改】
                        update  表的名称 set 列名1=值1,列名2=值2,列名3=值3,……
             where 条件【不指定条件就会将所有行的数据全部更改】
 
            //删除数据
             delete from 表的名称 where 条件【不指定条件就会将所有行的数据删除】
  
 
 
********************************************************************************
           3.dql语句:数据库查询语言
                     select  from              查询
                     distinct                  去重
                     as                        别名
 
                     ④条件{
                             >                                   大于
                            >=                  大于或等于
                            != / <>             不等
                            <                   小于
                            <=                  小于或等于
                            between …… and ……    在……范围内
                            in()                 多选一
                            like                 模糊查询【_代表单个任意字符 %代表多个任意字符】
                            is null/is not null  不为空
                            and /&&               和
                             or /||               或
                             not/!               非
                           }
 
                                            ⑤排序 order by ASC升序 DESC降序】
 
                      ⑥聚合函数{
                             count()  统计数量【不统计为null的列】
                             max()      最大值
                             min()      最小值
                             sum()      求和
                             avg()      平均值
                           }
                      ⑦分组  group by
                  
                      ⑧分组后限定条件  having
                      ⑨分组前的限定条件 where
 
                      ⑩分页查询 limit 起始索引 , 查询条目数;
 
 
                   
 
********************************************************************************
           4.dcl:数据控制语言
                 grant                   授权
                 set                     设置
                 @@autocommit            自动提交事务
                 begin                   开启事务
                 commit                  提交事务
                 rollback                回滚事务
            
 
 
                            事务的四大特征:AICO  原子性【要么同时成功,要么都失败】
                                                                        一致性【数据总量不变】
                                                                        隔离性【开启多个事务查询数据】
                                                                        持久性【通过commit提交或rollback回滚实现数据更新】
 
                            默认自动提加事务【要手动提交事务方法--》set @@autocommit =0 默认是1】
                                                                一旦设置为手动提交事务则必须自主提交,不然数据无法更新
 
<br><br><br>//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
      多表查询:
               1.内连接 inner join  on inner可以不写】
                          
                
               2.外连接 left join【左连接:查询左表的全部数据以及与右表交集部分数据】
                        right join【右连接:查询右表的全部数据以及与右表交集部分数据】
 
 
               3.子查询  =(子查询语句【子查询语句输出的是单列单行数据时使用=】)
                         in(子查询语句【子查询语句输出的是单列多行数据时使用in】)
 
 
 
 
 
 
 
 
 
 
      约束:
               1.非空约束                  not null
               2.唯一约束[自动添加]        unique [auto_increment]
               3.主键约束                  primary key
               4.默认约束                  default
               5.外键约束                  constraint 外键名称 foreign key(外键字段名) references 主表名(主表列名)
  
                         
 
 
 
 
     数据库设计:
               1.一对一
                           【例如:用户 和 用户详情
                                                       一对一关系多用于表拆分,将一个实体中经常使用的字段放一张表,
                                                       不经常使用的字段放另一张表,用于提升查询性能】
                                        实现方式:
                                        在任意一方加入外键,关联另一方主键,并且设置外键为唯一(UNIQUE)
 
 
               2.一对多
                           【例如:部门 和 员工
                                                       一个部门对应多个员工,一个员工对应一个部门】
                                        实现方式:
                                        在多的一方建立外键,指向一的一方的主键
 
 
 
               3.多对多
                           【例如:商品 和 订单
                                                       一个商品对应多个订单,一个订单包含多个商品】
                    实现方式:
                                        建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

 

posted @   唯易人生  阅读(128)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示