MySQL入门与进阶

需求:对一张表中的数据进行增删改查操作(CURD)
  C:create 创建
  U:update 修改
  R:read 读|检索 查询
  D:delete 删除
涉及技术:数据库

1、数据库认知

1.1、数据库
  本质上就是一个文件系统.通过标准的sql对数据进行curd操作
安装数据库管理系统:数据库管理系统就是一个软件,与安装其他软件操作一样,但是需要进行配置,具体步骤略

1.2、常见的关系型数据库
  关系型数据库:存放实体与实体之间的关系的数据库(就是二维表)
    实体:用户 订单 商品
    关系:用户拥有订单  订单包含商品

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。


  非关系型数据库:存放的是对象(redis) NO-sql(not only sql)

常见数据库及对应特点
  软件名                  厂商                                特点
  mysql                   oracle                        开源mian的数据库
  oracle                  oracle                        大型的收费的数据库
  DB2                      IBM                          大型的收费的数据库
  sqlserver                微软                          中大型的收费的数据库
  sybase                  sybase                          (powerdesigner)

MYSQL :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费.

Oracle :收费的大型数据库.Oracle公司的产品.Oracle收购SUN公司,收购MYSQL.

DB2 :IBM公司的数据库产品,收费的.银行系统中.

SQLServer:MS公司.收费的中型的数据库.

SyBase :已经淡出历史舞台.提供了一个非常专业数据建模的工具PowerDesigner.

SQLite : 嵌入式的小型数据库,应用在手机端.

Java相关的数据库:MYSQL,Oracle

 

安装了数据库管理系统的计算机称之为数据库服务器
服务器:给别人提供提供服务器(软件服务器)
我们可以通过标准的sql在服务器创建数据库(database),有了数据库之后,就可以在数据库上创建表了,有了表之后,就可以在里面存放数据了.

SQL:结构化查询语句 作用:管理数据库. sql的分类: DDL:数据定义语言 操作对象:数据库和表 关键词:create alter drop DML:数据操作语言 操作对象:记录
     关键词:insert,delete,update DQL:数据查询语言(非官方)
     关键词:select DCL:数据控制语言 操作对象:用户 事务 权限
    关键词:if,grant

 

2、DDL数据定义语言

2.1 mysql数据库的登录

命令:mysql -u root  -p    (即:mysql -u 数据库用户名 -p)

mysql入门与进阶 随笔 第1张

 

2.2 DDL数据定义语言

  操作对象:数据库、表

  关键词:create alter drop

 

2.3数据库的CRUD操作

2.3.1创建数据库

语法: * create database 数据库名; * create database 数据库名 character set 字符集; * create database 数据库名 character set 字符集 collate 校对规则;

mysql入门与进阶 随笔 第2张

 

2.3.2查看数据库

* 查看数据库服务器中的所有的数据库:show databases; * 查看某个数据库的定义的信息:show create database 数据库名;

mysql入门与进阶 随笔 第3张

mysql入门与进阶 随笔 第4张

 

2.3.3删除数据库

* drop database 数据库名称;

此前有hejh3这个数据库,对其进行删除,执行结果如下:

mysql入门与进阶 随笔 第5张

 

2.3.4修改数据库

* alter database 数据库名 character set 字符集 collate 校对规则;

mysql入门与进阶 随笔 第6张

 

2.3.5其他命令操作数据库

* 切换数据库:use 数据库名; * 查看正在使用的数据库:select database();

切换到hejh1数据库:

mysql入门与进阶 随笔 第7张  

 查看当前使用的数据库:

mysql入门与进阶 随笔 第8张

 

 

2.4数据库中表的CRUD操作

 2.4.1创建表

create table 表名( 字段名 类型(长度) 约束, 字段名 类型(长度) 约束 );

java和mysql类型对比   Java MYSQL   
int int   float float   double double   char/String char/varchar(char固定长度字符串,varchar可变长度的字符串)   Date date,time,datetime,timestamp   文件类型 BLOB、TEXT TEXT指的是文本文件 BLOB二进制文件
*
Oracle的文件类型:BLOB CLOB 约束:   单表约束:    * 主键约束:primary key    * 唯一约束:unique    * 非空约束:not null 创建一个分类表: 分类ID int类型 主键 自动增长 分类名称 字符串类型 长度20 create table category( cid int primary key auto_increment, cname varchar(20) ); ***** 注意:建表之前一定先选择数据库.

例如,创建user表,

create table user( id int primary key auto_increment, username varchar(20) );

mysql入门与进阶 随笔 第9张

 

例如,创建user1表,

create table user1( id int primary key auto_increment, username varchar(20) );

 mysql入门与进阶 随笔 第10张

 

2.4.2查看表

查看数据库中的所有表:show tables;
查看表结构:desc 表名;

基于2.4.1创建的2张表,用show tables命令查看当前数据库hejh1下所有的表,

mysql入门与进阶 随笔 第11张

 

查看表结构:desc 表名;

 mysql入门与进阶 随笔 第12张

 

2.4.3删除表

drop table 表名;

hejh1数据库中有,user、user1  2张表,删除user1表,drop table user1;

 mysql入门与进阶 随笔 第13张

 

 2.4.4修改表

格式:  alter table 表名 ....

hejh1数据库中,修改user表名为user11,命令如下:
修改表名:  alter table 旧表名 rename to 新表名;
例如:  alter table user rename to user11;

mysql入门与进阶 随笔 第14张

 

user表中增加password字段(列)

添加字段: alter table 表名 add [column] 字段描述; 例如: alter table user add password varchar(20);

 mysql入门与进阶 随笔 第15张

 

 将字段password名字改为pwd,命令如下:

改字段名: alter table 表名 change 字段名称 新字段描述; 例如: alter table user change password pwd varchar(22);

 mysql入门与进阶 随笔 第16张

 

将pwd字段的类型从varchar改为int类型,命令如下:

修改字段描述: alter table 表名 modify 字段名称 字段类型 [约束]; 例如: alter table user modify pwd int [not null];

 mysql入门与进阶 随笔 第17张

 

删除字段pwd,命令如下:

删除字段:  alter table 表名 drop 字段名;
例如:alter table user drop pwd;

 mysql入门与进阶 随笔 第18张

 

2.4.5常用命令

  切换或者进入数据库: use 数据库名称;

  mysql入门与进阶 随笔 第19张

  查看当前数据库下所有表: show tables;

  mysql入门与进阶 随笔 第20张

  查看表结构:desc 表名;

  mysql入门与进阶 随笔 第21张

  查看建表语句:show create table 表名;

 mysql入门与进阶 随笔 第22张

 

3.DML数据操作语言

操作对象:记录(行)
关键词:insert update delete

 

3.1insert插入数据

语法: * insert into 表(列名1,列名2,列名3..)  values(值1,值2,值3..); -- 向表中插入某些列 * insert into 表  values(值1,值2,值3..); --向表中插入所有列 注意: * 1.列名数与values后面的值的个数相等 * 2.列的顺序与插入的值得顺序一致 * 3.列名的类型与插入的值要一致. * 4.插入值得时候不能超过最大长度. * 5.值如果是字符串或者日期需要加’’. cmd下插入中文的乱码的解决: * 修改mysql.ini文件. * 将[mysql]下面的字符集改为gbk * 重启mysql服务.services.msc
插入:
    格式1:  insert into 表名 values(字段值1,字段值2...,字段值n);
    注意:
        默认插入全部字段,必须保证values后面的内容的类型、顺序和表结构中的一致,若字段类型为数字,可以省略引号

例如:
  insert into user values(1,'hejh');
  insert into user values('2','swy');
  insert into user values('5');-- 错误的

 mysql入门与进阶 随笔 第23张

 

格式2:  insert into 表名(字段名,字段名1...) values(字段值,字段值1...);
注意:  插入指定的字段,必须保证values后面的内容的类型、顺序和表名后面的字段的类型和顺序保持一致.
           
 例如:
      insert into user (username,id) values('hh',4);
      insert into user (username) values('jack',5);-- 错误的

 mysql入门与进阶 随笔 第24张

mysql入门与进阶 随笔 第25张

 

查看数据插入是否成功

 mysql入门与进阶 随笔 第26张

 

 3.2 update数据修改

格式: update 表名 set 字段名=字段值,字段名1=字段值1... [where 条件];
例如: update user set username
='hejh1' where username='hh';

注意:

  * 1.列名的类型与修改的值要一致.

  * 2.修改值得时候不能超过最大长度.

  * 3.值如果是字符串或者日期需要加’’.

mysql入门与进阶 随笔 第27张

 

3.3 delete数据修改

格式: delete from 表名 [where 条件]; 例如: delete from user where id = '4';

 

面试:删除表中所有记录使用delete from 表名; 还是用truncate table 表名?

* 删除方式:delete 一条一条删除. 而truncate 直接将表删除,重新建表.
* 事务控制DML。delete属于DML,如果在一个事务中,delete数据,这些数据可以找回;truncate删除的数据找不回来。

 mysql入门与进阶 随笔 第28张

 

 4.DQL数据查询语言

 关键词:select

格式: select ... from 表名 where 条件 group by 分组字段 having 条件 order by 排序字段 ase|desc
   或
select [distinct]*[列名,列名] from 表 [where 条件]

 

 4.1初始化测试环境

建表:

创建商品表 create table products( pid int primary key auto_increment, pname varchar(20), price double, pnum int, cno int, pdate timestamp );

 mysql入门与进阶 随笔 第29张

mysql入门与进阶 随笔 第30张

 

插入数据:

insert into products values (null,'泰国大榴莲',98,12,1,null); insert into products values (null,'新疆大枣',38,123,1,null); insert into products values (null,'新疆切糕',68,50,2,null); insert into products values (null,'十三香',10,200,3,null); insert into products values (null,'老干妈',20,180,3,null); insert into products values (null,'豌豆黄',20,120,2,null);

mysql入门与进阶 随笔 第31张

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄