数据库

作者: Jzyue | 来源:发表于2019-06-01 18:38 被阅读0次

    1、什么是数据库?

    数据库是以数据结构的形式组织数据的,数据库是用户层面的,是由用户后来去实现的,用户可以对文件中的数据进行新增、截取、更新、删除等操作。

    2、为什么要用数据库?

    文件保存数据有以下几个缺点:

    • 文件的安全性问题。
    • 文件不利于查询和对数据的管理。
    • 文件不利于存放海量数据
    • 文件在程序中控制不方便
      那我们为了解决上述问题,专家们设计出更加利于管理数据的东西,数据库,他能更有效的管理数据,数据库的水平是衡量一个程序员水平的重要指标。

    3、数据库介绍

    关系型数据库

    关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联表的表格分类、合并、连接或选取等运算来实现数据的管理。

    非关系型数据库

    非关系型数据库也被称为NoSQL数据库,NoSQL的本意是“Not Only SQL”,指的是非关系型数据库,而不是“No SQL”的意思(没有SQL语句?),因此,NoSQL的产生并不是要彻底否定关系型数据库,而是作为传统关系型数据库的一个有效补充。NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。

    4、数据库软件下载

    数据库排名:https://db-engines.com/en/ranking

    数据库下载地址:https://downloads.mysql.com/archives/community/

    5、数据库用户创建和授权

    [root@db01 ~]# mysql
    mysql> grant all on wordpress.* to wordpress@'10.0.0.%' identified by '123456';
    mysql> grant select,insert,update on app.* to app@'10.0.0.%' identified by '123';
    
    

    6、数据库查询

    查询数据库

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    4 rows in set (0.00 sec)
    

    查询表

    mysql> show tables;
    +---------------------------+
    | Tables_in_mysql           |
    +---------------------------+
    | columns_priv              |
    | db                        |
    | engine_cost               |
    | event                     |
    | func                      |
    | general_log               |
    | gtid_executed             |
    | help_category             |
    | help_keyword              |
    | help_relation             |
    | help_topic                |
    | innodb_index_stats        |
    | innodb_table_stats        |
    | ndb_binlog_index          |
    | plugin                    |
    | proc                      |
    | procs_priv                |
    | proxies_priv              |
    | server_cost               |
    | servers                   |
    | slave_master_info         |
    | slave_relay_log_info      |
    | slave_worker_info         |
    | slow_log                  |
    | tables_priv               |
    | time_zone                 |
    | time_zone_leap_second     |
    | time_zone_name            |
    | time_zone_transition      |
    | time_zone_transition_type |
    | user                      |
    +---------------------------+
    31 rows in set (0.00 sec)
    

    7、连接管理

    socket(本地套接字文件)

    [root@db01 ~]# mysql -uroot -p
    1、只允许本地登陆使用。
    2、登陆的用户必须提前创建好。

    TCP/IP(网络IP+Port)

    [root@db01 ~]# mysql -uwordpress -p -h 10.0.0.51 -P 3306

    退出数据库

    \q
    exit
    quit
    ctrl + d

    常用命令

    /G 将表格竖起来
    导入数据
    mysql> source /root/world.sql
    调用系统数据
    mysql> system vim /etc/passwd
    查看当前所在的库
    mysql> select database();
    进入到库use相当于cd
    mysql> use world

    8、备份恢复

    备份数据库
    [root@db01 ~]# mysqldump -uroot -p123456 -A --master-data=2 --single-transaction -R --triggers -E >/tmp/full.sql
    恢复数据库
    mysql> source /tmp/full.sql

    9、SQL语句介绍

    SQL标准

    • SQL 89
    • SQL 92
    • SQL 99

    SQL模式

    5.7版本后采用严格模式

    分类

    • DDL 数据定义语言
    • DCL 数据控制语言
    • DML 数据操作语言
    • DQL 数据查询语言

    认识DDL

    • 建库 数据库名 字符集(utf8mb4)
    mysql> create database zh charset utf8mb4 ;
    mysql> show databases;
    mysql> show create database zh;
    
    • 删库
    drop database aaaa;
    

    回收删除权限

    revoke drop,delete on *.* from oldboy@'10.0.0.%';
    
    • 修改库
    mysql> alter database zh charset utf8
    
    • 建表
    CREATE TABLE `stu` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '学号',
      `name` varchar(64) CHARACTER SET armscii8 NOT NULL DEFAULT '' COMMENT '姓名',
      `age` tinyint(3) unsigned zerofill NOT NULL COMMENT '年龄',
      `gender` char(4) NOT NULL COMMENT '性别',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ;
    
    • 删表
    drop table stu;
    
    • 修改表
    alter table stu add qq varchar(64) unique not null comment 'qq号';
    alter table stu add telnum char(11) not null unique after name;
    

    注意:
    DDL语句需要锁表,对于大表需要做DDL修改,尽量选择业务不繁忙期间

    认识DML(对数据记录操作)

    • insert
    insert into stu(name,telnum,gender,qq,age) values ('ww','110','f','222222',18);
    
    • updata
    update stu   set name='ls'  where id=2;
    
    • delte
    delete from stu where id=2 ;
    

    伪删除:
    添加状态列,update 替代 delete
    truncate 物理性质删除,针对数据页
    delete 逻辑性质删除,针对数据行

    认识DQL

    • select

    1、select单独使用
    函数应用
    select database();
    参数查询
    select @@port;
    select @@datadir;
    2、from语句
    表,视图,子查询
    select * from city ; (不代表生产操作)
    3、where
    等值
    select * from city where countrycode='CHN';
    比较判断符
    select * from city where population<100;
    逻辑连接符
    select * from city where countrycode='CHN' and district='shandong';
    select * from city where countrycode='CHN' or countrycode='USA';
    select * from city where countrycode in ('CHN','USA');
    改写
    select * from city where countrycode='CHN'
    union all
    select * from city where countrycode='USA';
    模糊查询
    select * from city where countrycode like 'C%';
    4、group by(配合聚合函数使用)
    统计中国,各个省的城市个数
    select district,count(id) from city where countrycode='CHN' group by district;
    select district,group_concat(name) from city where countrycode='CHN' group by district;
    5、having
    select district,count(id) from city where countrycode='CHN' group by district having count(id)>10;
    使用临时表解决having面对结果集较大的情况
    6、order by limit
    select * from city where countrycode='CHN' order by population desc limit 5;
    select district,count(id) from city where countrycode='CHN' group by district having count(id)>10;
    select district,count(id) from city where countrycode='CHN' group by district having count(id)>10 order by count(id) desc limit 5;
    7、其他
    between and
    in
    exist
    union all

    相关文章

      网友评论

          本文标题:数据库

          本文链接:https://www.haomeiwen.com/subject/evdotctx.html