美文网首页
MySQL数据库运维实战第一章(入门)

MySQL数据库运维实战第一章(入门)

作者: 如约而至_8286 | 来源:发表于2019-01-14 21:30 被阅读0次

    一,认识MySQL语言

    1.MySQL语言主要用于存取数据,查询数据,更新数据和管理关系数据库系统
    2.DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
    3.DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE
    4.DQL语句 数据库查询语言: 查询数据SELECT

    二,MySQL名词解释

    1.数据库:
    a自带默认数据库
    information_schema: 虚拟库,主要存储了系统中的一些数据库对象的信息,例如用户表信息、列信息、权限信息、字符信息等
    performance_schema: 主要存储数据库服务器的性能参数
    mysql: 授权库,主要存储系统用户的权限信息
    sys: 主要存储数据库服务器的性能参数
    b用户自建数据库
    2.表:记录的管理单元
    3.记录:信息的载体,字段的管理单元
    4.字段:字段名,字段类型(长度),字段约束组成
    5.类型:字符,数字,日期
    6.约束:不能为空,自动增长
    7.图示:

    三,用户自建库

    1. create databases 数据库名称(数据库名称区分大小写)
      2.查看数据库:show databases
      3.进入一个数据库
      USE 数据库名称
      4.删除数据库
      drop database 数据库名称
      5.MySQL数据库系统文件位置
      源码安装:/usr/local/mysql/data/
      RPM安装:/var/lib/mysql/

    四,数据类型

    1.数值类型 int
    a 整数类型 int
    b 浮点型 floatdouble
    c 定点数类型 dec
    d 位置类型 bit
    2.字符串类型
    a char
    b text
    c blob
    d binary
    e 枚举类型: enum
    f 集合类型: set
    g 时间和日期类型: date time datetime timestamp year

    五,类型测试

    1.前期举例

    创库
    create database haha;
    使用库
    use haha;
    创表1
    create table t1 (id int);
    查看所有表
    show tables;

    插入数据
    insert into t1 values(1);
    查询所有数据
    select * from t1;
    删除表
    drop table t1;

    创表2(两列id 和 name(16长度))
    create table t2 (id int,name varchar(16));

    查看表结构
    desc t2;

    插入数据
    insert into t2 values(1,"zhangsan");
    查询所有数据
    select * from t2;

    修改表名
    ALTER TABLE t2 RENAME t3;

    查看所有表
    show tables;

    增加一列
    ALTER TABLE t3 ADD address varchar (50);

    查看表结构
    desc t3;

    插入数据
    insert into t3 values(1,"wangwu","beijing");
    查询所有数据
    select * from t3;
    在ID列前增加一列(idd int)
    ALTER TABLE t3 ADD idd int FIRST;

    在ID列后增加一列(sex char)
    ALTER TABLE t3 ADD sex char after id;

    查看表结构
    desc t3;
    查看表结构
    desc t3;

    修改name列的列名为mingzi
    ALTER TABLE t3 CHANGE name mingzi varchar(16) ;

    查看表结构
    desc t3;

    把t3 复制 t4
    create table t4 select * from t3;

    查看t3 和t4 的内容
    select * from t3;
    select * from t4;

    2.整数类型测试

    创表
    mysql> create table test1(
    tinyint_test tinyint,
    int_test int
    );

    插入两列合法值
    mysql> insert into test1 values (111,111);
    Query OK, 1 row affected (0.09 sec)

    插入tinyint非法值
    错误的示例:
    mysql> insert into test1(tinyint_test) values(128);
    ERROR 1264 (22003): Out of range value for column 'tinyint_test' at row 1
    正确的示例:
    mysql> insert into test1(tinyint_test) values(127);

    插入int合法值
    mysql> insert into test1(int_test) values(2147483647);
    Query OK, 1 row affected (0.05 sec)

    插入int的非法值
    mysql> insert into test1(int_test) values(2147483648);
    ERROR 1264 (22003): Out of range value for column 'int_test' at row 1
    验证那些值插入成功?
    select * from test1;

    3.无符号类型 unsigned

    创表
    create table test2(
    tinyint_test tinyint unsigned,
    int_test int unsigned
    );

    插入tinyint unsigned 合法值
    insert into test2(tinyint_test) values(255);

    插入int unsigned 合法值
    mysql> insert into test1(int_test) values(2147483648);

    插入两列的非法数值 负数。
    mysql> insert into test2 values(-20,-20);
    ERROR 1264 (22003): Out of range value for column 'tinyint_test' at row 1

    4.整数型 零填充约束 zerofill

    创表
    create table t2 (
    id1 int zerofill,
    id2 int(6) zerofill
    );
    插入值
    mysql> insert into t2 values(2,2);
    Query OK, 1 row affected (0.01 sec)
    查询值
    mysql> select * from t2;
    +------------+--------+
    | id1 | id2 |
    +------------+--------+
    | 0000000002 | 000002 |
    +------------+--------+
    1 row in set (0.00 sec)

    5.浮点型 float

    创表
    create table test4(float_test float(5,2));
    插入数值
    insert into test4 values (10.2), (70.243), (70.246);
    查询结果
    mysql> select * from test4;
    +------------+
    | float_test |
    +------------+
    | 10.20 |
    | 70.24 |
    | 70.25 |
    +------------+
    3 rows in set (0.01 sec)

    6.精准小数decimal类型

    创表
    create table test5(decimal_test decimal(5,2));
    插入数据
    insert into test5 values (70.245);
    查询结果
    select * from test5;

    7.时间型数据的使用方法和特点。date 和time

    创表
    create table test_time(
    d date,
    t time,
    dt datetime);
    查看表结构
    mysql> desc test_time;
    +-------+----------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+----------+------+-----+---------+-------+
    | d | date | YES | | NULL | |
    | t | time | YES | | NULL | |
    | dt | datetime | YES | | NULL | |
    +-------+----------+------+-----+---------+-------+
    插入时间
    insert into test_time values(now(),now(),now());
    查看表内容
    select * from test_time;

    8.字符型数据类型 char ,varchar

    创表
    create table vc (
    v varchar(4),
    c char(4));
    插入数据
    insert into vc values('a','a');
    insert into vc values('ab ','ab ');
    查询数据
    select * from vc;

    9.“单选”“多选”型数据类型 enun,set

    创表
    create table student3(
    name varchar(50),
    sex enum('m','f'),
    hobby set('music','book','game','disc') );
    插入数据
    insert into student3 values ('tom','m','book,game');
    查询
    select * from student3;

    六,完整性约束

    1.目的:a.由于生活中需要避免重名的情况,所以数据库中某列使用完整性约束来限定此类要求。
    b.用于保证数据的完整性和一致性
    2.约束的类型
    a foreign key() 标识该字段为该表的主键,可以唯一的标识记录,不可以为空
    b unique key() 标识该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键)之间的关联
    c auto_incremen 标识该字段的值是唯一的,可以为空,一个表中可以有多个UNIQUE KEY
    d default 为该字段设置默认值
    e notnull 标识该字段不能为空
    f unsigned 无符号,正数
    g zerofill 使用0填充,例如0000001

    七,约束类型测试

    1.掌握约束类型default-默认值,not null-非空
    创表
    create table student.student4(
    id int not null,
    name varchar(50) not null,
    sex enum ('m','f') default 'm' not null,
    age int unsigned default 18 not null,
    hobby set('music','disc','dance','book') default 'book,dance' );

    插入数据
    mysql> insert into student4 values(1,'jack','m',20,'book');
    Query OK, 1 row affected (0.00 sec)

    mysql> select * from student4;

    mysql> insert into student4(id,name) values(2,'robin');
    Query OK, 1 row affected (0.00 sec)
    查询数据
    mysql> select * from student4;

    2.掌握主键约束特性。
    创表
    mysql> create table student6(
    id int primary key not null auto_increment,
    name varchar(50) not null,
    sex enum('male','female') default 'male',
    age int default 18
    );
    插入数据
    mysql> insert into student6 values (1,'alice','female',22);

    mysql> insert into student6(name,sex,age) values
    ('jack','male',19),
    ('tom','male',23);
    Query OK, 2 rows affected (0.00 sec)
    Records: 2 Duplicates: 0 Warnings: 0
    查询
    select * from student6;

    3.掌握唯一约束
    创表
    CREATE TABLE company.department1 (
    dept_id INT,
    dept_name VARCHAR(30) UNIQUE,
    comment VARCHAR(50));
    插入正确数据
    insert into department1 values (1,'zhangsan','yyy');
    insert into department1 values (1,NULL,'yyy');
    insert into department1 values (1,NULL,'yyy');
    插入错误数据
    insert into department1 values (1,'zhangsan','yyy');
    ERROR 1062 (23000): Duplicate entry 'zhangsan' for key 'dept_name'
    查询
    select * from company.department1;

    4.掌握外键约束 FOREIGN KEY
    创表
    mysql> create table employees(
    name varchar(50) not null,
    mail varchar(20),
    primary key(name)
    )engine=innodb;

    mysql> create table payroll(
    id int not null auto_increment,
    name varchar(50) not null,
    payroll float(10,2) not null,
    primary key(id),
    foreign key(name) references employees(name) on update cascade on delete cascade
    )engine=innodb;

    查看表结构
    desc employees;
    show create table payroll\G

    插入测试数据
    insert into employees values ('zhangsan','zhangsan@126.com');
    insert into payroll values (1,'zhangsan',20000.23);
    select * from employees;
    select * from payroll;

    父表更新,子表会如何?
    update employees set name='zhangsansss' where name='zhangsan';
    select * from payroll;

    父表删除,子表会如何
    delete from employees where name='zhangsansss';

    八,MySQL数据库的一些基本操作

    1.修改表名称
    altertable 表名 rename 新表名称
    2.增加字段
    altertable add 字段名称 数据类型 (约束条件)
    3.删除字段
    drop 字段名称 (列)
    4.修改字段
    altertable 表名 change 旧字段名称 新字段名称 新数据类型 (完整约束条件);

    相关文章

      网友评论

          本文标题:MySQL数据库运维实战第一章(入门)

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