ICode9

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

MYSQL 数据库

2021-07-11 14:33:17  阅读:197  来源: 互联网

标签:door 数据库 MYSQL null tb 主键 select


概念

什么是数据库

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

常见的数据库分为:

  • 关系型数据库, Oracle、MySQL、SQLServer、Access
  • Mysql数据库
    mysql服务端,它来处理具体数据维护,保存磁盘
    mysql客户端,CRUD新增,修改,删除,查询
    MySQL数据存放在哪里?
    在MySQL的配置文件my.ini中会进行默认配置

    MySQL服务端
    mysql-5.5.27-winx64.msi

    Mysql数据库默认的编码是latin1等价于iso-8859-1,修改为utf-8

    注意:配置完,mysql开始执行,最后一步出错有时仍可以使用,使用SQLyog工具测试,如不行,再执行安装程序,选择remove,删除,然后重新安装。同时注意必须是管理员权限。

    MySQL客户端1:DOS窗口
    mysql -uroot -proot

    语法:mysql.exe执行文件

    代表参数

    -u 用户名,紧接着写的

    -p 密码,紧接着写的

    MySQL客户端2:可视化工具

  • SQL语句
    定义
    结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

    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):
    注意:SQL不区分大小写

    数据库常用操作
    建库
    创建数据库,数据库名称:cbg2011
    create database cbg2011 DEFAULT CHARACTER SET utf8;

    删库
    删除名称是cbg2011的数据库
    drop database cbg2011;

    查看所有数据库
    show databases;

    表的常用操作
    使用数据库:use cbg2011;

    表设计
    门店表:** tb_door**

    订单详情表:** tb_order_detail**


    创建表
    创建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 NUMERIC(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店',888);

    查询记录
    查询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小数类型
    numberic(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. 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;

    准备数据
    部门表 dept
    字段名称    数据类型    是否为空    备注
    deptno    int        部门编号,PK主键
    dname    varchar(20)    Y    部门名称
    loc    varchar(13)    Y    部门所在地点
    CREATE TABLE dept(
    deptno int primary key auto_increment ,
    dname VARCHAR(20),
    loc VARCHAR(13)
    );
    INSERT INTO dept VALUES(null,'accounting','一区');
    INSERT INTO dept VALUES(null,'research','二区');
    INSERT INTO dept VALUES(null,'operations','二区');

    员工表 emp
    字段名称    数据类型    是否为空    备注
    empno    int        员工编号,PK主键
    ename    varchar(10)    Y    员工名称
    job    varchar(10)    Y    职位
    mgr    int    Y    上级编号
    hiredate    datetime    Y    入职时间
    sal    double    Y    月工资
    comm    NUMERIC(8,2)    Y    奖金
    deptno    int    Y    所属部门 FK外键
     

    CREATE TABLE emp(
    empno int primary key auto_increment,
    ename VARCHAR(10),
    job VARCHAR(10),
    mgr int,
    hiredate DATE,
    sal double,
    comm NUMERIC(7,2),
    deptno int
    );

    INSERT INTO emp VALUES(100,'jack','副总',NULL,'2002-05-1',90000,NULL,1);

    INSERT INTO emp VALUES(200,'tony','总监',100,'2015-02-02',10000,2000,2);

    INSERT INTO emp VALUES(300,'hana','经理',200,'2017-02-02',8000,1000,2);

    INSERT INTO emp VALUES(400,'leo','员工',300,'2019-02-22',3000,200.12,2);

    INSERT INTO emp VALUES(500,'liu','员工',300,'2019-03-19',3500,200.58,2);

    基础函数
    lower
    SELECT 'ABC',LOWER('ABC') from dept; --数据转小写

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

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

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

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

    replace
    select 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,1) from emp

    –ceil向上取整,floor向下取整

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

    uuid
    SELECT UUID()

    返回uuid:a08528ca-741c-11ea-a9a1-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' --数据中有单引号时,用一个\转义变成普通字符


     

标签:door,数据库,MYSQL,null,tb,主键,select
来源: https://blog.csdn.net/qq_55624813/article/details/118653973

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

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

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

ICode9版权所有