Mysql数据库入门

数据库概述

MySql数据库卸载与安装

卸载

  1. 停止mysql服务
  2. 进入控制面板->卸载
  3. 进入program files目录删除->mysql子目录(安装的参与文件)
  4. 进入programData目录(默认隐藏)删除mysql子目录->(数据文件所在目录)

Mysql基本命令

  • 登录到mysql命令行客户端(cmd)

    mysql -h localhost -uroot -p123456
    
  • 修改密码(cmd)

    mysqladmin -uroot -p123456 password root
    
  • 在系统命令行中创建数据库实例

    mysqladmin -uroot -proot create mydb
    
  • 在系统命令行中删除数据库实例

    mysqladmin -uroot -proot drop mydb
    
  • 显示mysql数据库的实例

    show databases;
    
  • 创建新的数据库实例

    create database mydb;
    
  • 使用实例

    use mydb
    
  • 显示实例中的所有表

    show tables;
    
  • 查看指定表结构

    desc user;
    
    
  • 从mysql命令行客户端退出

    exit/quit
    
  • 放弃正在输入的命令,进入下一次输入

    \c[lear]
    
  • 打开命令列表

    \h[elp]
    

SQL语句入门

SQL(Structured Query Language),结构化查询语句,语法类似英语口语, 是一门用于操作数据库的通用命令语言;SQL语句一般分为以下几类:

  1. DDL语句(数据定义语句)
  2. DML语句(数据操作语句)
  3. DCL语句(数据控制语句)
  4. 内置函数

DDL语句

​ 数据定义语句,一般包含对于数据库,表,视图,索引,过程,函数,触发器等进行结构操作的语句,比如:创建表,删除表,修改表结构都称之为DDL;一般包含这些命令:create、drop、alter、change、modify、add等。

  • 创建一张表:

    create table student(
        sno int,
        sname varchar(10),
        age int,
        sex char(2)
    );
    
  • 向表中新增列(向表student中新增一个birth列,类型为date)

    alter table student add birth date;
    
  • 删除列(删除表student中的age列)

    alter table student drop age;
    
  • 修改表名称

    rename table student to tb_stu;
    
    alter table tb_stu rename to stu;
    
  • 修改列名称

    alter table stu change birth birthday date;
    
  • 修改列类型

    alter table product modify price decimal(7,2);
    
  • 向表中的指定字段添加约束

    alter table stu add constraint primary key(sno);
    
  • 删除表

    drop table stu;
    

DML语句

​ 数据操作语句,一般包含用于对表中的数据操作的命令,比如:新增数据,删除数据,修改数据,查询数据;包含的命令有: insert、delete、update、select等。

  • 添加数据到表中

    insert into 表名称(列名…) values(值…)

    向所有列插入值

    insert into emp values(1001,'易大师',3500.06,'2018-10-01');
    

    向指定列插入值

    insert into emp(ename,sal,hiredate) values('马尔咋哈',8500.09,now());
    

    向表中一次性插入多行记录

    insert into emp(ename,sal,hiredate) values('波比',4398.67,'2018-12-12'),
    									   ('艾希',9566.8,'2017-11-11'),
    									   ('墨菲特',4300,'2019-01-22');
    
  • 查询所有数据

    select 列名 from 表名称 [附加条件]

    select * from emp;
    
  • 修改表数据

    update 表名称 set 列名1=新值1,列名2,=新值2… where 条件

    update emp set sal=3501.06 where eno=1001;
    
  • 删除记录

    delete from 表名称 where 条件

    delete from emp where eno=1003;
    

DCL语句

数据控制语句,一般由数据库管理员(DBA),使用这些命令,操作数据库相关的权限,比如授权,解除权限,常见命令有: grant、revoke等。

Mysql数据类型

在程序中,只要是数据就存在数据类型,因此在mysql数据中对于不不同的数据也会使用不同的数据类型来声明,mysql中数据类型分为以下几类:

  • 数值类型(整数型,浮点型)
  • 字符串型(可变长度字符串以及定长字符串)
  • 日期时间类型

数值类型

类型名称 长度
bit 1bit
tinyint 1字节
smallint 2字节
mediumint 3字节
int 4字节
bigint 8字节
float 4字节
double 8字节
decimal(m,n) m个字节,小数点有n位

auto_increment

设置列自动递增,一般只能对标识列(主键列)设置,并且必须是整数型类型。

unsigned

设置列为无符号列,即列值不允许为负数

zerofill

设置前导填充,当数值长度未达到定义长度时,前面补零填充宽度

字符串类型

类型名 描述
char(m) 定长字符串
varchar(m) 可变长度字符串
tinyblob 二进制大对象
smallblob 二进制大对象
mediumblob 二进制大对象
longblob 二进制大对象(2G)
tinytext 大文本对象
smalltext 大文本对象
mediumtext 大文本对象
longtext 大文本对象(2G)
enum 枚举(只能从枚举中选择一个作为值)
set 集合(功能同上,只能包含64个元素)

char和varchar的区别:

char:是一个定长字符串,取值范围是0~255之间(根据数据库的编码来决定),一旦使用char类型定义列,则在添加数据时无论数据的实际大小是多大,始终会见申请的空间占满,不够使用空格填充。因此char类型一般用于长度确定的数据列(比如:手机号,性别,身份证号等)。

varchar:是一个可变长度的字符串,取值范围是0~65535之间(根据数据库的编码来决定),在定义字符串列时,如果使用varchar,则在添加数据到列中时,系统会自动根据添加的数据长度申请空间,因此从存储角度来说varchar更节省空间,效率实际低于char;因此varchar一般用于长度不确定的字符串列

字符串类型占据的空间跟编码有关。UTF-8占据3个字节,GBK占据2字节

日期类型

类型名 描述
time 表示时间(3字节)
date 表示日期(3字节)
datetime 表示日期时间(8字节)
timestamp 时间戳(精确时间)(4字节)
year 表示年(1字节)

使用timestamp类型时,可以指定默认值为CURRENT_TIMESTAMP,但是一张表中只允许一个timestamp列的默认值为CURRENT_TIMESTAMP.

常用数据类型总结

虽然mysql中包含很多数据类型,但是实际开发中也只会选择一些常见的数据类型,如下表:

Mysql数据库入门_第1张图片

##约束

为了维护数据的完整性,一般在数据库系统中都会有一些维护完整性的解决方案,比较常见的方式为两种:

  1. 约束(constraint)
  2. 触发器(trigger)

约束分类

  • 主键约束(primary key)

  • 不为空约束(not null)

  • 唯一约束(unique)

  • 检查约束(check)(mysql无效)

  • 外键约束(foreign key)

    create table t(
        id int auto_increment,
        name varchar(32) not null,
        loginid varchar(20) unique,
        sex char check(sex in('男','女')),
        primary key(id)
    );
    
  • 新增列的同时设置该列为外键列并关联指定表的主键列

    alter table emp add dno int references dept(dno);
    
  • 修改表中的指定列为外键

    alter table emp add constraint foreign key(dno) references dept(dno);
    

你可能感兴趣的:(masql,数据库)