mysql基础

SQL:结构化查询语言 (Structured Query Language)

默认端口:3306

连接字符串:server=127.0.0.1;uid=root;pwd=root;database=test

安装:yum安装rpm包,建议5.5以上版本。

SQL语句分类:

DDL:数据定义语言。负责数据库定义、数据库对象定义,有CREATE、ALTER、DROP组成。

DML:数据操作语言。负责数据库对象的操作,CRUD增删改查。

DCL:数据控制语言。负责数据库访问控制,由GRANT和REVOKE组成。

TCL:事物控制语言。负责处理ACID事务,支持commit、rollback。

Note:
    • 大小写不敏感
    • 语句末尾应使用分号

授权:
GRANT ALL ON DatabaseName.TableName TO 'UserName'@'host' IDENTIFIED by 'Password';
注:授权所有权限给 库.表 给 用户@主机 密码是
例:GRANT ALL ON employee.* TO 'test'@'%' IDENTIFIED by 'test';

撤销:
REVOKE ALL ON DatabaseName.TableName FROM UserName;
注:撤销用户的 库.表 的所有权限
例:REVOKE ALL ON employee.* FROM test;


删除用户:
DROP USER user1;

创建数据库:
CREATE DATABASE IF NOT EXISTS students CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
注:
    • CHARACTER SET utf8mb4 字符集在MySQL5.53+以上版本
    • COLLATE 字符集比较大小

删除数据库:
DROP DATABASE IF EXISTS students;

创建表:
CREATE TABLE 'employees' (
    'emp_no' int(11) NOT NULL,
    'birthday' date NOT NULL,
    'first_name' varchar(14) NOT NULL,
    'last_name' varchar(16) NOT NULL,
    'gender' enum('M', 'F') NOT NULL,
    'hire_date' date NOT NULL,
    PRIMARY KEY('emp_no')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
注:
    • InnoDB支持事务的引擎
    • 实际开发中使用工具(Navicat)来建表,能看懂就行


查看表
DESC employees; # 查看所有列
DESC employees %name; # 查看name结尾的列

PRIMARY KEY 主键:一列或多列组成的唯一的key。
注:
    • 一般选择整形或长整形的某一列作为主键
    • 少用其他类型或组合列作为主键
    • 主键要设置为AUTO_INCREMENT自增
    • 每个表一般都有一个主键

Index 索引:根据一个字段或多个字段建立的字典。(查询提速)
注:
    • 能显著提高查询效率
    • 降低其他操作效率
    • 主键索引:主键会自动建立索引
    • 唯一索引:可以为空,只要不为空则必须唯一
    • 普通索引:没有唯一性要求
    • 如果表读多,写少,可以任意建立索引
    • 如果表写多,读少,不要大量建立索引

Constraint 约束:
    • 唯一约束:UNIQUE
    • 主键约束:PRIMARY KEY。主键自动添加
    • 外键约束:FOREIGN KEY。
    • 外键:表B中的列,关联表A中的主键,则表B中的列就是外键
    • 表关联关系中,对表的删除和更新时需要关注
    • 保证数据的一致性和完整性,杜绝数据的冗余

View 视图:
    • 是一张虚拟表,是真实表的联合查询结果
    • 可以进行CRUD操作,但建议只做查询使用
    • 很复杂的查询语句,可以写成视图
    • 视图是数据安全的,可以控制字段的显示

数据类型:

    • 整型:tinyint > smallint > int > bigint

    • 浮点数:一般需要确定精度(小数点后几位)

    • 日期

    • 字符


char:字符串长度等长,但会浪费空间。
varchar:字符串长度可以变长,省空间。(不经常修改的字段可以使用)
但数据量大,要修改其中一个字符串长度,那么所有存储空间都必须动
注:如何选择应该根据实际情况

最佳实践:
    • 给表加一个id字段(int),作为单一主键,(自增、无符号)
    • 字符串做主键,效率肯定没有整数高。
    • 表里面有记录的情况下,不能随便乱加字段,尤其是表在线上正在使用时
    • 所以,设计表时多添加两个字段reserved1、reserved2,作为冗余,空间换实践,避免上述情况发生
    • 表设计时,是否需要冗余字段,需要看将来对表的改动有多大

 


    
    

posted on 2018-08-29 10:55  栗子测试  阅读(130)  评论(0编辑  收藏  举报