首页 > 数据库 >MySql

MySql

时间:2022-09-25 15:57:37浏览次数:38  
标签:SELECT 查询 dept emp MySql where select

关系型数据库: 二维表,都是表结构易于查询,数据存在磁盘中安全,使用通用的SQL语言方便

注释 -- 这里有一个空格  或者#

DDL:操作数据库,表     

  数据库操作:show databases查询    create database创建数据库  drop database删除数据库  use使用数据库   后面都加上数据库名字

  表操作:show tables查询表名称  desc表名称 查询表结构     create table 表名(字段名 数据类型)  drop database表名

    修改表:前面都是alter table 表名  修改表名+rename to 新表名     添加一列+add 列名 数据类型   修改数据类型 +modify 列名 新数据类型

        修改列名和数据类型 +change 新列名 新数据类型       删除列+drop 列名

DML:对表中的数据进行增删改的操作

  给指定的列添加数据  INSERT INTO student (id,name) VALUES(1,'张三');,全表 添加就 都写上,表名后面的括号也可以省略 (不建议)添加多行可以在value后面直接写

  修改表中的数据 update student SET `name`='李四'  WHERE  id=1;     如果不加 where条件就会把记录 全部都改了,一般必须写

  删除表中的数据 :DELETE FROM  student WHERE NAME="李四";    如果不加 where条件就会把记录 全部都删除  ,一般必须写

DQL:对数据进行查询

  select 字段列表 from  表名列表  where  条件列表  group   by    分组字段  having  分组后条件    order by    排序字段     limit  分页限定

  基础查询:SELECT NAME,AGE  FROM stu;    去除重复记录:SELECT DISTINCT address from stu; 

         设置列名别名:SELECT NAME,math AS 数学成绩,english AS 英语成绩 FROM stu;      as也可以省略

  条件查询:SELECT * FROM stu WHERE age>20;           SELECT * FROM stu WHERE age BETWEEN 20 and 30;        SELECT * FROM stu WHERE age>20 AND math>80;

         或者用or 连接(还有in)SELECT * FROM stu WHERE age=18 or age=20;       SELECT * FROM stu WHERE age in (18,20,30);

       如果是空值就使用   is null  或者 is not  null

         like模糊查询:通配符    _代表单个任意字符;%代表任意个数字符

  排序查询: order by       ASC升序   DESC降序如果有多个排序条件,前面的一样时,才会按照后面的排序

  聚合函数(null不参与计算) count(统计数量列名不能为空)  max(最大值) min(最小值) sum(求和) avg(平均值)  后面跟列名

       例如:select min(math) from student

  分组查询:group by(分组之后,查询的字段为聚合函数和分组字段,其他字段无意义)

  分页查询:limit 起始索引 查询条目数   select from student limit 0 ,3;  计算方式(当前页码-1)*每页显示的条数   oracle用rownumber    SQLserver用top

where和having的区别:

  where是分组之前进行限定,having是分组之后过滤的,

  where不能对聚合函数进行判断having可以

执行顺序,where>聚合函数>having

 

DCL:对数据库进行权限控制

 

约束:非空 NOT NULL     唯一UNIQUE     主键PRIMARY KEY(非空且唯一)       检查CHECK(MYSQL不支持)       默认DEFAULT       外键FOREIGE KEY 

  auto_increment自增长1

 

外键约束:添加外键     

   CONSTRAINT  外键名称(随便)_主表名_从表名  FOREIGN KEY(从表的外键属性)  REFERENCES dept(主表的关联属性)

  有表之后添加外键 :alter table 从表 add CONSTRAINT   外键名称(随便)_主表名_从表名   FOREIGN KEY(从表的外键属性)  REFERENCES dept(主表的关联属性)

 

数据库设计:

多表查询:

  连接查询:

    内连接:两个表中的交集

      隐式内连接:SELECT * FROM emp,dept WHERE  emp.dep_id = dept.did;     给表起别名:SELECT  t1. NAME,t1.gender,t2.dname FROM emp t1,dept t2 WHERE t1.dep_id = t2.did;

        显示内连接: inner可以不写  select * from emp inner join dept on emp.dep_id = dept.did;        select * from emp join dept on emp.dep_id = dept.did;

 

    外连接:

      左外连接:A表中的数据和交集的数据      select * from emp left join dept on emp.dep_id = dept.did;

      右外连接:   B表中的数据和交集的数据     select * from emp right join dept on emp.dep_id = dept.did;

  子查询:嵌套查询

    单行单列:select * from emp where salary > (select salary from emp where name = '猪八戒');

    多行单列:select * from emp where dep_id in (select did from dept where dname = '财务部' or dname = '市场部');

    多行多列:select * from (select * from emp where join_date > '2011-11-11' ) t1, dept where t1.dep_id = dept.did;

 

事务:

  开启事务:begin 或者 start transaction

  提交事务:commit            默认是自动提交    1是自动提交  0是手动提交     set@@autocommit = 0  变成手动提交

  回滚事务:rollback

  四大特征:

    A:原子性  事务是不可分割的最小操作单位,要么都成功, 要么都失败

    C:一致性,事务完成时所有数据保持一致状态

    I:隔离性,多个事务之间操作的可见性

    D持久性,事务一旦提交或者回滚,他对数据库中的数据改变是持久的

 

标签:SELECT,查询,dept,emp,MySql,where,select
From: https://www.cnblogs.com/songyuejava/p/16727260.html

相关文章