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中数据类型分为以下几类:

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

数值类型

类型名称长度
bit1bit
tinyint1字节
smallint2字节
mediumint3字节
int4字节
bigint8字节
float4字节
double8字节
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中包含很多数据类型,但是实际开发中也只会选择一些常见的数据类型,如下表:

在这里插入图片描述

##约束

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

  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);
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值