zoukankan      html  css  js  c++  java
  • mysql看视频笔记

      1 CREATE TABLE tb_student (
      2     id INT PRIMARY KEY auto_increment,                    //主键约束,自动增长
      3     NAME VARCHAR (18) NOT NULL,                            //非空约束
      4     sex VARCHAR (2) check(sex = '' or sex =''),
      5     age INT CHECK (age>18 AND age<60),                    //检查约束
      6     address VARCHAR (200),
      7     email VARCHAR (200) UNIQUE,                            //唯一约束
      8     tb_id  int,
      9 //外键约束, 自己的表名(自己的外键) REFERENCES 外部表名(字段)
     10 //CONSTRAINT FOREIGN KEY 外键名【表名+约束】(外键) REFERENCES 主表(字段)
     11     CONSTRAINT foreign KEY tb_student_fk(tb_id) REFERENCES tb_demp(id)
     12     )
     13     
     14     //建表之后添加外键约束
     15     ALTER TABLE tb_student
     16     ADD CONSTRAINT foreign KEY tb_student_fk(tb_id) REFERENCES tb_temp(id)    
     17 
     18     //设置自动增长
     19 alter table tb_student 
     20 modify column id int auto_increment
     21 
     22 
     23 SELECT * FROM tb_dept;
     24 1,指明字段
     25 2,全部字段
     26 INSERT INTO tb_dept(NAME,loc,description) VALUES('开发部','广州','辅助')
     27 
     28 INSERT INTO tb_dept VALUES(3,'财务部','广州','辅试试助')
     29 3,插入多条
     30 INSERT INTO tb_dept(NAME,loc,description)
     31  VALUES('财务部','广州','辅试试助'),
     32  ('财务部','广州','辅试试助'),
     33  ('财务部','广州','辅试试助') ,
     34 ('财务部','广州','辅试试助')
     35 
     36 创建一张表和tb_dept表的结构一样,这种方式建表,值复制表结构,不复制约束
     37 CREATE TABLE tb_dept2
     38 SELECT * FROM tb_dept
     39 
     40 不复制数据
     41 CREATE TABLE tb_dept3
     42 SELECT * FROM tb_dept WHERE id = 99
     43 
     44 把tb_dept表中数据复制到tb_dept3中,只要这四个字段对应即可
     45 INSERT INTO tb_dept3(id,name,loc,description)
     46 SELECT id,name,loc,description FROM tb_dept
     47 
     48 更新语句
     49 UPDATE tb_student set age = 34
     50  WHERE id = 3
     51  
     52  
     53  delete from tb_demp;删除所有数据
     54  
     55  删除有三种“:
     56  delete ,可以回滚,保存记录,不删除表结构
     57  truncate,不回滚,不删除表结构,
     58  drop        直接删除,所有内容删除
     59  
     60  select 61  重复
     62  SELECT DISTINCT deptno FROM tb_emp
     63  
     64  between  and            >=,<=,
     65  
     66  innot in      where mgr in(7902,222,12255)        ,括号中包含的
     67  
     68  like        模糊查询,        select ename from tb_demp where ename like '_克%';
     69  _表示一个字符
     70  %表示0或者多个字符
     71  
     72  
     73  order by 排序,按照sal从高到低
     74  
     75  select * from tb_demp order by sal desc;
     76  
     77  函数:
     78  
     79  链接字符串        concat(str1,str2,...)
     80  SELECT CONCAT(id,name,sex) FROM tb_student;
     81  
     82  
     83  转换大小写:        lower(小写),upper(大写)
     84  SELECT LOWER(NAME) FROM tb_student;
     85 
     86 SELECT upper(NAME) FROM tb_student;
     87  
     88  返回字符串的长度:
     89  SELECT LENGTH(NAME) FROM tb_student;
     90  
     91 日期函数,
     92 返回当前时间
     93 SELECT now();
     94 
     95 SELECT * FROM tb_emp 
     96 WHERE    YEAR( hiredate) = 1981;         查询年= 1981年
     97 
     98 ifnull函数,如果字段不为null,则取第二个值,如果为空,取第三个值
     99 select comm,ifnull(comm,comm+100,100)    as comm2 from tb_emp;
    100 
    101 ifnull函数,如果字段不为null,则直接返回该值,如果为空,取第二个
    102 select comm,ifnull (comm,100)as comm2 from tb_demp;
    103 
    104 条件判断语句:
    105 select ename,job,sal,comm'原定奖金'
    106         case
    107             when    comm is null then 1000
    108             else    comm
    109         end    as'奖金'    
    110                         
    111 from tb_demp;
    112 
    113 聚合函数:
    114 
    115 AVG            平均数
    116 SUM            总数
    117 MAX            最大数
    118 MIN            最小数
    119 count        统计
    120 
    121 group by 分组,
    122 分组之后不能用where,换成having,
    123 having是分组之后再进行筛选    ,where和having都是用来做条件限定的,但having只能用在groupby之后
    124 
    125 order by 排序,放在having之后
    126 
    127 select deptno ,avg(sal),max(sal),min(sal),sum(sal),count(1)
    128 from tb_demp
    129 group by deptno
    130 having avg(sal)>200
    131 order by avg(sal) asc;
    132 
    133 
    134 limit,常常用来分页,
    135 select limit offset start ,row_count
    136 offset_start: 第一个返回记录行的偏移量,默认为0,
    137 row_count:要返回记录行的最大数目
    138 
    139 select * from tb_demp limit 5;        检索前五个记录
    140 select * from tb_demp limit 5,10;        检索记录行6-10的记录
    141 
    142 
    143 select 基本语法:
    144 select selection_list            选择哪些列
    145 from table_list                    从何处选择行
    146 where primary_constarint         行必须满足什么条件
    147 group by grouping_colimns        怎么样对结果分组
    148 having secondart_constraint        行必须满足的第二个条件
    149 order by sorting_columns        怎么样对结果排序
    150 limit offset_start row_count        结果限定    
    151 
    152 
    153 多表连接查询:
    154 #交叉连接:
    155 
    156 select count(*) from tb_emp;    #17
    157 
    158 select count(*) from tb_demp;    #4
    159 
    160 select * from tb_emp,tb_dept    #68 = 17*4
    161  
    162 select * from tb_emp cross join tb_dept;
    163 
    164 
    165 内连接:连接条件就是主外键关联
    166 select * from tb_demp e,tb_demp d where e.deptno = d.deptno;
    167 
    168 select * from tb_dept inner join tb_emp
    169 on tb_dept.deptno = tb_emp.deptno;
    170 
    171 外连接:(不仅列出与连接条件相匹配的行,还列出左表,右表或者两个表中所有符合where过滤的数据行)
    172 
    173 在外连接中,某些不满足条件的列也会显示出来,也就是说,只限制其中的一个表的行,
    174 而不限制另一个表
    175 
    176 左外连接:
    177 tb_dept 做主表,左边的表为主表,左边的记录全部显示,如果没有找到记录则补null
    178 
    179 select * from tb_dept left join tb_emp
    180 on tb_dept.deptno = tb_emp.deptno;
    181 
    182 orcale :
    183 select * from tb_emp e,tb_dept d where e.deptno = d.deptno(+)
    184 
    185 
    186 
    187 自连接:
    188 
    189 select c.name '类别名',c2.name'父类别名'
    190 from tb_course c left join tb_course c2
    191 on c.pid = c2.id;
    192 
    193 select c.name '类别名',c2.name'父类别名'
    194 from tb_course c , tb_course c2
    195 where c.pid = c2.id;
    196 
    197 
    198 
    199 索引:
    200 作用:在数据库中来加速对表的查询
    201 创建:自动在主键和唯一键上面创建索引
    202 
    203 手动创建:create index index_tb_student_name
    204 on tb_student(stu_name)
    205 
    206 使用索引,在where之后加上索引,提高查询效率
    207 
    208 视图:(使复杂查询变得简单)
    209 
    210 create view emp_v_10 as 
    211 select empno as 部门编号,ename 员工姓名,sal 工资
    212 from tb_emp 
    213 where deptno = 10;
    214 
    215 select * from emp_v_10;
    216 
    217 
    218 
    219 
    220 
    221 set @i=1;
    222 
    223 
    224 select @i;
  • 相关阅读:
    Zuul token FIlter 验证失败结果输出
    springboot 使用 dev tool 导致 CastException
    索引失效的情况汇总
    JVM笔记-GC常用参数设置
    关于gdb和shp的FID问题
    配置mac百度云同步盘
    【python常用函数1】
    【python环境配置1】 环境变量与常用模块
    【nodejs笔记——小知识点汇总】
    ArcGIS标注
  • 原文地址:https://www.cnblogs.com/xiaoxiao5ya/p/4866488.html
Copyright © 2011-2022 走看看