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

本文共 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

你可能感兴趣的文章
selenium+java iframe定位
查看>>
P2P综述
查看>>
第五章 如何使用Burp Target
查看>>
Sprint阶段测试评分总结
查看>>
sqlite3经常使用命令&amp;语法
查看>>
linux下编译openjdk8
查看>>
【python】--迭代器生成器装饰器
查看>>
Pow(x, n)
查看>>
安卓当中的线程和每秒刷一次
查看>>
每日一库:Modernizr.js,es5-shim.js,es5-safe.js
查看>>
ajax连接服务器框架
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
利用maven管理项目之POM文件配置
查看>>
FUSE-用户空间文件系统
查看>>
 VS2012 C#调用C++ dll
查看>>
TCL:表格(xls)中写入数据
查看>>
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
bash使用规则
查看>>
AVL数
查看>>