美文网首页
mysql-(数据库基础)

mysql-(数据库基础)

作者: I踏雪寻梅 | 来源:发表于2016-11-18 09:01 被阅读0次

mysql

  • 什么是数据(data):硬盘中存的东西......

  • 数据库:

    • 数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务
  • 数据库的优点

    • 数据按照一定的数据模型组织描述和存储
    • 可为各种用户共享
    • 冗余度较小,节省存储空间
    • 易扩展,编写有关数据库管理
  • 数据库管理系统(Database Management System)

    • 是一种操纵和管理数据库的大型软件,适用于建立使用和维护数据库,简称DBMS。
    • 作用:他对于数据库进行统一的管理和控制,以保证数据库的安全性和完整性。
  • mysql命令

    mysql -h host_name -u user_name -ppassword
    mysql-h:当前连接服务器不在同台主机时,填写主机名或IP地址
    mysql-u:登录mysql用户名
    mysql-p:登录mysql密码
    登录过程

    mysql -u root -ppassword
    show databases;//显示所有数据库
    use XXX;
    show tables;//显示所有的表
    select * from XXX;//进入查看该表
    \q:退出
    
  • 数据库由一批数据构成的有序集合,这些数据被分门别类的存放在一些结构化的数据表里(table)里,而数据之间又往往存在交叉引用的关系,这种关系使数据库又被称为关系型数据库

  • 数据存储的完整性

    • 有一对必选的有一堆可选的方案以保持完整性。
    • 约束方法:唯一约束、主键约束、标识列
    • 约束方法:限制数据类型、检查约束、外键约束(保证程序表中的数据不孤立)、默认值、非空约束。
    • 约束方法:规则,存储过程,触发器。
  • 完整性包括

    • 输入的类型是否正确?
    • 输入的格式是否正确?
    • 是否在允许的范围内?
    • 是否存在重复输入?
    • 是否符合其他特定要求?

SQL

  • 什么是SQL(Structured Query Language(结构化查询语言))
    • SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。
  • SQL语句
    • SQL用;结尾,否则认为语句未结束
    • ->代表SQL语句未结束
    • 取消SQL语句用\c
    • SQL语句关键字和函数名不区分大小写(Linux区分,Windows不区分)
    • 使用函数时,函数名和后面的括号之间不能有空格
  • 使用字符串需要转义字符


    Paste_Image.png

数据类型

  • CHAR和VARCHAR类型
    • CHAR类型和VARCHAR类型长度都是0~255之间的大小,他们之间的差别是mysql处理存储的方式
    • CHAR把这个大小视为值得准确大小,(用空格填补比较短的值)
    • VARCHAR把它视为最大值并只使用字符串实际使用的需要字节数,较小的值存入VARCHAR类型的字段时,将不会用空格填补。(较长值仍然会被截断)
  • 数值列类型
    • mysql为除了NULL值外的所有通用数据提供了列类型。列类型是一种手段,通过该手段可以描述表类需要什么类型的表。


      Paste_Image.png
      Paste_Image.png
  • 时间和日期类型


    Paste_Image.png
    • 说明
      • 每个时间和日期列类型都有一个零值,当插入非法数值时就用零值来添加
      • 表示日期时必须先按:年,月,日的顺序给出
      • DATE ,TIME ,DATETIME分别是存储日期,时间与日期和时间的组合,其格式为“YYYY-MM-DD”,“hh:mm: ss”和“YYYY-MM-DD hh:mm: ss”,对于DATETIME类型,日期和时间部分都需要
        TIMESTAMP
      • 时间戳列类型以YYYYMMDDhhmmss的格式来表示值,其取值范围是19700101000000到2037年的某个时间,主要用于记录更改或创建某个记录

  • 创建表
:create table 表名(
列名1  列类型  [<列的完整性约束>],
列名2  列类型  [<列的完整性约束>], 
        ... ...   );
create database test01;//创建名为test01的库
use test01;//进入库
show tables;//查看库内有几张表
creat table data11(showtime time);//创建一行一列的表,表名data11,列名show time
insert into data11 values('11:11:11'),('11:11'),(111111);//插入数据
select * from data11;//查看表
Paste_Image.png
create table data12(f_data date,f_time);
insert into data12 (f_data,f_time)     values('1978-4-6',123421),(650503,'3:4:1');
Paste_Image.png
create table data12(f_data date,f_time);
insert into data14('1999-11-11 11:11:11','2002-11-11 11:11:11');
insert into data14 values(now(),null);
Paste_Image.png
create table t1(num1 int not null,num2 int);
insert into t1(-1,-2) values(10);
Paste_Image.png
create tablet2(num1 int null,num2 int) 
insert into t2(num2) values(10);
Paste_Image.png
create table t3(num1 int default 100,num2 int);
insert into t3(num2) values(2);
Paste_Image.png
create table t4(num2 int zerofill);
insert into t4 values(2);
Paste_Image.png
create table t5(num1 int unique,num2 int);
insert into t5 values(1,2);
insert into t5 values(1,2);
Paste_Image.png
create table t6(num1 int auto_increment unique not null,num2 int);
insert into t6 (num2)values(10);
insert into t6 (num2)values(10);
insert into t6 (num2)values(10);
Paste_Image.png
insert into t6 values(100,10);
insert into t6 (num2)values(10);
Paste_Image.png
delete from t6;
insert into t6 (num2)values(10);
Paste_Image.png

引用完整性

  • 主键和外键

    • 数据表之间的关联/引用关系是依靠具体的主键(primary key)和外键(foreign key)建立起来的。
    • 主键:帮助MySQL以最快的速度把一条特点的数据记录的位置确定下来。
      • 主键必须是唯一的
      • 主键应该是紧凑的,因此整数类型比较适合
    • 外键:引用另外一个数据表的某条记录。
      • 外键列类型尽可能与主键列类型保持一致
      • 外键列应该加上NOT NULL
  • 注意点

    1. 当主表中没有对应的记录时,不能将记录添加到子表
    2. 不能更改主表中的值而导致子表中的记录孤立
    3. 子表存在与主表对应的记录,不能从主表中删除该行
    4. 删除主表前,先删子表
  • 插入insert

    • 直接在外键插入信息,会报错
    主键
    create table student(
        sid int not null auto_increment,
        name varchar(20) not null,
        primary key(sid)
    );
    外键(自动检查外键是否匹配,仅适用InnoDB)
    create table score(
        cid int not null auto_increment primary key,
        score int,
        sid int,
        foreign key(sid) references student(sid)
    );
    
    insert into score (score,sid) values(100,1);
    
    Paste_Image.png
    insert into student (name) values('ssh');
    
    Paste_Image.png
    insert into score (score,sid) values(100,1);
    
    Paste_Image.png
    • 直接删除主键会报错
    delete from studnet;
    drop from student;
    
    Paste_Image.png
    • 插入中文
    create table t7(name char(20),id int);
    insert into t7 values('ssh',1);
    insert into t7 values('孙苏徽',1);
    
    Paste_Image.png
    create table t7(name char(20),id int) default     charset=utf8;
    insert into t7 values('ssh',1);
    insert into t7 values('孙苏徽',1);
    
    Paste_Image.png

更改表结构

  1. add 列名 建表语句 [first | after 列名]
    • 可以为表添加一列,如果没指定first或者after,则在列尾添加一列,否则在指定列添加新列
  2. add primary key (列名)
    • 为表添加一个主键,如果主键已经存在,则出现错误
  3. add foreign key(列名) references
    • 表名(列名)为表添加一个外键
  4. alter 列名 set default 默认值
    • 可以更改指定列默认值
  5. change 旧列名 新列名 <建表语句> [first | after 列名]
    • 可以更改列类型和列名称,如果原列的名字和新列的名字相同
  6. modify 列名 <建表语句> [first | after 列名]
    • 和change的作用相同
  7. drop 列名 //可以删除一列
  8. drop primary key //可以删除主键
  9. engine 类型名 //可以改变表类型
  10. rename as 新表名 //可以将表名更改
  • alter各种使用
    • 新建一个列
    alter table t8 add address int after name;
    desc t8;
    select * from t8;
    
    Paste_Image.png
    • 设address默认值
    alter table t8 alter address set default 100;
    desc t8;
    
    Paste_Image.png
    • change id为number 属性char(20)
    alter table t8 change id number char(20);
    desc t8;
    select * from t8;
    
    Paste_Image.png
    Paste_Image.png
    • change name 属性
    alter table t8 change name name int;
    desc t8;
    select * from t8;
    
    Paste_Image.png
    • modify使用
    alter table t8 modify name char(20);
    
    Paste_Image.png
    • drop使用
    alter table t8 drop address;
    
    Paste_Image.png
    • rename使用
    alter table t8 rename as t9;
    
    Paste_Image.png

mysql运算符

  • select
    • select 与binary
    select 'x'<>'X';
    select binary 'x'<>'X';
    
    Paste_Image.png
    • between
    select 10 between 10 and 100;
    
    Paste_Image.png
    select 'x' between 'a' and 'z';
    
    Paste_Image.png
    select 7 in(1,2,3,4,5,6,7);
    select 7 in(1,2,3,4,5,6);
    
    Paste_Image.png
  • NULL
    • IS NULL 或者 IS NOT NULL来测定是否为空
    • 可以使用特殊的<=>运算符,MySQL称为”NULL安全的等于”运算符。这意味着即使当包含在比较运算符中的表达式含有一个NULL值时,MySQL也会为比较运算符返回一个真值或假值。


      Paste_Image.png
  • 通配符
    • “%” (百分号) 代表任意长度(长度可以为0)的字符串
      • a%b表示以a开头,以b结尾的任意长度的字符串。如acb,addgb,ab 等都满足该匹配串
    • “_”(下横线) 代表任意单个字符
      • a_b表示以a开头,以b结尾的长度为3的任意字符串。如acb,afb等都满足该匹配串
    select 'mysql' like '%SQL',binary 'mysql' like '%SQL'
    
    Paste_Image.png

相关文章

  • 【mysql-基础篇】

    mysql-基础篇 一、常见命令 1、sql常见命令 查看当前所有的数据库:show databases; 打开指...

  • mysql-(数据库基础)

    mysql 什么是数据(data):硬盘中存的东西...... 数据库:数据库是存储在一起的相关数据的集合,这些数...

  • MYSQL-数据库基础

    1、不同角色的人对数据库知识学习的侧重点: 研发人员(测试及开发人员):主要学习如何操作数据库的逻辑对象,如表、索...

  • MySQL-数据库基础

    数据库 数据库是一个存储数据的仓库 DB(Database) 数据库 DBMS(Database Manageme...

  • MySQL——基本语句

    Mysql-基础语法 导语 本博文主要是简述选择数据库和对表内容的增、删、改和查的一些基本语法 USE 语法: U...

  • MySQL-15分布式架构-MyCAT

    MySQL-分布式架构-MyCAT 1. MyCAT基础架构图 2. MyCAT基础架构准备 2.1 环境准备: ...

  • MySQL-性能优化-优化设计和设计原则

    MySQL-性能优化-优化设计和设计原则 MySQL性能优化目的 如何合理的设计数据库? 什么样的数据库设计才能给...

  • Java进阶-MySQL-基础

    一、Java进阶-MySQL-基础 1.1 客户端连接 1.2 字符集和比较规则 SHOW CHARSET; /...

  • mysql-基础

    参考资料:MySQL 5.7 官方文档 1. 约束 Cosntraints 键值约束-Miss锦 NOT NULL...

  • MySql-基础

    1.MYSQL数据类型 整数类型 TINYINT、SMALLINT、 MEDIUMINT、INT、BIGINT属性...

网友评论

      本文标题:mysql-(数据库基础)

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