数据库

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 10,237评论 0 44
  • 常用语句: sql/plus sqlplus 'amdocs/Amdocs.Jx.China.110#@ysdb1...
    好好学习的蜗牛阅读 3,469评论 0 0
  • 1.简介 数据存储有哪些方式?电子表格,纸质文件,数据库。 那么究竟什么是关系型数据库? 目前对数据库的分类主要是...
    乔震阅读 2,068评论 0 2
  • 一、数据库的一些概念 数据库的概念: 数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与...
    __RY__阅读 879评论 0 1
  • 难得一遇的经历,让我认知了很多名贵花木
    春朵阅读 256评论 0 0

友情链接更多精彩内容