博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day42
阅读量:4562 次
发布时间:2019-06-08

本文共 14174 字,大约阅读时间需要 47 分钟。

昨日回顾:    一. 数据库的介绍         管理数据的软件    二. 数据库的 分类:            a.关系型数据库                有约束            b.非关系型数据库                没有约束                    三. MySQl 的安装:            a. exe msi文件 点击下一步下一步                        b. 压缩包                 bin                     mysqld : 启动mysql服务的                    mysql  : 连接mysql                环境变量    四. 数据库(文件夹)            数据表 (文件)                数据行(文件行)        五. 数据库:            增:                create database 数据库名;            删:                    drop database 数据库名;            查:                show databases;                数据表:            创建:                create table 表名(                    id  int auto_increment primary key                     列名1  列类型 [not null/ null default '' ],                    列名2  列类型 [not null/ null default '' ],                    列名n  列类型 [not null/ null default '' ]                )engine=Innodb charset=utf8;                            列类型:                    数值类型:                        tinyint                        samllint                        mediumint                        int                        bigint                                            有符号 / 无符号 (unsigned)                                                            字符串类型:                                                char varchar  text                                                         时间日期类型:                        datetime 年月日时分秒                        删除:                drop table 表名;            查询:                show tables;                        修改:                alter table 表名 change/modify 旧列名 新列声明;                                alter table 表名 add 新列声明;                                alter table 表名 drop 旧列名;                                数据行:                        增:                insert  into 表名 (列1,列2, 列n) values (值1, 值2, ..., 值n);                        删除:                delete from 表名 where id=12;;                  truncate 表名;                        修改:                update 表名 set name='xxxx';                update 表名 set name='xxxx' where id=12;                update 表名 set name='xxxx',age=12 where id=12;                        查询:                select  * from 表名;                 select name, age from 表名;                    六.外键 (一对多)                作用:            1. 约束            2. 节省空间                create table department (            id  int auto_increment primary key,             depart_name varchar(32)  not null  default '',            num int  not null default 0        )engine=Innodb charset=utf8;                    create table userinfo (                id  int auto_increment primary key,             name varchar(32) not null default '',            depart_id int not null  default 1,                        # constraint 外键名(fk_userinfo_depart) foreign key (列名(depart_id)) references 表名(department)(关联的列名(id)),            # constraint fk_userinfo_depart foreign key (depart_id) references department(id)        )engine=Innodb charset=utf8;                        ps:            1. 不能将创建外键的语句单独拿出来                              alter table userinfo add constraint fk_userinfo_depart foreign key (depart_id) references department(id);               alter table userinfo drop foreign key 外键名称(fk_userinfo_depart );                        2. 外键关联的时候, 必须关联的是表的主键ID                        3. 练习的时候, 将语句写在文本中, 然后考过去执行                        4. 主键索引 : 加速查找 + 不能为空 + 不能重复                            今日内容:                一. 外键的变种: (*********************************************************)                                1. 唯一索引:                                        create table t5(                        id int,                        num int,                        unique(num)                    )engine=Innodb charset=utf8;                                        作用:                            num列的值不能重复                        加速查找                                            create table t6(                        id int,                        num int,                        unique(id, num)                    )engine=Innodb charset=utf8;                                        联合唯一索引作用:                            num列和id列的值不能重复                        加速查找                                        create table t6(                        id int,                        num int,                        unique(id, num......)                    )engine=Innodb charset=utf8;                                2. 一对多:                                                部门表:                            id       depart_name                             1          公关部                             2          公共部                             3          保安部                                                员工表:                            id    name  age   depart_id(外键)                            1     lxxx  12      2                            2     xxxx  13      1                            3     xxxx  13      2                                            3. 一对一:                                                用户表:                            id    name     age                              1      zekai    23                              2      eagon    34                            3      lxxx     45                            4      owen     83                                博客表:                            id            url          user_id  (外键 + 唯一约束)                            1       /linhaifeng       2                            2       /zekai              1                            3       /lxxx             3                            4       /lxxx             4                                        4.  多对多:                                                用户表:                            id    name    phone                             1    root1    1234                            2    root2    1235                            3    root3    1236                            4    root4    1237                            5    root5    1238                            6    root6    1239                            7    root7    1240                            8    root8    1241                                                    主机表:                                                    id    hostname                                1    c1.com                                2    c2.com                                3    c3.com                                4    c4.com                                5    c5.com                            为了方便查询, 用户下面有多少台主机以及某一个主机上有多少个用户, 我们需要新建第三张表:                            user2host:                                                            id    userid    hostid                                    1    1    1                                    2    1    2                                    3    1    3                                    4    2    4                                    5    2    5                                    6    3    2                                    7    3    4                            创建的时候, userid 和 hostid 必须是外键, 然后联合唯一索引 unique(userid, hostid)                                                Django orm 也会设计                                                二. 数据行的操作:                                增:                    insert into 表名 (列名1, 列名2,) values(值1, 值2);                    insert into 表名 (列名1, 列名2,) values(值1, 值2),(值1,值2),(值n,值n);                                        insert into 表名 (列名1, 列名2,) select 列名1, 列名2 from 表名;                                    删除:                    delete from 表名;                                         delete from 表名 where id > 10                    delete from 表名 where id < 10                    delete from 表名 where id <= 10                    delete from 表名 where id >= 10                    delete from 表名 where id != 10                     delete from 表名 where id = 10 and name='xxx';  and : 并且 两个条件都必须要成立                    delete from 表名 where id = 10 or name='xxx';   or :  或者 只要满足一个条件成立                修改:                    update 表名  set name='zekai', age=23 where id > 10;                                    查询:                                        基本:                        select * from 表名;                        select name , age from 表名;                                        高级:                                                a. where 条件查询:                            select * from 表名 where  id=10;                            select * from 表名 where  id >10 and id<15;                            select * from 表名 where  id > 10;                            != : 不等与                            >= <=                                                                                     between and: 闭区间                                 select * from t4 where id between 9 and 12;                                                        in: 在某一个集合中                                select * from t4 where id in (9,10,11....);                                                                                                select * from t4 where id in (select id from t3 where id between 2 and 4)                                                                是可以这样使用的, 但是不建议大家使用;                                                b. 通配符:                            alex                                                        select * from 表 where name like 'ale%'  - ale开头的所有(多个字符串)                            select * from 表 where name like 'ale_'  - ale开头的所有(一个字符)                        c.     限制取几条:                                                                select * from 表名 limit 索引偏移量, 取出多少条数据;                                                                                                select * from t3 limit 0, 10;  第一页                                select * from t3 limit 10, 10;  第二页                                                                page = input('page:')                                                                    page    索引偏移量      数据量(offset)                                      1         0              10                                      2         10             10                                      3         20             10                                      4         30             10                                                                            page   (page-1)*offset   offset                                                                分页核心SQL:                                                                    select * from t3 limit (page-1)*offset, offset;                                                d.  排序:                                                                order by                                                                降序:                                    select * from t4 order by 列名 desc; descending                                                                升序:                                    select * from t4 order by 列名 asc; ascending                                                                                        多列:                                                                        create table t7(                                                                            id int auto_increment primary key,                                        num int not null default 0,                                        age int not null default 0                                    )charset=utf8;                                                                        insert into t7 (num, age) values (2, 12),(3,13),(4, 12);                                                                    select * from t4 order by num desc, name asc;                                                                        如果前一列的值相等的话, 会按照后一列的值进行进一步的排序.                                                e.  分组                                                                select age, 聚合函数(count(num)/sum(num)/max(num)/min(num)/avg(num)) from 表名 group by 列名;                                                                                                select age, avg(num) from t7 group by age;                                                                 select age, count(num) from t7 group by age;                                                                select age, count(num) as cnt from t7 group by age;  显示别名 as                                                            having的二次删选:                                    select age, count(num) as cnt from t7 group by age  having cnt>1;                                                                    where 和 having的区别:                                    1). having与where类似,可筛选数据                                    2). where针对表中的列发挥作用,查询数据                                    3). having针对查询结果中的列发挥作用,二次筛选数据, 和group by配合使用                                                f.  连表操作                                select * from userinfo, department; (笛卡尔积)                                                                select * from userinfo, department where userinfo.depart_id=department.id;                                                            左连接:                                                                    select * from userinfo left join department on userinfo.depart_id=department.id;                                    左边的表全部显示, 右边没有用到不显示                                                                右连接:                                                                        select * from userinfo right join department on userinfo.depart_id=department.id;                                    右边的表全部显示, 左边没关联的用null表示                                                                内连接:                                    左右两边的数据都会显示                                                                ps:                                     a.只需要记住左连接 left join                                                                        b.可以连接多张表 通过某一个特定的条件                                                        注意查询的顺序:                        select name,sum(score) from 表 where id > 10 group by score having age> 12  order by age desc limit 2, 10

 

转载于:https://www.cnblogs.com/WBaiC1/p/11020030.html

你可能感兴趣的文章
【循序渐进学Python】3. Python中的序列——字符串
查看>>
Flex+Java+Blazeds
查看>>
泡沫循环
查看>>
JSONObject JSONArray
查看>>
Ubuntu16.04 使用阿里云源
查看>>
mssql手工注入及绕过术
查看>>
HDU-3030 Increasing Speed Limits 树状数组
查看>>
【西北师大-19软工】第十四次作业成绩汇总
查看>>
【leetcode】501. Find Mode in Binary Search Tree
查看>>
Linux安装Oracle 11g Grid Infrastructure 出现OUI-10182错误解决办法
查看>>
带你走进缓存世界(6):共享缓存
查看>>
mysql命令
查看>>
[线段树] Jzoj P4231 寻找神格
查看>>
【Properties】Properties的load方法
查看>>
hdoj p1754——I Hate It(线段树)
查看>>
公设基础equals
查看>>
红黑树(Red-Black tree)
查看>>
Hive语法手册
查看>>
tomcat和jboss下的debug模式设置
查看>>
Python爬虫(十一)_案例:使用正则表达式的爬虫
查看>>