• MySQL


    一、数据库概述

    什么是数据库?

      数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合。数据库中的数据按一定的数学模型组织、描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并可为各种用户共享。

    什么是数据管理系统?

    在了解了Data与DB的概念后,如何科学地组织和存储数据,如何高效获取和维护数据成了关键

    这就用到了一个系统软件---数据库管理系统

    如MySQL、Oracle、SQLite、Access、MS SQL Server

    mysql主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码,因为开放源代码这个数据库是免费的,他现在是甲骨文公司的产品。
    oracle主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。也是甲骨文公司的产品。
    sql server是微软公司的产品,主要应用于大中型企业,如联想、方正等。

    数据库说白了就是文件夹
    数据库管理系统就是一个软件
    数据库服务器:就是对外专门提供数据的一个机器

    数据库服务器,数据库管理系统,表与记录的关系

    • 表:即文件
    • 数据库:即文件夹
    • 数据库管理系统:如mysql 是一个软件
    • 数据库服务器:一台计算机(对内存要求高)

    总结:

        数据库服务器---运行--->数据库管理软件

        数据库管理软件--->管理--->数据库

        数据库---组织--->表,即文件夹---组织--->文件

        表---存放--->多条记录,即文件---存放--->多行内容

    二、mysql数据库基本操作和存储引擎

    sql及其规范

    sql是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。

    在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持sql。

    <1> 在数据库系统中,SQL语句不区分大小写(建议用大写) 。但字符串常量区分大小写。建议命令大写,表名库名小写;

    <2> SQL语句可单行或多行书写,以“;”结尾。关键词不能跨多行或简写。

    <3> 用空格和缩进来提高语句的可读性。子句通常位于独立行,便于编辑,提高可读性。

    <4> 注释:单行注释:--

                   多行注释:/*......*/

    <5>sql语句可以折行操作

    <6> DDL,DML和DCL

    SQL中 DML、DDL、DCL区别
    
    DML(数据操作语言):
        它们是SELECT、UPDATEINSERTDELETE,就像它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言。
    
    DDL(数据定义语言):
        DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。
    
    DCL(数据控制语言):
    是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL。

     数据库操作(DDL)

    注意:数据库就相当于文件夹    表就相当于文件
    一、数据库的增删改查(sql语句)
    增:create database db1;
    删:drop database db1;
    改:alter database db1 charset utf8;
    查:show databases; #查看所有的数据库
           show create database db1; #查看指定的数据库
    use db2  #切换数据库
    select database()  #查看当前使用的数据库
    
    二、表的增删改查
    增:create table t1(id int,name varchar(20));
    删:drop table t1;
    改:
        插入数据:insert into t1 (id,name) values (1,"x");
        不写给谁传值就指定都传,而且还是按照位置传
    查: show tables; #查看所有的表
           show create table t1; #查看指定的表
          select * from t1 #查看表数据
           select id,name from t1  #查看表数据
    engine = InnoDB
    表的存储引擎是InnoDB
    三、操作文件的一行行内容

      增:insert into db1.t1 values(1,'haiyan'),(2,'yaling'),(3,'xiaoxiao'); #如果t1不给参数,默认按照位置参数依次传参  
      删:delete from t1 where id = 2;
      #对于清空记录有两种方式,但是推荐后者
      delete from t1;
      truncate t1; #当数据量比较大的情况下,使用这种方式,删除速度快
      改:update t1 set name = 'SB' where id=3;
      update t1 set name= 'SB' where name = 'xiaoxiao';
      alter table t7 modify id int primary key auto_increment; 修改id为主键并且自增
      查:select * from t1; #查看t1里所有的数据
      select name from t1; #查看t1里所有的name
      select id,name from t1; #查看t1里所有的id,name

    数据库之数据类型

    存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的

    1、数字(默认是有符号的)

    数字又分为:

      整形:tinyint(小整型):一个字节

         int(整型):四个字节。

         bigint(大整形):八个字节

      小数:

         float:在位数比较短的情况下不精准(**** 数值越大,越不准确 ****)

         double:在位数比较长的情况下不精准(**** 数值越大,越不准确 ****)

         decimal:如果是小数,则推荐使用decimal

               因为精准,内部原理是以字符串的形式去存

    2、字符 

    char:简单粗暴,不够就用空格凑够固定长度存放起来,浪费空间,但是存储速度快
    (牺牲空间,提高速度)
    varchar(你有几个就存几个):精准,计算出待存放数据的长度,节省空间,存取速度慢
    (牺牲速度,提高效率)


    数据表操作

    -- 1.创建表(类似于一个excel表)

    -- 创建一个员工表employee create table employee( id int primary key auto_increment , name varchar(20), gender bit default 1, -- gender char(1) default 1 ----- 或者 TINYINT(1) birthday date, entry_date date, job varchar(20), salary double(4,2) unsigned, resume text -- 注意,这里作为最后一个字段不加逗号 ); /* 约束: primary key (非空且唯一) :能够唯一区分出当前记录的字段称为主键! unique not null auto_increment 主键字段必须是数字类型。 外键约束 foreign key */ -- 2.查看表信息 desc tab_name 查看表结构 show columns from tab_name 查看表结构 show tables 查看当前数据库中的所有的表 show create table tab_name 查看当前数据库表建表语句 -- 3.修改表结构 -- (1)增加列(字段) alter table tab_name add [column] 列名 类型[完整性约束条件][first|after 字段名]; alter table user add addr varchar(20) not null unique first/after username; #添加多个字段 alter table users2 add addr varchar(20), add age int first, add birth varchar(20) after name; -- (2)修改一列类型 alter table tab_name modify 列名 类型 [完整性约束条件][first|after 字段名]; alter table users2 modify age tinyint default 20; alter table users2 modify age int after id; -- (3)修改列名 alter table tab_name change [column] 列名 新列名 类型 [完整性约束条件][first|after 字段名]; alter table users2 change age Age int default 28 first; -- (4)删除一列 alter table tab_name drop [column] 列名; -- 思考:删除多列呢?删一个填一个呢? alter table users2 add salary float(6,2) unsigned not null after name, drop addr; -- (5)修改表名 rename table 表名 to 新表名; -- (6)修该表所用的字符集 alter table student character set utf8; -- 4.删除表 drop table tab_name; ---5 添加主键,删除主键 alter table tab_name add primary key(字段名称,...) alter table users drop primary key; eg: mysql> create table test5(num int auto_increment); ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key create table test(num int primary key auto_increment); -- 思考,如何删除主键? alter table test modify id int; -- auto_increment没了,但这样写主键依然存在,所以还要加上下面这句 alter table test drop primary key;-- 仅仅用这句也无法直接删除主键 -- 唯一索引 alter table tab_name add unique [index|key] [索引名称](字段名称,...) alter table users add unique(name)-- 索引值默认为字段名show create table users; alter table users add unique key user_name(name);-- 索引值为user_name -- 添加联合索引 alter table users add unique index name_age(name,age);#show create table users; -- 删除唯一索引 alter table tab_name drop {index|key} index_name
  • 相关阅读:
    在传统软件公司十年深恶痛绝的感受
    前端 100 问:能搞懂80%的请把简历给我
    中专毕业的他,是如何逆袭为 360 资深程序员?
    别再参加领导力培训课程了,这本领导力提升书籍推荐给你
    企业管理书籍推荐,读完这个系列的书就是上完了整个MBA
    如何做好人才管理?人才管理书籍推荐
    如何管理好员工?你可能需要看看这本人员工管理方面的经典书籍
    领导与管理的区别和异同:什么是领导?什么是管理?
    一名优秀的HR需要具备哪些素质与能力?
    销售书籍推荐:做销售你究竟该看什么书?
  • 原文地址:https://www.cnblogs.com/lzf23/p/11710196.html
Copyright © 2020-2023  润新知