MySQL1基础

文章目录

  • 基础概念
  • 数据库完整性:
  • mysql操作
        • 软件操作
        • 数据库操作
        • 表操作:
        • 数据操作
        • 备份和恢复

基础概念

数据库系统DBMS:数据在计算机中存储并计算,用数据库系统进行管理

  • 数据库系统可以持久化存储,优化读写,保证数据的有效性

当前数据库分两类:

  • 文档型(如sqlite,以文件形式储存数据,复制文件即复制数据库)
  • 服务型(如MySQL、postgre:数据存储在物理文件中,需要使用终端以tcp/ip协议链接来进行数据库读写操作)

E-R模型:Entity-Relationship model

  • (1)实体集用矩形框
  • (2)实体的属性用椭圆框,框内写上属性名,并用无向边与其实体集相连。
  • (3)实体间的联系用菱形框,联系以适当的含义命名,用无向连线将参加联系的实体矩形框分别与菱形框相连,并在连线上标明联系的类型,即1—1、1—N或M—N。

字符编码:gb2312 中国通用;utf-8 国际通用。创建数据库时指定

数据库完整性:

数据被数据类型和约束所限制,以保证数据正确性
数据类型:(数据有效性保证)

  • 数字:int,decimal
    • 如:decimal(5,2)
      
  • 字符串:char,varchar,text
    • 如:char(4)右补空格固定长度:"32  "     
          varchar(4)最长长度:"3232"      text不限长
      
  • 日期:datetime,date,time
    • 如:datetime日期时间,date日期,time时间
      
  • 位数据:bit
    • 值为0或1,对于值为两个互斥的字段可以用bit类型来降低数据存储开销:
      如性别、逻辑删除→扩展多状态0 1 10 11
      

约束:(数据正确性保证)

  • 主键primary key     表中只有一个主键,值不重复(可标识实体唯一性),物理上存储结构是按主键维护的(作为外键引用效率快)
  • 非空not null
  • 惟一unique       表中可有多个唯一约束的字段,值不能重复。
  • 默认default       default(1) 默认值1
  • 外键foreign key     指定其值只能来自特定表的主键的值
  • 自动增长auto_increment
  • 基本常用的主键约束:auto_increment primary key not null
  • ps:表设计可以预留1~5个字段为扩展使用;逻辑删除:isDelete、DeleteFlag

mysql操作

软件操作

进入数据库命令行:mysql -uroot -p密码

  • 查看版本:select version();
  • 显示当前时间:select now();
  • 退出 quit;

远程链接:mysql -hip地址 -uroot -P端口 -p密码

  • -P不指定,为默认3306端口

密码设置:

  • root密码为空时:设置新密码
    mysqladmin -uroot newpassword;

  • 密码不为空,使用sqladmin命令修改密码:
    mysqladmin -uroot -p123456 password 1234567;

  • 使用set passsword命令修改密码:
    set password for 用户名@localhost = password(‘新密码’);

  • 忘记root密码情况下(设置配置文件跳过验证再修改用户表的密码):

    # 1.跳过MySQL的密码认证(windows下修改的是my.ini):
      vim /etc/my.cnf
    # /mysqld(vim编辑状态下搜索文本)
    # 在[mysqld]文本段:后面任意一行添加“skip-grant-tables”用来跳过密码验证,:wq
    # 2.重启MySQL(有些用户可能需要使用/etc/init.d/mysqld restart),进入mysql服务端:
    /etc/init.d/mysql restart
    mysql
    # 3.用sql修改root的密码
    mysql>mysql -u root -p 
    (回车)
    mysql> update user set password=password("你的新密码") where user="root";
    mysql> flush privileges;
    mysql> quit
    # 注意:如果在执行该步骤时出现ERROR 1290 (HY000): The MySQL server is
     running with the --skip-grant-tables option so it cannot execute this statement 。
     则执行flush privileges 命令后再执行该命令即可。
    # 4.编辑my.cnf,去掉刚才添加的内容,然后重启MySQL。
    

数据库操作

创建数据库:create database 数据库名 charset=utf8;
删除:drop database 数据库名;
切换:use 数据库名;
查看当前选择的数据库:select database();
查看所有数据库:show databases;

表操作:

创建表:create table 表名(列及类型);

  •   如:   create table students(
      							id int auto_increment primary key not null,
           						sname varchar(10) not null
      						     );
    

修改表:alter table 表名 add|change|drop 列名 类型 约束;

  •    如:   alter table students add birthday datetime;
    

删除表:drop table 表名;
清空表:truncate table 表名; (删除内容释放空间但不删除定义(保留表数据结构))

查看当前选择的数据库的所有表:show tables;
查看表结构:desc 表名;
改表名:rename table 表名;
查看表创建语句:show create table ‘表名’;

  •   PRIMARY KEY('id') ENGINE=InnoDB DEFAULT CHARSET=utf8;
      标准写法。InnoDB引擎不一样则底层写入磁盘的底层数据结构不一样
    

数据操作

查询:select * from 表名;
增加:

  • 全列插入:insert into 表名 values(...);
    缺省插入:insert into 表名(列1,...) values(值1,...);     
    		未设置值的字段会自动设置为null,若其约束为not null则会报错;
    同时插入多条数据:insert into 表名 values(...),(...)...;
    或insert into 表名(列1,...) values(值1,...),(值1,...)...;
    

删除:

  •  delete from 表名 where 条件;
    

修改:

  •  update 表名 set 字段=value where 条件;
     逻辑删除实为修改:update students set isdelete=1 where ...;
    

备份和恢复

进入超级管理员:sudo -s
进入mysql库目录:cd /var/lib/mysql

备份数据库2中的数据(运行mysqldump命令):

  •   mysqldump -uroot -p密码 数据库名2 > ~/备份文件名.sql;  
    

在数据库1中恢复数据:

  •   >>> mysql -uroot -p 数据库1名 < ~/备份文件名.sql
      >>> 密码
    

你可能感兴趣的:(#,mysql学习,笔记,mysql)