E-R模型

entity- relationship实体与关系之间的的关系

desc --describe-----describe 单个的一个表名字. show tables是显示所有的建立在这个库中的表格

数据表完整性

 use db_library;show tables;create table r_reader1(reader_id int not null,reader_name varchar(50),reader_sex char(2) default"男",
reader_birthday date,
reader_borrowtotal int);
describe r_reader1;
describe r_return_record;
alter table r_return_record modify return_data date not null;
desc r_return_record;
alter table r_return_record modify return_id char(9) default "齐渊强";
desc r_return_record;
show tables;
create table t_reader2(
reader_id int unique auto_increment,
reader_name varchar(50),
reader_sex char(2) default"男",
reader_birthday date,
reader_borrowtotal int);
describe r_reader1;
alter table r_reader1 modify reader_id int unique auto_increment;
desc r_reader1;
insert into r_reader1(reader_name) values("清华大学出版社");
insert into r_reader1(reader_name) values("天津工业大学出版社");
select *from r_reader1;
show tables;
create table t_press(
press_id int not null unique auto_increment,
perss_name varchar(50),
perss_wbiste varchar(50),
perss_telephone int(11),
perss_email varchar(20),
perss_address varchar(230),
perss_postcode char(6));
desc t_press;
alter table t_press modify press_id int;
desc t_press;
alter table t_press drop index press_id;
desc t_press;
alter table t_press add primary key (press_id);
describe t_press;
desc r_return_record;
create table t_book(
isbn char(12),
book_name varchar(32),
book_author varchar(32),
book_price decimal(6,1),
press_id char(3),
book_copy int(34),
book_inventory int(22));
describe t_book;
alter table t_press modify press_id char(3);
alter table t_book  add constraint fk_pressid foreign key (press_id) references t_press (press_id);
desc t_book;
insert  into t_press(press_id) values("11");
insert  into t_press(press_id) values("43");
desc t_book;
desc t_pess;
select * from t_press;
insert into t_book (isbn,press_id) values ("erwee rwer ","43");
select * from t_book;

2021-5-13 黑马数据库学习 DataBase

1SQL

数据库学习
DataBase
1 SQL structured Query Languge
Sql 的通用语法
DDL(操作数据库,表);
DML(增删改查);
DQL(查询);
DCL(授权的);

DDL :

对库的crud: create; updata; delete; retrieve;

crud:  create; updata; delete; retrieve;
对库的crud:1exists;存在:是否不存在表(创建表时):  create database if not exists db4 character set utf8;删除一个表时(是否存在): drop database  if exists db4;
对表的crud;

select database<>;

score double(5,2);datatime :data , datatime,timestamp;时间戳varchar;name varchar(33);
  delete from stu; 删除表中所有的.(不推荐)
TRUNCATE TABLE stu;删除一个表完全,并且创建一个空表.
truncate betwwen

5.15号

修改列名字

**

ALTER TABLE emp CHANGE  dept_date dept_id INT;**SE db1;
INSERT INTO stu(id,NAME,age) VALUES(3,'张',33);
SELECT * FROM stu;
INSERT INTO stu  VALUES (1,'张无',32,NULL,NULL,34);
INSERT INTO stu  VALUES (2,'张三丰',32,"2322-11-22",NULL,34);
DELETE FROM stu WHERE id =1;
TRUNCATE TABLE stu;-- update 不用 table
UPDATE stu SET age = 113, score  = 130 WHERE id =2;
SELECT * FROM stu;
SELECT  id FROM stu;
CREATE TABLE student(
id INT,
age INT,
sex VARCHAR(23),
address VARCHAR(34),
math DOUBLE,
english DOUBLE
);
INSERT INTO student VALUES(8,32,"男","北京",2,98);
INSERT INTO student VALUES(9,35,"女","天津难",21,25);
INSERT INTO student VALUES(7,53,"女","天津",67,54);
`student``stu``student`
SELECT DISTINCT address FROM student;
SELECT  DISTINCT NAME ,address FROM student;
SELECT  id,math AS T恤,math  +IFNULL(english,0) AS 总共 FROM student;
SELECT * FROM student WHERE id <>3;
--查询年龄在20-30的;
SELECT * FROM student WHERE id >1 AND id <3;
SELECT * FROM student  WHERE id BETWEEN 1 AND 3;
SELECT * FROM student WHERE id =1 OR id =3 OR id =4;
SELECT * FROM student WHERE id IN(1,3,4);
SELECT * FROM student WHERE english  IS NOT  NULL ;
SELECT * FROM student  WHERE  age   LIKE '_2%';
SELECT * FROM student WHERE  address LIKE'%津%'

;

*SELECT FROM student ORDER BY english ASC ,math ASC ;–ASc升序,desc降序,两个排序的时候就当第一个条件相同时,按照第二个规则

一下函数

SELECT COUNT(english) FROM student;  --合函数排除了null.不计入里面.SELECT  COUNT(IFNULL(math,1)) FROM student;
SELECT *FROM student;
SELECT COUNT(*)FROM student;
SELECT MIN(math) FROM student;
SELECT SUM(english) FROM student;
SELECT AVG(math) FROM student;

5.16----------------------------

SELECT *FROM student ORDER BY english ASC ,math ASC ;–ASc升序,desc降序,两个排序的时候就当第一个条件相同时,按照第二个规则

聚合函数: count(),sum(),max(),min(),avg();

**分组查询:**group

​ group

SELECT sex,AVG(math) , COUNT(id) FROM student GROUP BY sex ;
– 写count聚合函数就行,group
-- 1分组函数的前面不要写基本列除了分组的那个,sex,

select  count(id) from emp   Group by dept_id;

SELECT gender ,SUM(salary) FROM emp GROUP BY gender ;

1譬如这个.前面写了name.但是不会出来所有人,只会出来两个名字,因为分组的性别就是两个

SELECT NAME ,SUM(salary) FROM emp GROUP BY gender ;

select  gender,sum(salary) from emp
where  gender = '男'group by gender
havingsum(salary) >500
;

外键

constraint 连接constraint; foreign key
1外键: 格式- constraint 外键名称 foreign key (外键列名称) reference 主表名称(主表列名称)
constraint empl_depa_fk foreign key employee_id reference department(department_id);

2删除外键

  • 删除外键
    ALTER TABLE employee DROP FOREIGN KEY emlp_depa_fk;
    – 添加外键(不是修改)
    ALTER TABLE employee ADD CONSTRAINT empl_depa_fk FOREIGN KEY employee_id reference department(department_id);

------------5.16号
SELECT sex,AVG(math) , COUNT(id) FROM student GROUP BY sex ;
– 写count聚合函数就行,group
-- 分组函数的前面不要写基本列除了分组的那个,sex,,也可以写,没啥用好像

/*select sex,Avg(math), count(id) from student where math > 2 group by sex having count(id)>2;

/–where 和having的区别:where在之前限定,若不满足则不参与分组 ,

​ having在之后,都会参与,只是是否会显示
–2:where之后不能跟聚合函数,having可以跟;
SELECT sex,AVG(math), COUNT(id)个数 FROM student WHERE math > 2 GROUP BY sex HAVING 个数>2;
/
/

–分页查询

limit
*/

SELECT * FROM student LIMIT 0,3; – 第一页

SELECT * FROM student LIMIT 3,3; – 第二页

/*公式:开始的索引 = (当前的页码-1)*每页显示的条数
limit是一个"方言",只在mysql中有.

*/

/*

约束

主键约束 primary key ;
非空约束 not null
唯一性; unique
外键约束: foreign key; foreign

not null

*/

CREATE TABLE stu1(
id INT,
NAME VARCHAR(20) NOT NULL /–非空/

);
SELECT FROM stu1;
– 1非空的删除,比较正规的看起来
***

ALTER TABLE stu1 MODIFY NAME VARCHAR(20);

​ 2添加非空:

ALTER TABLE stu1 ADD address VARCHAR(21) NOT NULL;

DROP TABLE stu1;
CREATE TABLE stu1 (
id INT,
phone_number INT UNIQUE); – 唯一性
SELECT * FROM stu1;
INSERT INTO stu1 VALUES (1,23);
INSERT INTO stu1 VALUES (2,3);
db1

– 删除唯一性约束(不一样)

– 注意!!!

ALTER TABLE stu1 DROP INDEX phonenuber(唯一性修饰的列名字);

不能用modify删除

/*

主键

  1. primary key 非空且唯一
  2. 表中的唯一

*/
– 主键的删除
ALTER TABLE stu1 DROP PRIMARY KEY;

不能用modify删除

– 创建字段之后添加主键功能
ALTER TABLE stu1 MODIFY id INT PRIMARY KEY;

/*

自动增长

auto_increment;

*/

CREATE TABLE stu2(

id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20));
– 自动增长的删除
ALTER TABLE stu2 MODIFY id INT;
– 添加
ALTER TABLE stu2 MODIFY id INT AUTO_INCREMENT;
SELECT * FROM stu2;
CONSTRAINT

外键

  • ​ 如果一张表中有一个非主键的字段指向了另一张表中的主键,就将该字段叫做外键。一张表中外键可以有多 个, 也就是不同字段指向了不同表中的主键

  • 如果一张表中有一个非主键的字段指向了另一张表中的主键,就将该字段叫做外键。一张表中外键可以有多个,也就是不同字段指向了不同表中的主键。需要注意数据表的存储引擎必须为InnoDB,

  • 作用:

  • 阻止执行

    从表插入新行,其外键值不是主表的主键值便阻止插入;
    从表修改外键值,新值不是主表的主键值便阻止修改;
    主表删除行,其主键值在从表里存在便阻止删除(要想删除,必须先删除从表的相关行);
    主表修改主键值,旧值在从表里存在便阻止修改(要想修改,必须先删除从表的相关行)。

    外键可以为空null

    /*
    外键
    foreign key ;

  • 保证数据的完整性,正确性.

constraint 约束,强制, employee 雇员,department 部,

constraint 连接constraint; foreign key**
1外键: 格式- constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)

或者: foreign key (外键列名称) references 主表名称(主表列名称)**

constraint empl_depa_fk foreign key employee_id reference department(department_id);**

外键可以为空null

  • 2删除外键

*/
– 写在创造表的那一栏
CONSTRAINT empl_depa_fk FOREIGN KEY employee_id reference department(department_id);

– 删除外键
ALTER TABLE employee DROP FOREIGN KEY emlp_depa_fk;
– 添加外键(不是修改)
ALTER TABLE employee ADD CONSTRAINT empl_depa_fk FOREIGN KEY employee_id reference department(department_id);

级联:

级联执行

主表删除行,连带从表的相关行一起删除;
主表修改主键值,连带从表相关行的外键值一起修改。

/*
级连操作

ALTER TABLE employee ADD
CONSTRAINT empl_depa_fk FOREIGN KEY employee_id reference department(department_id)
on update cascade
;

*/
– 添加级联操作:
ALTER TABLE employee ADD
CONSTRAINT empl_depa_fk FOREIGN KEY employee_id reference department(department_id)
ON UPDATE CASCADE ON DELETE CASCADE;

更新

on update cascode

删除

on delete cascode;

数据表的设计

多对1-------在多的一方建立一个外键字段,指向一的一方的主键

一对1----可以在任意一方建立唯一唯一的(unique)外键,指向另一方的主键

多对多 ------建立中间表, 中间表中建立两个外键字段,分别指向两个多表的主键,并且中间表的这两个外键可以是复合主键.

范式 —6大范式

空间换取

1NF:每一列都是不可分割的原子数据项;–一个表,

2NF:在1NF的基础上,非码属性必须完全依赖于(主属性或者主属性组的)码(在1NF基础上消除非主属性对主码的部分函数依赖); --------解决数据冗余,加一个表,因此 有两个表,一个表是主属性的码或者码组,一个是非码属性的表;

部分函数依赖也包括完全函数依赖;部分函数依赖的意思:其中一个非码属性依赖于主属性组的一个,

3NF:在2NF的基础上,任何非主属性不依赖于其他非主属性(在2NF基础上,消除函数传递依赖) -------进一步解决冗余,再加一个表,用来解决在非码属性表中存在的函数依赖关系,使得的更加的解除耦合,使得非码属性的列之间也没有2DF存在的问题.

BC范式:

本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!

设关系模式R<U,F>∈1NF,如果对于R的每个函数依赖X→Y,若Y不属于X,则X必含有候选码,那么R∈BCNF。

  • 中文名

    BC范式

  • 外文名

    The Boyce-Codd Normal Form

  • 释 义

    每个属性都不部分或传递依赖于码

  • 分 类

    数据库原理

函数简介

解释一下:对于关系模式R,若 R为第一范式,且每个属性都部分依赖于候选键也传递依赖于候选键,那么称R是BC范式 [1] 。

相对于第三范式,BC范式的要求更加严格。第三范式只是要求R为第二范式且非键属性不传递依赖于R的候选键,而BC范式则是对R的每个属性都做要求

5-17号

多表查询

例子


USE db2;
CREATE TABLE dept(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20));INSERT INTO dept(NAME) VALUES("开发部"),("市场部"),("财务部");
SELECT * FROM dept;CREATE TABLE emp1 (id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),gender CHAR(2),salary DOUBLE , -- 工资join_date DATE,dept_date INT,CONSTRAINT emp_dept_fk  FOREIGN KEY dept_date REFERENCES  dept(id));
ALTER TABLE emp CHANGE  dept_date dept_id INT;
INSERT INTO emp(NAME,gender,salary,join_date,dept_id)VALUES('送悟空','男',7200,'2013-2-24',1);
INSERT INTO emp(NAME,gender,salary,join_date,dept_id)VALUES('猪八戒','男',3600,'2010-12-02',2);
INSERT INTO emp(NAME,gender,salary,join_date,dept_id)VALUES('唐僧','男',9000,'2008-08-08',2);
INSERT INTO emp(NAME,gender,salary,join_date,dept_id)VALUES('白骨精','女',5000,'2015-10-07',3); INSERT INTO emp(NAME,gender,salary,join_date,dept_id)VALUES('蜘蛛精','女',4500,'2011-3-24',1);

笛卡尔积:

  • 有两个集合A,B,取这两个集合所有的组成情况
  • 完成多表查询.需要消除无用信息

多表查询的分类

  1. 内连接查询

    1. 交集部分
    • ​ 隐式内连接

      •   SELECT  * FROM (emp,dept);--  查询员工信息和部门的信息:SELECT * FROM emp,dept WHERE emp.dept_id = dept.id;--  查询员工的名称,性别,闭门表的名称,SELECT t1.name,-- 员工的姓名t1.gender,-- 员工的性别t2.name-- 部门的名字FROMemp t1,dept t2WHERE t1.dept_id = t2.id;

    ​ 2显示内链接

    ​ 语法: select * from t1 inner(可省略) join t2 on t2.dept_id = t1.id;

     SELECT * FROM emp [INNER] JOIN dept ON emp.dept_id = dept.id;
    
  2. 外连接查询

    1. 左连接

      1. 查询的左表所有的记录和交集部分

      2.  SELECT * FROM emp LEFT[outer] JOIN dept ON emp.dept_id = dept.id;
        
    2. 右链接

      1. 查询的右表所有的记录和交集部分
  3. 子查询

    查询嵌套的,

    ​ 子查询是单行单列的

    -- 1查询工资最高的员工信息
    -- 1 =2SELECT  MAX(salary) FROM emp;SELECT  * FROM emp WHERE emp.salary =9000;--  2查询工资最高的员工信息SELECT  * FROM emp WHERE emp.salary =(SELECT  MAX(salary) FROM em);-- 查询员工工资小于平均工资的人SELECT  * FROM emp WHERE emp.salary < (SELECT AVG(salary) FROM emp);

    子查询是多行单列的

    employee

    deptment

    bon

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rYgk49Ih-1628914377784)(C:\Users\12479\AppData\Roaming\Typora\typora-user-images\image-20210517111351232.png)]

    – 1只有or可以用in代替,如果是and,则不能用in代替;

    –2在什么之间可以用 sth betweeen …and —;

     -- 查询财务部和市场部所有员工的信息1方法一SELECT id FROM dept WHERE NAME ='财务部'OR NAME ='市场部';.......省略一步方法2SELECT * FROM emp  WHERE dept_id IN( SELECT id FROM dept WHERE NAME ='财务部'OR NAME ='市场部');

    子查询是多行多列的时候:

    – 查询员工入职日期是2011-11–11之后的员工信息和部门信息

    *SELECT FROM emp WHERE emp.join_date > ‘2011-11-11’ ;

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ErsYsmFY-1628914377787)(C:\Users\12479\AppData\Roaming\Typora\typora-user-images\image-20210517113450319.png)]

    ​ 子查询可以作为一张虚拟表参与查询

    -- 查询员工入职日期是2011-11--11之后的员工信息和部门信息-- 方法一--  子查询的作为一个虚拟表在与部门表查询
    SELECT * FROM emp;SELECT *FROM emp  WHERE  emp.join_date  >  '2011-11-11' ;--一SELECT  * FROMdept t1 ,(SELECT *FROM emp  WHERE  emp.join_date  > '2011-11-11')t2WHEREt2.dept_id = t1.id;
    ---- 方法二--      普通内连接SELECT * FROMdept t1,-- 部门表emp t2 -- 员工表
    WHERE t2.dept_id = t1.id   -- 在部门中的员工
    AND t2.join_date  >  '2011-11-11';  -- 入职时间大于2011的

查询语法

事务

1

start tanscation;

rollback;

commit;

START TRANSACTION;
SELECT * FROM accounts;
-- tansaction
-- rollback
UPDATE accounts SET balance WHERE NAME = ROLLBACK;COMMIT;

SELECT @@autocommit;

​ 当为1是,自动提交,0 为手动,需要手动写commit;

2

事务的四大特征:
  • 原子性automatic
  • 持久性:事务提交或者回滚,数据库会持久性保存数据
  • 隔离性isolation :多个事务相互隔离.
  • 一致性:事务操作前后,数据总量不变.
事务的隔离级别

​ 存在的问题

  • 1脏读:一个事务中,读到另一个事务中还未提交的数据;
  • 2不可重复读(虚读):在同一个事务,两次读取的数据不一样
  • 3幻读:另一个添加了一条数据,则另一个事务查询不到自己的修改
级别:

read uncommited 未提交

存在的问题:1脏读,2不可重复读,虚读,幻读3

read commited 读已提交

存在的问题2虚读,幻读3

repeatable read 可重复读(mysql)

存在的问题3幻读:另一个添加了一条数据,则另一个事务查询不到自己的修改

serializable 串行化(Orcal)

no 可以解决所有的问题,把表锁上,

注点意:隔离级别从小到大安全性越来越高,但是效率越来越低

查询

select @@tx_isolation

设置

set global transaction isolation level ----

DCL管理用户,授权,

管理用户

1创建用户

USE mysql;
SELECT * FROM USER;
-- 创建用户
CREATE USER'zhangsan'@'localhost' IDENTIFIED BY'123';
-- 可以用'%'代替localhost
-- 删除用户
DROP USER 'zhangsan'@'localhost' IDENTIFIED BY'123';

2修改用户密码;

​ 两个办法

3修改root密码

授权


use db1;
insert into stu(id,name,age) values(3,'张',33);
select * from stu;
insert into stu  values (1,'张无',32,null,null,34);
INSERT INTO stu  VALUES (2,'张三丰',32,"2322-11-22",NULL,34);
delete from stu where id =1;
truncate table stu;-- update 不用 table
update stu set age = 113, score  = 130 where id =2;
select * from stu;
select  id from stu;
create table student(
id int,
age int,
sex varchar(23),
address varchar(34),
math double,
english double
);
insert into student values(8,32,"男","北京",2,98);
insert into student values(9,35,"女","天津难",21,25);
INSERT INTO student VALUES(7,53,"女","天津",67,54);
`student``stu``student`
select distinct address from student;
select  distinct name ,address from student;
select  id,math as T恤,math  +ifnull(english,0) as 总共 from student;
select * from student where id <>3;
--查询年龄在20-30的;
select * from student where id >1 and id <3;
select * from student  where id between 1 and 3;
select * from student where id =1 or id =3 or id =4;
SELECT * FROM student WHERE id in(1,3,4);
select * from student where english  is not  null ;
select * from student  where  age   like '_2%';
select * from student where  address like'%津%';select *from student  order by english ASc ,math ASC ;--ASc升序,desc降序,两个排序的时候就当第一个条件相同时,按照第二个规则select count(english) from student;  --合函数排除了null.不计入里面.select  count(ifnull(math,1)) from student;
select *from student;
select count(*)from student;
select min(math) from student;
select sum(english) from student;
select avg(math) from student;
-------------5.16号
select    sex,avg(math) , count(id) from student group by sex ;-- 写count聚合函数就行,group
-- 分组函数的前面不要写基本列除了分组的那个, group/*select sex,Avg(math), count(id)  from  student where math > 2 group by sex having count(id)>2;
/--where 和having的区别:where在之前限定,若不满足则不参与分组 ,having在之后,都会参与,只是是否会显示
--2:where之后不能跟聚合函数,having可以跟;
SELECT sex,AVG(math), COUNT(id)个数 FROM  student WHERE math > 2 GROUP BY sex HAVING 个数>2;
*/
/*
--分页查询
limit
*/select * from student limit 0,3;   -- 第一页SELECT * FROM student LIMIT 3,3; -- 第二页/*公式:开始的索引 = (当前的页码-1)*每页显示的条数limit是一个"方言",只在mysql中有.*/ /*
约束 主键约束 primary key ;非空约束  not null唯一性; unique外键约束: foreign key; foreign*/ create table stu1(id int,name varchar(20) not null  /*--非空*/);select *from stu1;-- 非空的删除,比较正规的看起来alter table stu1  modify name  varchar(20);--alter table stu1  add address  varchar(21) not null;drop table stu1;create table stu1 (id int,phone_number int unique); -- 唯一性select * from stu1;insert  into stu1 values (1,23);INSERT  INTO stu1 VALUES (2,3);`db1`-- 删除唯一性约束(不一样)-- 注意!!!!!!!!!alter table stu1 drop index phonenuber;/*
primary key 非空且唯一
表中的唯一*/
-- 主键的删除
ALter table  stu1 drop  primary key;
-- 创建字段之后添加主键功能
ALter table stu1  modify id int primary key;/*
自动增长auto_increment;*/create table  stu2(id int primary key auto_increment,name varchar(20));-- 自动增长的删除alter table stu2 modify id int;-- 添加alter table stu2 modify id int auto_increment;select * from stu2;constraint/*外键foreign key ;## 外键保证数据的完整性,正确性.****constraint 连接constraint; foreign key**
1**外键: 格式-  constraint 外键名称 foreign key (外键列名称) reference 主表名称(主表列名称)**constraint   empl_depa_fk   foreign key  employee_id reference department(department_id);**外键可以是null,但是不能为另外一个表中不存在的.*/-- 写在创造表的那一栏constraint   empl_depa_fk   foreign key  employee_id reference department(department_id);-- 删除外键alter table  employee drop foreign key  emlp_depa_fk;-- 添加外键(不是修改)alter table employee add   CONSTRAINT   empl_depa_fk   FOREIGN KEY  employee_id reference department(department_id);/*级连操作ALTER TABLE employee ADD  CONSTRAINT   empl_depa_fk   FOREIGN KEY  employee_id reference department(department_id)  on update cascade;*/-- 添加级联操作:ALTER TABLE employee ADD  CONSTRAINT   empl_depa_fk   FOREIGN KEY  employee_id reference department(department_id)on update cascade  on delete cascade;-- 5.17use db2;
create table dept(id int primary key auto_increment,name varchar(20));insert into dept(name) values("开发部"),("市场部"),("财务部");
select * from dept;create table emp1 (id int primary key auto_increment,name varchar(20),gender char(2),salary double , -- 工资join_date date,dept_id int,constraint emp_dept_fk  foreign key dept_date references  dept(id));
alter table emp change  dept_date dept_id int;
insert into emp(name,gender,salary,join_date,dept_id)values('送悟空','男',7200,'2013-2-24',1);
INSERT INTO emp(NAME,gender,salary,join_date,dept_id)VALUES('猪八戒','男',3600,'2010-12-02',2);
INSERT INTO emp(NAME,gender,salary,join_date,dept_id)VALUES('唐僧','男',9000,'2008-08-08',2);
INSERT INTO emp(NAME,gender,salary,join_date,dept_id)VALUES('白骨精','女',5000,'2015-10-07',3); INSERT INTO emp(NAME,gender,salary,join_date,dept_id)VALUES('蜘蛛精','女',4500,'2011-3-24',1);select * from emp;select * from dept;CREATE TABLE emp1 (id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),gender CHAR(2),salary DOUBLE , -- 工资join_date DATE,dept_d INT,CONSTRAINT emp_dept FOREIGN KEY dept_d references dept(id));select  * from (emp,dept);--  查询员工信息和部门的信息:select * from emp,dept where emp.dept_id = dept.id;--  1查询员工的名称,性别,闭门表的名称,select t1.name,-- 员工的姓名t1.gender,-- 员工的性别t2.name-- 部门的名字fromemp t1,dept t2where t1.dept_id = t2.id;--  2查询员工的名称,性别,闭门表的名称,select * from emp inner join dept on emp.dept_id = dept.id;-- 查询左集合和交集的信息SELECT * FROM emp left JOIN dept ON emp.dept_id = dept.id;-- 查询工资最高的员工信息select  max(salary) most from emp;select  * from emp where emp.salary =9000;-- 查询工资最高的员工信息SELECT  * FROM emp WHERE emp.salary = (SELECT  MAX(salary) FROM emp);-- 查询员工工资小于平均工资的人select  * from emp where emp.salary < (select avg(salary) from emp);-- 查询财务部和市场部所有员工的信息1select id from dept where name ='财务部'or name ='市场部';方法2select * from emp  where dept_id in( SELECT id FROM dept WHERE NAME ='财务部'OR NAME ='市场部');-- 查询员工入职日期是2011-11--11之后的员工信息和部门信息-- 方法一--     子查询的作为一个虚拟表在与部门表查询
select * from emp;select *from emp  where  emp.join_date  >  '2011-11-11' ;select  * fromdept t1 ,(SELECT *FROM emp  WHERE  emp.join_date  > '2011-11-11')t2wheret2.dept_id = t1.id;-- 方法二--     普通内连接select * fromdept t1,-- 部门表emp t2 -- 员工表
where t2.dept_id = t1.id   -- 在部门中的员工
and t2.join_date  >  '2011-11-11';  -- 入职时间大于2011的

询员工的名称,性别,闭门表的名称,
select * from emp inner join dept on emp.dept_id = dept.id;

– 查询左集合和交集的信息

SELECT * FROM emp left JOIN dept ON emp.dept_id = dept.id;

– 查询工资最高的员工信息

select max(salary) most from emp;
select * from emp where emp.salary =9000;

– 查询工资最高的员工信息
SELECT * FROM emp WHERE emp.salary = (SELECT MAX(salary) FROM emp);

– 查询员工工资小于平均工资的人
select * from emp where emp.salary < (select avg(salary) from emp);

– 查询财务部和市场部所有员工的信息
1
select id from dept where name ='财务部’or name =‘市场部’;
方法2
select * from emp where dept_id in( SELECT id FROM dept WHERE NAME ='财务部’OR NAME =‘市场部’);

– 查询员工入职日期是2011-11–11之后的员工信息和部门信息
– 方法一
– 子查询的作为一个虚拟表在与部门表查询
select * from emp;

select *from emp where emp.join_date > ‘2011-11-11’ ;
select *
from
dept t1 ,
(SELECT *FROM emp WHERE emp.join_date > ‘2011-11-11’)t2
where
t2.dept_id = t1.id;
– 方法二
– 普通内连接
select *
from
dept t1,-- 部门表
emp t2 – 员工表
where
t2.dept_id = t1.id – 在部门中的员工
and
t2.join_date > ‘2011-11-11’; – 入职时间大于2011的

#

数据库_初识mysql相关推荐

  1. navicat mysql两张表建立联系_初识MySQL

    初识MySQL 为什么学习数据库 1.岗位技能需求 2.现在的世界,得数据者得天下 3.存储数据的方法 4.程序,网站中,大量数据如何长久保存? 5.数据库是几乎软件体系中最核心的一个存在. 什么是数 ...

  2. mysql核心数据库_从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程...

    从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程 课程目录 (1) 01MySQL基础_课程引入.avi (2) 02MySQL基础_为什么学习 ...

  3. MySQL数据库之——初识MySQL

    1,初识MySQL javaEE: 企业级Java开发 Web 前端(页面:展示,数据!) 后台(连接点:连接数据库jdbc,连接前端(控制,控制视图跳转,和给前端传递数据)) 数据库(存数据,txt ...

  4. 初识mysql实验小结_初识mysql学习笔记

    使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...

  5. MySQL数据库1初识MySQL

    Mysql 一.数据库是什么? 字面意思:存数据的仓库 二.为啥使用数据库?(*) Excel的缺点: 1.管理不了大量的数据(10w量级以上的数据) 2.不能并发操作同一个数据表格 3.数据库支持一 ...

  6. 程序安装mysql数据库_安装Mysql数据库

    1.安装Mysql数据库 ①下载Mysql数据包 wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x8 ...

  7. mysql 结构化数据库_【MySQL】——MySQL数据库和SQL结构化查询语言概述

    [MySQL]--MySQL数据库和SQL结构化查询语言概述 [MySQL]--MySQL数据库和SQL结构化查询语言概述 文章目录数据库和SQL语言[1]数据库概述 [2]SQL语言 [3]MySQ ...

  8. mysql刷新当前数据库_看看MySQL数据库高级操作

    免费资源网 - https://freexyz.cn/ 文章目录 数据表高级操作 准备工作:安装MySQL数据库 一.克隆表 方法一 方法二 二.清空表,删除表内的所有数据 方法一 方法二 三.创建临 ...

  9. mysql怎么用sb文件_初识mysql数据库

    mysqld install :找到你的库 net start mysql ;启动mysql的服务端(server) mysql -uroot -p :启动mysql的客户端(Client) exit ...

最新文章

  1. 编程新手真言:不要去干追逐技术的蠢事,你只是用户,只需学会一门工具开发....
  2. audio 上一首 下一首 自定义样式_我们的歌:盛典即将来临,勤深深还有一首歌,这场表演值得期待...
  3. 必须正确理解的---ng指令中的compile与link函数解析
  4. qt 怎么设计个性化的滑块_小小滑块大大学问,你真的会用滑块了吗?
  5. Smarty的assign定义变量
  6. ubuntu之ufw防火墙
  7. Modelsim-Altera仿真设置
  8. 一年太久,研究员决定不等补丁直接披露 Safari 0day 详情
  9. 用a卡还是n卡_谁是玩家最爱的显卡?N卡优势太大,GTX 1060秒A卡全家
  10. 发生冲突未及时离场 绿军大将被NBA罚款3.5万美元
  11. ​从 Spark Streaming 到 Apache Flink:bilibili 实时平台的架构与实践
  12. html阅读器 怎么卸载,internetexplorer怎么卸载
  13. 如何用Word打开PDF文件?
  14. 解决mac按键精灵鼠标位置不准(连点器)
  15. linux网桥内核实现分析,Linux网桥实现分析
  16. 魔兽争霸无法在这个计算机,W7系统魔兽争霸3不能初始化DirectX怎么办
  17. 【知识兔】自学Excel之11:模板使用和打印设置
  18. 酸菜鱼,新一代微商暴富大机会?
  19. 枣庄高防php主机,枣庄机房_枣庄联通机房_枣庄BGP高防机房
  20. Firefox修改快捷键插件SakaKey使用教程

热门文章

  1. maven 整合ueditor富文本编辑器
  2. MOSS如何迅速的修改个人信息
  3. simotionD425的IDevice及相关应用
  4. think python学习心得-(6)利用words.txt来进行填字游戏
  5. 电脑误删内存卡照片如何恢复?(三个步骤)
  6. SpringBoot(三):Respond封装
  7. Python使用format输出时还想输出‘{‘,‘}‘的方法
  8. 广州水质检测实验室装修要求
  9. 词根词缀|sci/scribe/sect/sed等词根衍生单词
  10. 开发者真正想要得到的是什么?