mysql数据库语言和示例题操作

*数据库
        数据前后台交互介绍
        
        基本知识
            关系型数据库管理系统    ===  RDBMS   === dbms
                以行和列的形式存储数据   == 二维表【表名user   列名 id name age sex  height address  .  数据】
                
                【表名,字段,记录】
                
                
                user 表中保存的数据都是和用户相关的数据  
                多张表 构成了一个数据库
                多个库 组成了一个项目
                
            非关系型数据库管理系统 
            
        sql语言
            机构化查询语言
            
            ddl    数据   定义  语言
            dml    数据   操作  语言     *【增   删   改 】   真实性操作  数据会被改变    更新原数据操作
                【dql原来属于dml 】
            dql    数据   查询  语言     ********************************   虚拟操作   原数据是不会被修改的
            dcl    数据   控制  语言
            
    *mysql数据库的安装和卸载
        数据库安装好之后需要检查
            win + r    输入  cmd  
            mysql -uroot -proot
            
            
            2:去看数据库的服务
                搜索本地服务   找到   数据库否是是否存在并起开   
                
                
        卸载
            控制面板 
            
        安装操作
            见视频
            密码一定要写小写的root  
            安装的时候一定要改路径
            
            
        环境变量配置
            首先我们应该找到我们安装的位置
            D:\53ruanjian\MySQL\MySQL Server 5.7\bin
            此电脑 右键 ---- 属性------高级系统设置------环境变量------系统环境变量 ----新建-----变量名是  MYSQL_HOME   值就是安装路径
            ----》path   中点击新建   ----》%MYSQL_HOME%   将他上移到最前面    保存关闭
            再重新打开一个黑窗口输入指令   mysql -uroot -proot
        
            
    *DDL介绍
        数据的定义语言     
            数据库    sql语句是不区分大小写的
            create database Colin;    数据库的创建
            show databases;    展示所有的数据库    里面自带有四个  不  要  碰!!!!!!!!!
                错误编码   1064   sql语法有问题
                
            一般我们认为比较厉害的人用的都是大写 
            数据库切换
            use colin  数据库的名字
            
            select database();   查看当前是在哪一个数据库中
            
            select * from 显示表数据
            删除库
            drop database zhangsan;
                
            表 列     
            
            
Day10-Mysql数据库的介绍和使用
    *DDL
        表的创建
        create table student
        create table stu       表名和库名+列名都是自定义的   (只能写字母)_
        数据添加是不使用DDL 
        需要使用DDL语言添加表的列名
        create table stu(sid 整数,sname 可变长度字符串,sage 整数,sadd 可变长度字符串,ssex 固定长度字符串);
        create table stu(sid int,sname varchar(100),sage int,sadd varchar(100),ssex char(2));
        
        表创建中使用到的数据类型介绍
            int(长度) == 长度不写幽默值   int   int(6)
            float/double()   小数 == 浮点型     float(5,2)   999.99     0.01
            char(2)   表示固定长度字符串    一个汉字    男_        char(255)
            varchar(3)   表示可变长度字符串    最大长度不能超过3    男      varchar(65535)
            time    时分秒
            date    年月日
        
        表的查看
            show tables;
        查看表结构
            desc stu;
            
        修改表
            alter table 表名 
            添加列
                alter table stu add sheight float(5,2)
                alter table stu modify sid varchar(10);
        
        删除表
            drop table te
            
            注意:库名和表名不要一样  
            
    *表约束
        约束表中的数据
        1:主键约束
            primary key
            特性 : 给某一列设置一个主键约束的时候 
                    这一列就必须 
                        不能为空
                        值不能重复
                        被别人(外键)引用
                
            create table st 1(sid int primary key,sname varchar(100),sage int,sadd varchar(100),ssex char(2));
            删除主键
                alter table stu1 drop primary key
            
        2:主键自增约束
                是在主键列的基础上去添加一个新的约束
                auto_increment
            前提   sid已经是主键
            alter table stu1 modify sid int auto_increment
            另外一种
            create table stu1(sid int primary key auto_increment,sname varchar(100),sage int,sadd varchar(100),ssex char(2));
            
        3:唯一约束
                让值不能够重复出现   
                name
                    unique 关键字
                    
            create table stu1(sid int primary key auto_increment,
                              sname varchar(100) unique,
                              sage int,
                              sadd varchar(100),
                              ssex char(2));
            
        4:非空约束
            值不能为空
            not  null
            
            create table stu1(sid int primary key auto_increment,
                              sname varchar(100) unique,
                              sage int not null,
                              sadd varchar(100),
                              ssex char(2));
            
            
    *DML  
        数据的操作语言   只对数据有操作效果
            
            insert  插入  增
            update  更新   修改
            delete  删除   【drop ==DDL   delete == dml 】
            
        增
            insert into 表名 
            单数据添加
                指定列添加
                    insert into 表名(好多的列名,也可以只写一个列名,列名之间用逗号分开) values(写的是值,值和值之间使用逗号分开,值出现的个数和顺序参照列的个数和顺序)

                基本添加 
                    insert into 表名 values(值数据就应该按照 原表中应有的列的个数和顺序编写)
                    
            多数据添加
                指定列
                insert into 表名(列名,列名,列名,。。。。) values(值,值,值,。。。。),(值,值,值,。。。。),(值,值,值,。。。。),......
                基本
                insert into 表名 values(值,。。。。。。),(值,。。。。。。),(值,。。。。。。),.....
                
                
            注意事项
                值:字符串类型的和时间类型  全都要加上引号
                列: 不需要加引号   直接写
                
            
        更新
            update 表名 set  列名 = 值
            
            修改  性别为男
            update stu set ssex = '男'   结果是都改成了男
            
            修改 性别位女   需要加条件    给谁的性别修改
            条件引出的关键字 where
            update stu set ssex = '女' where sname = 'lili'
            
            如果多列需要同时修改的话 那么列和列之间我们使用逗号分开
        
            修改练习
                员工表
                
                    
                将姓名为张三的员工薪水修改为3001元。
                    update employee set salary = 3001 where name = '张三';
                将姓名为李四的员工薪水修改为4000元,job改为ccc。
                    update employee set salary = 4000 , job = 'ccc' where name = '李四'
                将王五的薪水在原有基础上增加1000元。
                    update employee set salary = salary+1000 where name = '王五'
                将所有员工薪水修改为5000元。
                    update employee set salary = 5000;
        
        
        删除
            delete from 表名  
                整张表的数据全部删除  表还是存在的  
                
            delete from 表名 where 条件 (列名 = 列值)
            
        
        
        
    *DQL
    
        select  查询    【DQL】
            全查 
                select * from 表名
                select * from stu
            指定列
                select salary from employee;
                select 你要查询的内容 from 你要查询的表 
            去重复查询
                distinct 
                select distinct job from employee;
                
            列运算
                ifnull(有null值的列名,0)    如果有null值的列 进行计算的时候 我们需要让null转换成0即可
    
        模糊查询
            like
            特殊符号   %  表示的是一个或者多个或者0个字符
                       _ 表示一个字符
            
            
            name like "_三"   2
            name like "_三_"  3
            name like "三_"   2
            name like "_"     1
            name like "__"    2
            name like "___"   3
            
            
            name like "%三"  但是只要最后一个字是三就能找到 
            name like "%三%"   只要有三就能找到       ***************************88
            name like "三%"   只要第一个字是三就能找到
            name like "%"  所有内容   
            
            select * from employee where name like '%三%';
            
            
        关系运算符
            where  后边 作为条件的判断依据
                <    >   <=    >=    =   !=
            select * from employee where id >= 5;
            
            
        逻辑运算符 
            and    并且   和         
            or     或者

            至少要有两个及以上的条件
             select * from employee where salary < 5000 or resume >5000;
             select * from employee where salary > 500000 or resume >5000;
            
        分页数据查询操作
            sql 语句   -----》所有的RDBMS
            每一个数据中都有他自己的   方言 
            limit 就属于mysql数据的方言
            
            limit 0,5  
                从0开始展示,一页展示的条数
                
            select * from employee limit 0,3;    
            123
            456
            789
            10
            
            278页数据开始的位置是多少?
            (当前页号 - 1 ) *一页显示的条数
            (278-1)*3 = 831
            
        范围查询
            between ... and ...
            
            select * from employee where salary >10000 or salary < 1000;
            select * from employee where salary < 10000 and salary > 1000;
            
            select * from employee where salary between 1000 and 10000;
            
            
            in 
            select * from employee where name = "张三";
            
            
            
        排序查询
            升序 默认 asc
            降序      desc
            
            order by
             select * from employee order by salary asc;
             select * from employee order by salary asc,resume desc;  多条件排序的时候只有在第一个条件不能够排序的前提下才会执行第二个条件排序
            
            
        聚合函数
            函数 = 方法 = 名+( )
            小括号中应该写的是 计算的列名 
            max()     求最大数
            min()     求最小数
            count()    求总条数    NULl不进行统计    但是 我们要是求一下这张表中一共有多少数据的话 使用的是count(*) 或者count(1)
            avg()     求平均数
            sum()     求总和
            
            select max(salary),min(resume),sum(salary),avg(salary),count(*) from employee;
            
            
        都取别名
            select max(salary) 最大工资,min(resume) 最小奖金,sum(salary) as 总工资,avg(salary) 平均工资,count(*) as 总条数 from employee;
            
            
        分组查询
            group by
            根据有重复的数据列来进行分组   这样分组是有意义的
            但是分组查询的内容和上面就不一样了
            只能查询    分组的列,以及  聚合函数
            
            还有一个关键字   having   他是一个条件引出关键字 
            
            where是分组前的条件引出   在where的后面不能去写 聚合函数 (不能使用聚合函数作为条件)
            having 是分组后的条件引出关键字  后面可以使用聚合函数  
            
            有group by 不一定会有having 
            但是 有having就必须要分组   就是有group by 

                select product,count(*) from orders group by product;
                
                将商品进行分类并统计每种商品的销售总额    
                select product,sum(price) from orders group by product;
                
            
        子查询: 
            当一个sql查询语句中出现了多个select关键字的时候  他就是子查询
             查询购买了几类商品,
            
                select count(*) from (select product from orders group by product) as a
            
                并且每类总价大于100的商品
                
                select product,sum(price) from orders group by product having sum(price) > 100;
            
            
Day11-数据库基本介绍
    *数据库连接工具的使用
        修改安装路径
        进行破解
            
    *工具的使用介绍
        数据导入操作   sql文件
    
    *表关系介绍
        一对多     多对一
        一对一
        多对多
        
        
        表和表之间的关系创建是通过主外键来联系的
        
        1:主键任何表都有      少的一方 
        2:外键不一定要有      多的一方
            外键 可以有好多列, 可以为空,可以重复,必须引用主键值
        
        多的一方的外键去引用少的一方的主键值
            
            
        多对多
        1:主键
        2:外键
        3:会存在第三张表
            中间表就是第三张表  里面保存的是 两外两张表的外键 里面引用的是他们的主键值
        
        三张表查询
            不管有几张表 重点是找到主键和外键
            联查时给他们加条件
                两张表一个条件 主键 = 外键
                三张表 两个条件 也是主键+外键
            
            
        一对一
        1:主键
        2:外键  不能为空   不能重复   外键引用主键值 
        
        主键列就是外键列
            
    *多表联查
        笛卡尔  人名
        积   
        
        两表联查得到的乘积就是笛卡尔积 
        这个乘积中有很多无效额数据 我们不使用
        我们需要相办法去除 无效的数据
            给他加条件
            主键 = 外键
            
        select * from customer c,orders o where c.cid = o.cid
            mysql的方言版
            
        正式版本
        内连接
            select * from customer c inner join orders o on c.cid = o.cid
            
            两张表中查询的时候一定都要满足条件 
            满足条件的数据才会被查询出来 
            
            
        外连接
            左外连接
            select * from customer c left outter join orders o on c.cid = o.cid
            
            左边的表和右边的表 
            以左边的表为主表 (所有数据都要)
            右边的表 辅助表 (用到了我就查  不用 我就不查)
            
            右外连接
            select * from customer c right outter join orders o on c.cid = o.cid
            以右边的表为主表 (所有数据都要)
            左边的表 辅助表 (用到了我就查  不用 我就不查)
            
        
        内外连接的区别
            内连接返回两张表满足条件的所有数据
            外连接除了返回两张表满足条件的所有数据,还会返回左表或者右表不满足条件的数据
        左外连接和右外连接的区别
            左外连:返回满足条件的所有记录,同时返回左表中剩余的其他记录
            右外连:返回满足条件的所有记录,同时返回右表中剩余的其他记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值