栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

数据库基础知识总结(学习更新ing。。。)

数据库基础知识总结(学习更新ing。。。)

为什么学习数据库? 

1. 实现数据持久化

2. 使用完整的管理系统统一管理,易于查询

相关概念

DB(数据库): 存储数据的仓库,用于保存数据

DBMS(数据库管理系统):管理操作数据库

常见的数据库管理系统 MySQL.Oracle.DB2.等

SQL(结构化查询语言):用于与数据库交互的语言

特点 1.简单易学

        2.几乎所有DBMS都支持SQL

MySQL的使用:

        MySQL服务的启动与停止:

                 方式一:直接操作电脑服务端

                 方式二: 以管理员的身份运行命令操作符

基础语法:

        1.查看当前所有的数据库

        show databases

        2.打开指定的库

        use 库名

        3.查看当前库内所有的表

        show tables

        4.查看指定库的所有表

        show tables from 表名

        5.创建表

        create table 表名(

                        列名 数据类型,

                        列名 数据类型,

                        列名 数据类型

        )

        6.查看表的结构

        desc 表名

图像化用户界面客户端:SQLyog

 

DQL语句(查询语句):

        select        字段名,字段名       

        from        表名

        where        筛选条件        (用于筛选)

        having       用到前面查询结果来筛选

        group        by    字段名        (用于分组)

        order         by        字段名      asc升序/desc降序   (用于排列顺序)

        

        select        *

        from        表名                查询指定表的所有数据

        可以后接as  别名  或  空格 别名来取别名,字段名和表名都可以取

        可以在select后加distinct用于去掉重复项

        between  and可用于判断是否在之间(包含等于)

        employee_id    BETWEEN   100   AND   120;

       count()计数,常用count(*)来计个数,常和分组合用

                SELECT COUNT(*),location_id
                FROM departments
                GROUP BY location_id;

        一些常用函数:

               1.  concat(字段名,字段名。。。)用于连接各列

                SELECt  CONCAt(last_name,first_name) AS 姓名
                FROM employees;

                PS:加号+只能用于运算,若是非数字加减则会转换成数字若不能转化则按0运算

                2. isnull(字段名,替代品)用于判断改项是否为null,如果为null则用替代品替代

                SELECt IFNULL(`commission_pct`,0) AS 奖金率
                FROM employees;

                3. in()判断是否为括号里的一项

                        WHERe        job_id IN('IT_PrOG' , 'aD_VP');

                4. like        判断是否为指定字符串,%表示任意多个字符,_表示任意一个字符

                        WHERe        first_name         LIKE          '%_%';

                5. length(字段名)返回指定字段的字节长度

                        LENGTH(last_name)

             

字符串类:

        ps:字符串下表从0开始

               6. upper(字符)变大写   lower (字符)变小写

               7. substr(string,下标) 截取下标后的所有字符

                   substr(string,下标 ,长度) 截取下标后指定长度的字符

               8. trim(string1,string2)在string1里去掉string2,但只能去掉两边的

                   trim(string)则为删除空格

               9. lpad(string,长度,string)左填充指定字符到指定长度,但长度更小则会删除

                   rpal(string,长度,string)为右添加

               10. replace(string,string1,string2)将string里的string1换成string2

               11. instr(string,string1)在string里找string1并返回索引否则返回0

                       

数字类函数:

               12. floor(数字)舍去小数点后的数字取整            ceil(数字)向上取整

               13. truncate(数字,位数)保留小数点后几位,不足的补0

               14. mod(数字1,数字1)取余,并且只与数字1的正负有关

                例如 mod(-10,3)为-1,mod(10,-3)为1

                

                15. round(数字,保留位数)四舍五入

                      ceil(数字)向上取整

日期类:

                16. now()显示当前时间

                17.  year(now())显示当前年         month(now())显示当前月

                18. curdate()显示当前日期

                19. curtime()显示当前时间

                20. str_to_date('2021-9-5' , '%Y-%d-%c)字符串转换成日期

                        %Y四位数年                %y两位数年

                        %m两位数月(09,08)                %c一位数月(9,8)

                        %d 日                                %i 分

                        %s 秒                 %h 12小时制               %H 24小时制

                21. date_format ('2021-2-8','%m月-%d日-%Y年') 日期转字符串

选择类函数:

                22. if(判断句,‘选择1’,‘选择2’)若判断句为真返回选择1,若为假则返回选择2

                23. case 表达式

                        when 选择1 then 语句,

                        when 选择2 then 语句,

                        ...

                        (else  语句)一定会执行的语句

                        end;

连接查询:

        sql92标准:仅仅支持内连接

               内连接:

                 SELECT NAME,boyName FROM boys,beauty

                WHERe beauty.boyfriend_id= boys.id;

        sql99标准:支持内连接,外连接,交叉连接(推荐*)

                select 查询列表

                from 表1 别名

               【连接类型】 join 表2 别名

                 on 连接条件

内连接(★):inner

外连接 左外(★):left 【outer】 右外(★):right 【outer】 全外:full【outer】

交叉连接:cross                 

        内连接:              

                SELECt last_name,department_name

                FROM departments d

                INNER JOIN employees e ON e.`department_id` = d.`department_id`;

                PS:内连接

                        SELECt e.last_name,m.last_name

                        FROM employees e

                        JOIN employees m

                        ON e.`manager_id`= m.`employee_id`;

         外连接:

                特点:
                        1、外连接的查询结果为主表中的所有记录
                             如果从表中有和它匹配的,则显示匹配的值
                             如果从表中没有和它匹配的,则显示null
                             外连接查询结果=内连接结果+主表中有而从表没有的记录
                        2、左外连接,left join左边的是主表
                              右外连接,right join右边的是主表
                        3、左外和右外交换两个表的顺序,可以实现同样的效果 
                        4、全外连接=内连接的结果+表1中有但表2没有的+表2中有但表1没有的

交叉连接即是笛卡尔乘积

        SELECt b.*,g.*

        FROM girl g

        CROSS JOIN boys b;

子查询:出现在其他语句中的select语句,称为子查询

分页查询:limit  索引,数目(从0开始)

联合查询:union(会自动去重,all表示不去重)

        查询语句1

        union 【all】

        查询语句2

        。。。

DML语句:

        插入:insert

        修改:update

        删除:delete

insert用法:

        方式一:insert into 表名(字段名,字段名。。。) value(值,值。。)

        特点:1.字段名和值的类型要一致或兼容

                   2.如果表的字段可以为null则字段名可以省略

                   3.字段名都省略的话则默认所有列

        方式二:insert into 表名 set 列名=值,列名=值。。。

区别:1.方式一可一次性插入多行

                insert into 表名 () value(),(),()。。。

           2.方式一支持子查询

                INSERT INTO beauty(id,NAME,phone)

                SELECT id,boyname,'1234567'

                FROM boys

update用法: update 表名 set 列=新值,列=新值。。。where 筛选条件

删除语句:

        delete用法:delete from 表名 where 筛选条件

        truncate用法:truncate table 表名

区别:1.delete可以加where而truncate不行

           2.truncate效率高一点

           3.delete删除后自增长列会从断点开始而truncate会从0开始

           4.truncate删除没返回值,而delete会返回删除的行数

DDL语言  

       库的管理:

                创建库:create   database  库名

                修改库:alter database 库名 character set 字符集名

                删除库:drop database 库名

        表的管理:

                表的创建:

                create table 表名(

                                             列名  列的类型【(长度) 约束】,

                                             列名  列的类型【(长度) 约束】,

                                              。。。

                )

                表的修改:

                        1.添加列

                        alter        table        表名        add        column        列名        类型

                        2.修改列的约束或类型

                        alter        table        表名        modify        column        列名        新类型【新约束】

                        3.修改列名

                        alter        table        表名        change        column        列名        新列名        类型;

                        4.删除列

                        alter        table        表名        drop        column        列名;

                        5.修改表名

                        alter        table        表名        rename       【to】        新表名

             表的删除

                        drop         table        表名

            复制表

                        create        table        表名        like        旧表(只复制类型)

                        create        table        表名        

                        select        查询列表        from        旧表

数据类型:浮点型,整形,字符型,日期型

约束:

        1.表级约束

        2.列级约束

使用:创建表时

种类:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/282934.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号