mysql(一)

一、数据库三层结构

        1.所谓安装mysql数据库,就是在客户端安装一个数据库管理系统(DBMS),这个程序可以管理多个数据库。

        2.一个数据库可以创建多个表,以存储信息。

        3.mysql数据库,普通表的本质仍是文件。

        4.数据在数据库中的存储方式:表的一行称为记录,在java程序中,条记录往往用一个对象表示。

        5.sql语句分类:

        1)DDL:数据定义语句(如create 表 库)

        2)DML:数据操作语句(如insert(插入)、update(更新)、delete(删除))

        3)DQL:查询语句(select)

        4)DCL:数据控制语句(管理数据库,比如用户权限grant、revoke)

二、数据库操作

1.创建数据库

#演示数据库的操作

#创建一个名为myDb01的数据库
create database myDb01;
#删除数据库指令
drop database myDb01;

#创建一个使用utf-8字符集的数据库myDb02
#character set指定数据库采用的字符集,如果不指定,默认是utf8
create database myDb02 character set utf8;

#创建一个使用 utf8 字符集,并带校对规则的 hsp_db03 数据库
#collate 指定数据库字符集的校对规则,utf8_bin区分大小写,utf8_general_ci不区分大小写,默认是#utf8_general_ci
create database myDb02 character set utf8 collate utf8_bin;

#下面是一条查询的 sql , select 查询 * 表示所有字段 from从哪个表 where从哪个字段
select*from table01
where name='tom';

 2.查看、删除数据库

#演示删除和查询数据库
#查看当前数据库服务器中的所有数据库
show database;

#查看前面创建的 myDb01 数据库的定义信息
show create database `myDb01`;
#在创建数据库,表的时候,为了规避关键字,可以使用反引号解决
#删除前面创建的 myDb01 数据库
drop database myDb01;

3.备份恢复数据库

#备份 myDb01 和 myDb02 库中的数据,并恢复

#备份数据库(在Dos执行)命令行
mysqldump -u root -p -B myDb01 myDb02>d:\\fold.sql;

#恢复数据库(注意:进入 Mysql 命令行再执行)
source d:\\fold.sql;

#备份数据库中的表
mysqldump -u root -p -B myDb01 表1 表2 表n>d:\\文件名.sql;

4.创建表

create table 表名(

field1 datatype,

field1 datatype,

field1 datatype

)character set 字符集 collate 校对规则 engine 存储引擎;

mysql常用数据类型
分类数据类型及其说明
数值类型

BIT(M):位类型,M指定位数,默认值为1,范围是1-64

TINYINT[UNSIGNED]:占一个字节,带符号的范围是-128-127,无符号0-225,默认是有符号

SMALLINT[UNSIGNED] :2个字节,带符号的范围是-2^15-2^15-1,无符号0-2^16-1

MEDIUMINT[UNSIGNED]: 3个字节,带符号的范围是-2^23-2^23-1,无符号0-2^24-1

INT[UNSIGNED]:4个字节,带符号的范围是-2^31-2^31-1,无符号0-2^32-1

BIGINT[UNSIGNED] :8个字节,带符号的范围是-2^63-2^63-1,无符号0-2^64-1

FLOAT[UNSIGNED]:占用空间四个字节

DOUBLE[UNSIGNED]:表示比FLOAT精度更大的小数,占用8个字节

DECIMAL(M,D)[UNSIGNED]:定点数M指定长度,D表示小数点的位数

文本、二进制类型

char(size):固定长度字符串,最大长度为225

varchar(size):可变长度字符串,长度最大为2^16-1

BLOB  LONGBLOB:BLOB二进制数据0-2^16-1,LONGBLOB二进制数据0-2^32-1

TEXT  LONGTEXT:文本TEXT 0-2^16-1,LONGTEXT 0-2^32-1

时间、日期

DATE/DATETIME/TimeStamp:日期类型(YYYY-MM-DD)(YYYY-MM-DD HH:MM:SS),TimeStamp表示时间戳,它可以自动记录insert、update操作的时间

使用规范:在满足需求的情况下,尽量选用占用空间小的。

5.修改表

使用ALTER TABLE语句追加、修改或删除的语法

修改表-基本介绍
添加列

alter table tablename

add(column datatype [default expr]

[,column datatype ]...

);

修改列

alter table tablename

modify(column datatype [default expr]

[,column datatype ]...

);

删除列

alter table tablename

drop(column datatype [default expr]

[,column datatype ]...

);

修改表名:rename table 表名 to 新表名

修改表字符集:alter table 表名 character set 字符集;

#创建一个表 Student
create table Student(
name varchar(10),
age int,
gender varchar(10),
id varchar(10)
)charset utf8 collate utf8_bin engine innodb;
-- 在表Student上添加一个grade列(在gender之后)
alter table Student
add grade int not null default ''
after gender;
-- 删除age列
alter table Student
modify age int not null default '';
-- 表名改为Stu
rename table Student to Stu;
-- 修改表的字符集为utf8
alter table Stu character set utf8;
-- 列名name修改为stu_name
alter table Stu
change `name` `stu_name` varchar(10) not null deafult''
-- 显示表结构,可以查看表的所有列
desc Stu

6.Insert语句

#向Student中插入一条记录
-- 在values中列出的数据位置必须与被加入的列的排列位置相对应
-- 字符和日期数据必须包括在单引号中
-- 列可以插入空值,前提是该字段允许为空
-- 如果是给所有字段添加数据,可以不写前面字段名称
-- 默认值的使用,当不给某个字段值时,如果有默认值就会添加默认值,否则报错
-- 如果某个列 没有指定 not null ,那么当添加数据时,没有给定值,则会默认给 null 
-- 如果我们希望指定某个列的默认值,可以在创建表时指定
insert into `Student`(stu_name,gender,grade,id)
values('小明','boy',100,'0423898');

7.update语句

#update语句的使用
-- 将所有学生的成绩修改为100
update Stu set grade=100;
-- 将名为小明的学生id修改为01
update Stu set id=0
where stu_name='小明';
-- update语法可以用新值更新原有表行中的各列
-- set子句提示要修改哪些列和给予哪些值
-- where子句指定要更新哪些行,若没有where子句,则更新所有的行
-- 如果需要修改多个字段,可以通过 set 字段1=值1,字段2=值2...

8.delete语句

-- 删除表中名称为'小明'的记录
delete from Stu
where name='小明';
-- 删除表中所有记录
delete from Stu;
-- delete不能删除某一列的值,可以用update设为null
-- 删除这个表
drop table Stu;

 9.select语句

-- 查询表中所有学生信息
select*from Stu
-- 查询表中所有学生的姓名和对应的成绩。
select `name`,grade FROM student;
-- 过滤表中重复数据,要查询的数据每个字段都相同,才会去重
select distinct grade from Stu;


#向学生中添加成绩
alter table Stu
add grade1 int;
alter table Stu
add grade2 int;

#在select语句中可以使用as语句
selec column_name as 别名 from 表名
-- 统计每个学生的总分
select stu_name as name,(grade+grade1+grade2) as total_grade 
from Stu;

在where子句中经常使用的运算符

比较运算符:

  • >  <  <=  >=  =  <>  !=
  • between...and... 显示在某一区间的值
  • in(set) 显示在in中的值,例:in(100,200)
  • like '张...'  not like ' '模糊查询   
  • is null 判断是否为空

逻辑运算符:

  • and:多个条件同时成立
  • or:多个条件任一成立
  • not:不成立,例:where not(grade>90)
-- 查询grade为98,87,65的学生
select*from Stu
where grade in(98,87,65);
select*from Stu
where grade=98 or grade=87 or grade=65;
-- 查询所有姓陈的学生成绩
select*from Stu
where `name` like '陈%';
  • 19
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值