mysql入门与进阶
MySQL入门与进阶
需求:对一张表中的数据进行增删改查操作(CURD)
C:create 创建
U:update 修改
R:read 读|检索 查询
D:delete 删除
涉及技术:数据库
1、数据库认知
1.1、数据库
本质上就是一个文件系统.通过标准的sql对数据进行curd操作
安装数据库管理系统:数据库管理系统就是一个软件,与安装其他软件操作一样,但是需要进行配置,具体步骤略
1.2、常见的关系型数据库
关系型数据库:存放实体与实体之间的关系的数据库(就是二维表)
实体:用户 订单 商品
关系:用户拥有订单 订单包含商品
非关系型数据库:存放的是对象(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)
2.2 DDL数据定义语言
操作对象:数据库、表
关键词:create alter drop
2.3数据库的CRUD操作
2.3.1创建数据库
语法: * create database 数据库名; * create database 数据库名 character set 字符集; * create database 数据库名 character set 字符集 collate 校对规则;
2.3.2查看数据库
* 查看数据库服务器中的所有的数据库:show databases; * 查看某个数据库的定义的信息:show create database 数据库名;
2.3.3删除数据库
* drop database 数据库名称;
此前有hejh3这个数据库,对其进行删除,执行结果如下:
2.3.4修改数据库
* alter database 数据库名 character set 字符集 collate 校对规则;
2.3.5其他命令操作数据库
* 切换数据库:use 数据库名; * 查看正在使用的数据库:select database();
切换到hejh1数据库:
查看当前使用的数据库:
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) );
例如,创建user1表,
create table user1( id int primary key auto_increment, username varchar(20) );
2.4.2查看表
查看数据库中的所有表:show tables;
查看表结构:desc 表名;
基于2.4.1创建的2张表,用show tables命令查看当前数据库hejh1下所有的表,
查看表结构:desc 表名;
2.4.3删除表
drop table 表名;
hejh1数据库中有,user、user1 2张表,删除user1表,drop table user1;
2.4.4修改表
格式: alter table 表名 ....
hejh1数据库中,修改user表名为user11,命令如下:
修改表名: alter table 旧表名 rename to 新表名;
例如: alter table user rename to user11;
user表中增加password字段(列)
添加字段: alter table 表名 add [column] 字段描述; 例如: alter table user add password varchar(20);
将字段password名字改为pwd,命令如下:
修改字段名: alter table 表名 change 字段名称 新字段描述; 例如: alter table user change password pwd varchar(22);
将pwd字段的类型从varchar改为int类型,命令如下:
修改字段描述: alter table 表名 modify 字段名称 字段类型 [约束]; 例如: alter table user modify pwd int [not null];
删除字段pwd,命令如下:
删除字段: alter table 表名 drop 字段名;
例如:alter table user drop pwd;
2.4.5常用命令
切换或者进入数据库: use 数据库名称;
查看当前数据库下所有表: show tables;
查看表结构:desc 表名;
查看建表语句:show create table 表名;

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');-- 错误的
格式2: insert into 表名(字段名,字段名1...) values(字段值,字段值1...);
注意: 插入指定的字段,必须保证values后面的内容的类型、顺序和表名后面的字段的类型和顺序保持一致.
例如:
insert into user (username,id) values('hh',4);
insert into user (username) values('jack',5);-- 错误的
查看数据插入是否成功
3.2 update数据修改
格式: update 表名 set 字段名=字段值,字段名1=字段值1... [where 条件];
例如: update user set username='hejh1' where username='hh';
注意:
* 1.列名的类型与修改的值要一致.
* 2.修改值得时候不能超过最大长度.
* 3.值如果是字符串或者日期需要加’’.
3.3 delete数据修改
格式: delete from 表名 [where 条件]; 例如: delete from user where id = '4';
面试:删除表中所有记录使用delete from 表名; 还是用truncate table 表名?
* 删除方式:delete 一条一条删除. 而truncate 直接将表删除,重新建表.
* 事务控制DML。delete属于DML,如果在一个事务中,delete数据,这些数据可以找回;truncate删除的数据找不回来。
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 );
插入数据:
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);
