ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

01-数据库

2021-10-04 20:04:33  阅读:213  来源: 互联网

标签:01 door -- 数据库 tb 主键 select


数据库应用

概念

什么是数据库

简而言之,就是存储数据,管理数据的仓库

常见的数据库分为:

          关系型数据库,Oracle,MySQL,SQLServer,Access

          非关系型数据库,MongoDB,Redis,Solr,ElasticSearch,Hive,HBase

在这里插入图片描述

关系型和非关系型

早起发展的数据库建立在数据的紧密关系基础之上(如:父子关系,师生关系),我们称其为关系型数据库,也称为传统数据库;现今数据库建立在数据的松散关系基础之上(如:中国人和美国人,中国人和印度人,视频,音频),我们称其为非关系型数据库nosql(not only sql)。业界总在争论nosql能否干掉传统数据库,很多初学者也有这个困惑。以我看来,两者没有矛盾,它们各有特点,根据业务情况互补才是真谛。但总的来说原来关系型数据库一统天下的格局早被打破,领土不断被蚕食,规模一再的缩小,虽然无法全面被替代,但却早已风光不在,沦落到一偶之地,Oracle的衰落就是最好的证明,早期只要是全球大企业无一例外都是部署Oracle,但现在都在去Oracle化,阿里就已经全面排斥Oracle。

在这里插入图片描述

既然干不掉,很多传统项目的还是围绕关系型数据库的居多,目前最流行的关系型数据库是MySQL。

关系型数据库

关系型数据库有特定的组织方式,其以行和列的形式存储数据,以便于用户理解。关系型数据库这一系列的行和列被称为表,一组表组成成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据集合。

在这里插入图片描述

MySQL数据库

     1.mysql服务端,它来处理具体数据维护,保存磁盘

     2.mysql客户端,CRUD新增,修改,删除,查询

MySQL数据存放在哪里

在MySQL的配置文件my.ini中会进行默认配置

在这里插入图片描述

数据库的结构

数据库结构

在这里插入图片描述

SQL语句

定义

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询,更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

SQL 是1986年10月由美国国家标准局(ANSI)通过的数据库语言美国标准,接着,国际标准化组织(ISO)颁发了SQL正式国际标准。

分类

   DML(Data Manipulation Language)数据操纵语言

如: insert,delete update,select(插入,删除,修改,检索)简称CRUD操作新增Create,查询Retrieve,修改Update,删除Delete。

    DDL(Data Definition Language)数据库定义语言

如: create table 之类

    DCL(Data Control Language)数据库控制语言

如: grant,deny,revoke等,只有管理员才有相应的权限

    DQL(Data Query Language)数据库查询语言

如:select语法

注意:SQL不区分大小写

数据库常用操作

建库

      创建数据库,数据库名称:ccl2021

create database ccl2021 DEFAULT CHARACTER SET utf8; 

删库

        删除名称是ccl2021的数据库

drop database ccl2021

查看所有数据库

         查看所有数据库

show databases;

表的常用操作

使用数据库:use ccl2021

创建表

     创建tb_door表,有id,door_name,tel字段

create table tb_door(

id int primary key auto_increment,

door_name varchar(100),

tel varchar(50)

);

修改表

       添加列

alter table tb_door add column money NUMERI(7,2)

删除表

     删除名称是tb_door的表

drop table tb_door;

查看所有表

        查看所有表

show tables;

查看表结构/设计表

      查看tb_door表结构

desc tb_door;

表记录的常用操作

插入记录

        向tb_door表中插入2条记录

insert  into tb_door  values(null,'永和大王1店’,666);

insert  into  tb_door  values(null,'永和大王2店‘,666);

查询记录

         查询tb_door表中的所有记录

SELECT * FROM  tb_door;

修改记录

        修改tb_door表中id为1的记录

update  tb_door   set   tel=555  where  id=1;

删除记录

         删除tb_door表中id为2的数据

Delete from tb_door  where  id=2;

排序

        将tb_door表记录按照tel排序

Select  *  from  tb_door  order  by  tel  desc;

记录总数

       查询tb_door表中的总记录数

Select  count(*) from  tb_door;

数据类型

命名规则

       字段名必须以字母开头,尽量不要使用拼音

        长度不能超过30个字符(不同数据库,不同版本会有不同)

       不能使用SQL的保留字,如where,order,group

       只能使用如下字符az、AZ、0~9、$ 等

       Oracle习惯全大写:USER_NAME,mysql习惯全小写:user_name

       多个单词用下划线隔开,而非JAVA语言的驼峰规则

字符  

         char长度固定,不足使用空格填充,最多容纳2000个字符,char(11)存储abc,占11位。查询速度极快但浪费空间


          varchar变长字符串,最多容纳4000个字符,varchar(11)存储abc,只占3位。查询稍慢,但节省空间。Oracle为varchar2


          大文本: 大量文字(不推荐使用,尽量使用varchar替代)


以utf8编码计算的话,一个汉字在u8下占3个字节

注:不同数据库版本长度限制可能会有不同

数字

        tinyint,int整数类型

        float,double小数类型

        numeric(5.2)decimal(5.2)-也可以表示小数,表示总共5位,其中可以有两位小数

        decimal和numeric表示精确的整数数字

日期

      date包含年月日

      time时分秒

      datetime包含年月日和时分秒

      timestamp时间截,不是日期,而是从1970年1月1日到指定日期的毫秒数

图片

      blob二进制数据,可以存放图片,声音,容量4g.早期有这样的设计。但其缺点非常明显,数据库庞大,备份缓慢,这些内容去备份多少份价值不大,同时数据库迁移时间过大,迁移时间过久。所以目前主流都不会直接存储这样的数据,而只存储其访问路径,文件则存放在磁盘上。

字段约束

主键约束

主键约束: 如果为一个列添加了主键约束,那么这个列就是主键,主键的特点是唯一且不能为空。通常情况下,每张表都会有主键。

添加主键约束,例如将id设置为主键:

主键自增策略** **当主键为数值类型时,为了方便维护,可以设置主键自增策略(auto_increment),设置了主键自增策略后,数据库会在表中保存一个AUTO_INCREMENT变量值,初始值为1,当需要id值,不需要我们指定值,由数据库负责从AUTO_INCREMENT获取一个id值,作为主键值插入到表中。而且每次用完AUTO_INCREMENT值,都会自增1. 

create table abc(
id int primary key auto_increment
);
insert into abc values(null);
insert into abc values(null);
insert into abc values(null);
select * from abc;
 

非空约束

非空约束:如果为一个列添加了非空非空约束,那么这个列的值就不能为空,但可以重复。

添加非空约束,例如为password添加非空约束:

create table user(
id int primary key auto_increment,
password varchar(50) not null
);
show tables;
insert into user values(null,null);//不符合非空约束
insert into user values(null,123;);//OK
 

唯一约束

唯一约束:如果为一个列添加了唯一约束,那么这个列的值就必须是唯一的(既不能重复),但可以为空

添加唯一约束,例如为username添加唯一约束及非空约束:

create table test(
id int primary key auto_increment,
username varchar(50) unique--唯一约束
);
show tables;
insert into test values(null,'lisi');
insert into test values(null,'lisi');--username的值要唯一,重复会报错的
select * from test;
 

基础函数

lower

SELECT ‘ABC’,LOWER(‘ABC’) from  dept;--数据转小写

upper

select  upper(dname) from dept --数据转大写

length

select length(dname) from  dept  --数据的长度

substr

SEKECT dname,SUBSTR(dname,1,3) FROM dept;  --截取[1,3]

concat

select  dname,concat(dname,'123') X  from  dept  --拼接数据

replace

iselect  dname, replace(dname,'a','666') X from  dept --把a字符替换成666

ifnull

select  ifnull (comm,10) comm  from  dept2  #判断,如果comm是null,用10替换

round & ceil & floor

round四舍五入,ceil向上取整,floor向下取整

-直接四舍五入取整

select  comm,round(comm) from emp

-四舍五入并保留一位小数

select comm, round(comm)  from emp

--四舍五入并保留一位小数

select  comm,round(comm,1) from emp

--ecil向上取整,floor向下取整

select comm, ceil(comm) , floor(comm)  from  emp

UUid

SELECTUUID()

返回uuid:  a08528ca-741c-llea-a91a1-005056c00001

now

select now() -- 年与日 时分秒

select curdate() --年与日

select curtime() --时分秒
 

year & month & day

--hour()时 minute()分 second()秒

select now(),hour(now()),minute(now()),second(now()) from emp ;
 

--year()年month()月day()日

select now(),year(now()),month(now()),day(now()) from emp ;
 

转义字符

作为sql语句符号,内容中出现单撇就会乱套,进行转移即可

select 'ab'cd' -- 单引号是一个SQL语句的特殊字符

select 'ab\'cd' --数据中有单引号时,用一个\转义变成普通字符
 

标签:01,door,--,数据库,tb,主键,select
来源: https://blog.csdn.net/weixin_58998333/article/details/120603189

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有