• 初识MySQL笔记


    一、建库建表

    1).新建数据库,表之前先判断是否存在(if exists)
    2).数据库建好之后需要使用(use 数据库名)
    3).主键:primary key
    4).唯一:unique
    5).自增:auto_increment
    6).外键添加:constraint FK_empId foreign key(empId) references deptInfo(empId)
    7).设置引擎:engine=innodb default charset=UTF8 auto_increment=1001

    二、数据库的增删查改

    1).增:insert into 表名 values();
    2).删:delete from 表名 where 条件;
    3) .查:select * from 表名 where 条件;
    4).改:update 表名 set ... where 条件;

    -- 判断数据库是否存在
    DROP DATABASE IF EXISTS EMPDB;
    
    -- 新建数据库
    CREATE DATABASE EMPDB;
    
    -- 使用数据库
    USE EMPDB;
    
    -- 判断表DeptInfo是否存在
    DROP TABLE IF EXISTS DeptInfo;
    
    -- 新建表
    CREATE TABLE DeptInfo(
       DeptID VARCHAR(10) PRIMARY KEY,
       DeptName VARCHAR(20) NOT NULL UNIQUE
    )ENGINE=INNODB CHARSET=utf8;
    
    -- 判断表EmpInfo是否存在
    DROP TABLE IF EXISTS EmpInfo;
    
    -- 新建表
    CREATE TABLE EmpInfo(
       EmpID INT PRIMARY KEY AUTO_INCREMENT,
       EmpName VARCHAR(20) NOT NULL,
       EmpSex VARCHAR(2) NOT NULL DEFAULT '',
       EmpBirth DATETIME NOT NULL,
       EmpTel VARCHAR(20) NOT NULL UNIQUE,
       DeptID VARCHAR(10) NOT NULL,
       CONSTRAINT FK_DeptID FOREIGN KEY(DeptID) REFERENCES DeptInfo(DeptID)
    )ENGINE=INNODB CHARSET=utf8 AUTO_INCREMENT=1001;
    
    -- 添加初始数据
    INSERT INTO DeptInfo VALUES('A02','财务部');
    INSERT INTO DeptInfo VALUES('A05','工程部');
    INSERT INTO DeptInfo VALUES('A01','人事部');
    INSERT INTO DeptInfo VALUES('A03','销售部');
    INSERT INTO DeptInfo VALUES('A04','研发部');
    
    INSERT INTO EmpInfo VALUES(DEFAULT , '陈二' , '' , '1991-05-02' , '189199' , 'A04');
    INSERT INTO EmpInfo VALUES(DEFAULT , '陈七' , '' , '1991-01-13' , '189111' , 'A02');
    INSERT INTO EmpInfo VALUES(DEFAULT , '黄二' , '' , '1991-03-01' , '189321' , 'A03');
    INSERT INTO EmpInfo VALUES(DEFAULT , '李四' , '' , '1991-02-08' , '189456' , 'A05');
    INSERT INTO EmpInfo VALUES(DEFAULT , '刘一' , '' , '1991-07-07' , '189654' , 'A05');
    INSERT INTO EmpInfo VALUES(DEFAULT , '钱七' , '' , '1991-05-23' , '189331' , 'A02');
    INSERT INTO EmpInfo VALUES(DEFAULT , '孙八' , '' , '1991-09-09' , '189122' , 'A04');
    INSERT INTO EmpInfo VALUES(DEFAULT , '王五' , '' , '1991-11-06' , '189789' , 'A05');
    INSERT INTO EmpInfo VALUES(DEFAULT , '吴十' , '' , '1991-09-28' , '189166' , 'A01');
    INSERT INTO EmpInfo VALUES(DEFAULT , '杨九' , '' , '1991-01-14' , '189177' , 'A01');
    INSERT INTO EmpInfo VALUES(DEFAULT , '张三' , '' , '1991-01-01' , '189123' , 'A01');
    INSERT INTO EmpInfo VALUES(DEFAULT , '赵六' , '' , '1991-10-02' , '189987' , 'A03');
    INSERT INTO EmpInfo VALUES(DEFAULT , '周八' , '' , '1991-04-21' , '189661' , 'A03');
    INSERT INTO EmpInfo VALUES(DEFAULT , '朱三' , '' , '1991-08-08' , '189551' , 'A05');
    
    -- 查询
    SELECT * FROM DeptInfo;
    SELECT * FROM EmpInfo;
    
    -- 添加一个新部门,生产部,部门编号A06
    INSERT INTO DeptInfo VALUES('A06','生产部');
    
    -- 添加一个新员工信息,该员工分配到销售部
    INSERT INTO EmpInfo VALUES(DEFAULT , '田七' , '' , '1991-07-24' , '189591' , 'A03');
    
    -- 修改刚新添加的员工的性别和出生日期
    UPDATE EmpInfo SET EmpSex='',EmpBirth='1991-08-01' WHERE EmpName='田七';
    
    -- 删除这个新员工的信息
    DELETE FROM EmpInfo WHERE EmpName='田七';
    
    -- 查询显示所有员工的编号,姓名,性别
    SELECT ALL EmpID,EmpName,EmpSex FROM EmpInfo; 

    三、简单常用查询语句

    1).设置各种字段的别名(as)
    2).All关键字(不写编辑器自动添加)
    3).limit关键字(MySQL不支持top 关键字,SQL Server支持top关键字)
    4).distinct关键字:过滤重复记录
    5).where关键字:条件
    6).between...and...
    7) .in / not in
    8) .逻辑运算(and not or)
    9).like关键字(模糊查询)
    10).order by(desc:降序 asc:升序)
    11) .对查询结果进行计算(sum,avg,max,min)
    12).count统计数据
    13).内部链接查询(inner join on)
    14).外部链接查询(left join on,right join on)

    -- 如果empDB数据库存在则删除掉
    DROP DATABASE IF EXISTS empDB;
    
    -- 创建数据库
    CREATE DATABASE empDB;
    
    -- 使用empDB库
    USE empDB;
    
    -- 如果departinfo表存在则删除掉
    DROP TABLE IF EXISTS departinfo;  
    
    -- 在empDB数据库中创建表
    CREATE TABLE departinfo(
    deptId VARCHAR(11) PRIMARY KEY, -- 部门的编号 字符串 主键
    deptName VARCHAR(32) NOT NULL   -- 部门的名称 字符串 不为空
    )ENGINE=INNODB DEFAULT CHARSET=UTF8;
    
    -- 如果empinfo表存在则删除掉
    DROP TABLE  IF EXISTS empinfo;
    
    -- 在empdb数据库中创建empinfo表
    CREATE TABLE empinfo(
    empid INT PRIMARY KEY AUTO_INCREMENT, -- 员工的编号 字符串 主键
    empName VARCHAR(20) NOT NULL,  -- 员工的名字 字符串不为空
    empSex VARCHAR(2) NOT NULL DEFAULT '', -- 员工的性别 字符串 不为空 默认男
    empBirthday DATE NOT NULL,-- 员工的生日 日期类型 不为空
    empTel VARCHAR(20) NOT NULL UNIQUE, -- 员工的电话 字符串不为空 不重复
    deptId VARCHAR(11) NOT NULL,
    score DOUBLE,
    CONSTRAINT FK_deptId FOREIGN KEY(deptId) REFERENCES departinfo(deptId)
    )ENGINE=INNODB DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1001;
    
    -- 添加初始化的测试数据
    INSERT INTO departinfo VALUES('A01','开发部');
    INSERT INTO departinfo VALUES('A02','测试部');
    INSERT INTO departinfo VALUES('A03','人事部');
    INSERT INTO departinfo VALUES('A04','开发部');
    INSERT INTO departinfo VALUES('A05','测试部');
    INSERT INTO departinfo VALUES('A06','人事部');
    
    INSERT INTO empinfo VALUES(DEFAULT,'李丰',DEFAULT,'2001-1-1','1234567894','A01',45);
    INSERT INTO empinfo VALUES(DEFAULT,'李佳伟','','2001-1-1','1234567895','A02',85);
    INSERT INTO empinfo VALUES(DEFAULT,'李江岚','','2002-1-1','1234567896','A03',87);
    INSERT INTO empinfo VALUES(DEFAULT,'李丰',DEFAULT,'2001-1-1','1234517894','A01',78.5);
    INSERT INTO empinfo VALUES(DEFAULT,'李佳伟','','2001-1-1','1234527895','A02',75.6);
    INSERT INTO empinfo VALUES(DEFAULT,'李江岚','','2002-1-1','1234467896','A03',95);
    INSERT INTO empinfo VALUES(DEFAULT,'李丰',DEFAULT,'2001-1-1','1234545894','A01',70);
    INSERT INTO empinfo VALUES(DEFAULT,'李佳伟','','2001-1-1','1278567895','A02',79);
    INSERT INTO empinfo VALUES(DEFAULT,'李江岚','','2002-1-1','1234561196','A03',97);
    
    -- 查询数据
    SELECT * FROM departinfo;
    SELECT * FROM empinfo;
    
    -- limit关键字
    SELECT empid AS 员工编号 ,empName AS 员工姓名 FROM empinfo LIMIT 0,2;
    
    -- as关键字
    SELECT empid AS 员工编号 ,empName AS 员工姓名 FROM empinfo;
    
    -- 字段的计算 (字符串拼接)
    SELECT empid+'-'+empName AS '员工编号-员工姓名' FROM empinfo;
    
    -- all关键字
    SELECT ALL empid AS 员工编号 ,empName AS 员工姓名 FROM empinfo;
    
    -- distict关键字
    SELECT DISTINCT deptName AS 部门名称 FROM departinfo;
    
    -- where关键字
    SELECT empName AS 员工姓名 FROM empinfo WHERE empid > 1005;
    
    -- between... and...
    SELECT empid AS 员工编号 ,empName AS 员工姓名 FROM empinfo WHERE empid BETWEEN 1003 AND 1006;
    
    -- in / not in
    SELECT empid AS 员工编号 ,empName AS 员工姓名 FROM empinfo WHERE empid IN(1001,1003,1008);
    
    -- 逻辑运算(and or not)
    SELECT empid AS 员工编号 ,empName AS 员工姓名 FROM empinfo WHERE empSex= AND 
    
    -- like关键字(模糊查询)
    SELECT * FROM empinfo WHERE empName LIKE('%江%');
    
    -- order by排序 (desc 降序 asc 升序)---也可以对字符串类型的数字进行排序
    SELECT * FROM empinfo ORDER BY empid DESC;
    SELECT * FROM empinfo ORDER BY empTel ASC;
    
    -- 对查询结果进行计算(sum avg min max)
    SELECT SUM(score) AS 总成绩 FROM empinfo;
    SELECT AVG(score) AS 平均分 FROM empinfo;
    SELECT MAX(score) AS 最高分 FROM empinfo;
    SELECT MIN(score) AS 最低分 FROM empinfo;
    
    -- count统计行数
    SELECT COUNT(*) AS 学生数 FROM empinfo;
    SELECT COUNT(empid) FROM empinfo;
    
    -- 内部链接查询
    SELECT * FROM departinfo INNER JOIN empinfo ON departinfo.deptId=empinfo.deptId;
    SELECT * FROM departinfo , empinfo WHERE departinfo.deptId=empinfo.deptId;
    
    -- 外部链接查询
    SELECT * FROM departinfo LEFT JOIN empinfo ON departinfo.deptId=empinfo.deptId;
    SELECT * FROM departinfo RIGHT JOIN empinfo ON departinfo.deptId=empinfo.deptId;
  • 相关阅读:
    rails的字符编码
    rails中ActionController::InvalidAuthenticityToken解决办法
    ruby on rails 实战(二)
    ruby on rails 实战(一)
    朴素贝叶斯趣味挑战项目
    python re的findall和finditer
    使用Naive Bayes从个人广告中获取区域倾向
    第五周(2.5~2.11)
    第四周(1.29~2.4)
    第三周(1.22~1.28)
  • 原文地址:https://www.cnblogs.com/IT_CH/p/13447578.html
Copyright © 2020-2023  润新知