美文网首页
Mysql 数据库基础知识及常用指令(1)

Mysql 数据库基础知识及常用指令(1)

作者: 王朝是我的笔名 | 来源:发表于2018-11-19 10:53 被阅读0次

    Mysql安装配置

    my.ini ——>配置文件 端口号:3306

    default-character-set = utf8 -->默认编码方式

    basedir = 基础安装目录

    datadir = 数据文件存放的目录

    character-set-server= utf8 在服务器上的存储方式

    启动和关闭mysql 图形化界面(服务列表)/命令行界面

    net start mysql 启动服务
    net stop mysql 停止服务

    mysql的操作梗概:

    1. 登录退出
    2. 修改mysql提示符
    3. mysql常用命令
    4. mysql语句规范
    5. 数据库操作

    登陆与退出

    登陆:

    mysql -u  --user=name  用户名
    mysql -u root  
    mysql -p  --password[=name]  密码
    mysql -uroot -p    
    mysql -P --port=#    端口
    mysql -P3306    
    mysql -h  --host=name 服务器名称    
    mysql -h 127.0.0.1
    mysql -uroot -p123456 -P3306 -h127.0.0.1
    

    退出

    exit;  
    quit;  
    /q;
    

    通用查询

    select version();   查看版本
    show engines;       查看引擎
    select user();      查看当前用户
    

    mysql语法规范

    1. 关键字与函数名称全部大写
    2. 数据库名称,表名称,字段名称全部小写
    3. sql语句必须以分号结尾

    创建数据库
    说明:{必选项} [可选项]

      CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name  
    
      CREATE DATABASES study;    
    
      SHOW {DATABASE|SCHEMAS} [LIKE 'pattern'| WHERE expr]
    
      SHOW WORNINGS;      查看错误信息  
    
      SHOW CREATE DATABASE study;
    
      CREATE DATABASE IF NOT EXISTS t2 CHARACTER SET utf8;   
    

    修改数据库

    ALTER {DATABASE|SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name;  
    
    ALTER DATABASE t2 CHARACTER SET gbk;  
    

    删除数据库

    DROP {DATABASE|SCHEMA} [IF EXISTS] db_name;  
    

    数据类型

    数据类型是指列,储存过程参数,表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。    
    

    整型

    1. TINYINT: 1kb
    2. SMALLINT: 2kb
    3. MEDIUMINT: 3kb
    4. INT: 4kb
    5. BIGING: 8kb

    浮点型

    1. FLOAT[(m,d)] m是数字总位数,d是小数点后面的位数,默认精确到7位小数值
    2. DOUBLE[(m,d)]

    日期时间型 存储需求

    1. YEAR 1 1000-9999
    2. TIME 3 1000-9999
    3. DATE 3
    4. DATETIME 8
    5. TIMESTAMP 4 1970-2037

    字符型

    1. CHAR
    2. VCHAR
    3. TINYTEXT
    4. TEXT
    5. MEDIUMTEXT
    6. LONGTEXT
    7. ENUM('VALUE1':'VALUE2'...)
    8. SET('VALUE':'VALUE2'...)

    数据表操作:数据表是数据库最重要的组成部分之一,是其他对象的基础
    行成为记录 列称之为字段

    • USE 打开数据库,USE数据库名称
      SELECT DATABASE();  //查看用户打开的数据
      CREATE TABLE [IF NOT EXISTS] table_name(
          column_name data_type,
          ...
      )
      
      > CREATE TABLE tb1(
          username VARCHAR(20),
          age TINYINT UNSIGNED,
          salary FLOAT(8,2) UNSIGNED
      );
      
      

    查看数据表是否存在

    • SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr]

    查看数据表的结构

    • SHOW COLULMNS FROM tb1;
    • DESCRIBE tb1;

    向表中插入数据

    • INSERT tb1 VALUES('TOM', 20, 1234.12);
    • INSERT tb1(username, salary) VALUES('jack', 1123.12);

    查找语句

    • SELECT expr,... FROM tbl_name;

    空值与非空

    • NULL NOT NULL
    • INSERT tb2 VALUES('java', NULL);

    AUTO_INCREAMENT

    • 当插入没有成功的时候编号也自增一
    • 自动编号且必须与主键组合使用
    • 默认情况下,起始值为1,每次的增量为1

    PRIMARY KEY

    • 主键约束
    • 每张数据表只能存在一个主键
    • 主键保证记录的唯一性(行为记录,列为字段)
    • 逐渐自动为NOT NULL
    • AUTO_INCREMENT必须和主键一起使用,主键不一定和AUTO_INCREMENT一起使用

    UNIQUE KEY

    • 唯一约束
    • 唯一约束可以保证记录的唯一性
    • 唯一约束的字段可以为空值(null)只能有一个空值
    • 每张数据表可以存在多个唯一约束

    DEFAULE

    • 默认值
    • 当插入记录时,如果没有明确为字段赋值,则自动赋予默认值,
      CREATE TABLE tb(  
          id SMALLINT UNSIGNED KEY AUTO_INCREMENT,  
          username VARCHAR(20) UNIQUE KEY,  
          sex ENUM('1', '2', '3') DEFAULT'3'  
      );
      

    约束

    • 约束保证数据的完整性和一致性
    • 约束分为表级约束和列级约束
      • 约束所针对字段的数目的多少来决定的
      • 某一个字段列级约束
      • 两个或两个以上的字段称为表级约束
    • 约束类型包括 功能
      • NOT NULL
      • PRIMARY KEY
      • UNIQUE KEY
      • DEFAULT
      • FOREIGN KEY 外键约束
        • 保证数据一致性,完整性
        • 实现一对一或一对多的关系

    外键约束

    • 父表和字表必须使用相同的存储引擎,而且禁止使用临时表
    • 数据表的存储引擎只能为InnoDB
    • 外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
    • 外键列和参照列必须创建索引。如果外键列不存在索引的话,MYSQL将自动创建索引
    CREATE TABLE provinces(
        id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
        pname VARCHAR(20) NOT NULL
    );
    
    CREATE TABLE users(
        username VARCHAR(20) NOT NULL,
        id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
        pid SMALLINT UNSIGNED,
        FOREIGN KEY(pid) REFERENCES provinces(id) ON DELETE CASCADE ON UPDATE CASCADE
    );
    

    编辑数据表的默认搜索引擎
    mysql配置文件(mysql.ini):default-storage-engine = INNODB

    indexes
    SHOW INDEXES FROM provinces\G;

    • 主键在创建时自动创建索引

    外键约束的参照操作
    物理外键

    • CASCADE: 从父表删除或更新且自动删除或更新字表中匹配的行。
      • insert table users(pid,username) values ('A', tom);
      • delete from provices where id = 3;
      • 必须先在父表中插入记录然后才能在子表中插入记录
      • FOREIGN KEY (pid) REFERENCES provinces (id) ON DELETE CASCADE
    • SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。 如果使用该选项,必须保证字表列没有指定NOT NULL
    • RESTRICT:拒绝对父表的删除更新操作
    • NO ACTION: 标准SQL的关键字,在Mysql中与RESTRICT相同

    表级约束和列级约束

    • 对一个数据列建立的约束,成为列级约束
    • 对多个数据列建立的约束,成为表级约束
    • 列级约束既可以在列定义时声明,也可以在列定义后声明,表级约束只能在列顶以后声明。

    修改数据表

    • 添加主键约束:ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] PRIMARY KEY[index_type] (index_col_name..... )
      • ALTER TABLE users ADD CONSTAINT users_id PRIMARY KEY (id);
    • 添加唯一约束:ALTER TABLE tbl_name ADD[CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] (index_col_name,...)
      • ALTER TABLE users ADD UNIQUE (username)
    • 添加外键约束: ALTER TABLE users ADD FOREIGN KEY(pid) REFERENCES provinces (id);
    • 添加或删除默认约束:ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal| DROP DEFAULT}
    • 添加单列:ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name]
    • 添加多列:ALTER TABLE tbl_name ADD [COLUMN] (col_name column_defination, ...) 不能指定位置关系
    • 删除主键约束:ALTER TABLE tbl_name DROP PRIMARY KEY;
    • 删除唯一约束:ALTER TABLE tbl_name DROP INDEXEX username;
    • 删除外键约束:
      • SHOW CREATE TABLE users2; (CONSTRAINT 'users2_ibfk_1')

    删除列
    ALTER TABLE tbl_name DROP [COLUMN] col_name

    修改数据表

    • 修改列定义:ALTER TABLE users MODIFY id SMALLINT UNSIGNED NOT NULL FIRST;
    • 修改列名称:ALTER TABLE tbl_name CHANGE[COLUMN] old_col_name new_col-name column_definition [FIRST|AFTER col_name]
      • ALTER TABLE users CHANGE pid p_id TINYINT UNSIGNED NOT NULL;

    约束

    • 功能划分:
      • NOT NOLL (只能为列级约束)
      • PRIMARY KEY
      • UNIQUE KEY
      • DEFAULT (只能为列级约束)
      • FOERIGN KEY
    • 按数据列的数目划分:
      • 表级约束
      • 列级约束

    修改数据表

    • 针对字段的操作:
      • 添加/删除字段
      • 修改列定义
      • 修改列名称
    • 针对约束的操作:添加/删除各种约束
    • 针对数据表的操作:数据表更名(两种方式modify/change)

    相关文章

      网友评论

          本文标题:Mysql 数据库基础知识及常用指令(1)

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