欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL学习第一天

程序员文章站 2022-03-08 21:47:16
一、数据库:学习重点:创建数据库/向表添加记录/查询记录数据库概念:文件系统(存储和管理)数据库软件介绍:Oracle/MySQL/SQL server…分类:关系型数据库:关系模型组织数据非关系型数据库:键值对关系存储二、mysql数据的存储方式:一台数据库服务器中会创建很多个数据库(一个项目会创建一个数据库)在数据库中会创建很多张表(一个实体会创建一个表)在表中会有很多......

一、 数据库:

*学习重点:创建数据库/向表添加记录/查询记录
数据库概念:文件系统(存储和管理)
数据库软件介绍:Oracle/MySQL/SQL server…
分类:
关系型数据库:关系模型组织数据
非关系型数据库:键值对关系存储

二、 mysql数据的存储方式:

一台数据库服务器中会创建很多个数据库(一个项目会创建一个数据库)
在数据库中会创建很多张表(一个实体会创建一个表)
在表中会有很多记录(一个对象的实例会添加一条新的记录)

三、 数据库中表和Java中类的对应关系:

数据库中以表的方式存储数据,类似于Java中的类,每个字段会有相应的数据类型;
表名 – Java类
表中的字段 – 类中的属性
表中的记录 – 类创建的对象
浏览器 — Web服务器 — 数据库服务器
用户 项目

四、 SQL: (结构化查询语言:Structure Query Language)

1)	概述:定义了操作所有关系型数据库的规则;
2)	SQL通用语法:
    1.	语句以分号结尾
    2.	空格和TAB增加可读性
    3.	不区分大小写,关键字用大小写
    4.	三种注释; a. -- (通用) b. # (mysql特有) c. /* */
3)	SQL分类: (了解)
	DDL(Database Definition Language): 操作数据库/表
	DML(Database Manipulation Language): 增删改表中的数据
	**DQL(Database Query Language):查询表中的数据
	DCL(Database Control Language):<了解> 授权

五、 DDL: (Definition)操作数据库/表

1) 操作数据库 (CRUD)

1. Create:创建

create database 库名; 创建数据库
create database 库名; 创建数据库
create database if not exists 库名;
create database 库名 character set 字符集名;
create database if not exists 库名 character set 字符集名;

2. Retrieve:查询

show databases; 查看所有数据库;
show create database 库名;查看指定数据库的字符集(创建语句)

3. Update:修改

alter database 库名 character set 字符集名;

4. Delete:删除 (慎用)

drop database 库名;
drop database if exists 库名;

5. 使用数据库

use 库名; (不加database)
select database();查看正在使用的数据库;

2) 操作表 (CRUD)

1. Create:创建

create table 表名 (列名1 数据类型1, 列名2 数据类型2…);

注意:  1.加()  2.最后一列不要逗号  
常见数据类型:
数值类型:
    int: 整数  eg: age int;
    double(m,n):小数 
    	eg:score double(5,2);五位小数,保留两位;
字符串类型  :
    varchar(len):字符串(长度可变)  格式:varchar(字符串长度)
    char:字符串(长度固定)
    	示例: zhangsan 8个字符  张三 2个字符
日期类:
    time(HH-mm-ss):时间
    date: 日期 格式: yyyy-MM-dd eg:19960227 /1996-02-27
    datetime:日期 
    	格式: yyyy-MM-dd HH:mm:ss  eg:19960227052013
   		注意: 如果没有存值,则默认为 Null
    timestamp:时间戳 (stamp邮票)
    	注意: 没有存值,默认系统时间;
//示例:
create table student(
	id int,
	name varchar(30),
	score double(5,2),
	birthday date(yyyy-MM-dd),
	insert_time timestamp
)

2. Retrieve:查询

show tables; – 查询所有的表; (并没有show table 表名;语句)
show create table 表名; – 查看创建表的详细信息
describe 表名;–查询表结构;

3. Update:修改 (八太重要)

a) 修改表名

alter table 表名rename to 新表名; – 修改表名
alter table 表名 character set 字符集名;–修改表的字符集

b) 添加一列:

alter table表名 add 列名 数据类型; – 添加新字段

c) 修改列的名称/类型

alter table 表名 change 列名 新列名 新数据类型;–修改指定的字段
alter table 表名 modify 列名 新数据类型;–修改字段的数据类型

d) 删除列

alter table 表名 drop 列名; 删除表的字段

4. Delete:删除表

drop table 表名;
drop table if exists 表名;

六、 DML: (Manipulation)增删改表中数据

添加数据:

insert into 表名 (列名1,列名2…) value (值1,值2…);
insert into 表名 value (值1,值2…); – 给所有列添加数据
注意:
1.列名和值要一一对应
2.如果不定义列名,默认给所有列添加值,写的时候就要写全,不然报错;
问题:
在命令窗口添加中文数据时,会报错;编码问题;
SHOW VARIABLES LIKE ‘%character_set_%’;模糊查询变量字符串的设置

删除数据:

delete from 表名 where 条件; 按条件删除数据
注意:不加条件,删除所有记录; (慎用) 有多少条记录就会执行多少次操作;
truncate table 表名; (推荐效率高) – 删除表,再创建一样的新表;
truncate :vt. 把…截短;缩短;使成平面

修改数据:

update 表名 set 列名1 = 值1, 列名2 = 值2… where 条件;
注意:不加条件,默认修改所有的记录;

七、 DQL: (Query)查询表中的记录

1. 语法

select	
	字段列表 
from 
	表名列表 
where 
	条件列表 
group by 
	分组字段 
having	
	分组之后的条件限定	
order by
	排序	
limit 分页限定

2. 基础查询

多个字段的查询:
    select 列名1,列名2...from 表名; 查询
    select * from 表名;  查询表中所有数据
去重:
    select distinct address from student;
计算列:
    select 列名1 + 列名2 from student;
    注意:如果有null值参与的运算,结果都是null;
    解决:select 列名1 + ifnull(列名2, 0) from student;
		ifnull(表达式1,表达式2); 
	    表达式1:那个字段需要判断是否为null;
	    表达式2:如果是null,则赋值为表达式2;
起别名:
	select 列名 as 新列名  from student; -- as可以省略

3. 条件查询 ( where )

1.	格式: where子句后跟条件
2.	运算符:
比较运算:
	<  >  <=  >=  =  !=
	between  数值1 and 数值2; -- 在..和..之间
	in(数值1,数值2...); -- 在..中
	is null /is not null ;  -- 是否为null
	eg: select name,math from student where math is null;
逻辑运算:
	且: && / and  或: || /or 非: !

4. 模糊查询: (like)

占位符:
_ :单个任意字符
% :多个任意字符

		eg: 
select *from student where name like '马%';  -- 第一个字为马的人
select *from student where name like '_马%'; -- 第二个字为马的人
select *from student where name like '___'; -- 名字为三个字的人
select *from student where name like '%桥%'; -- 名字中有桥的人
SELECT *FROM student WHERE NAME LIKE '柳_'; -- 名字为两个且姓柳
因为本人刚开始写博客,时间有限,没有编辑文本.

本文地址:https://blog.csdn.net/weixin_43773867/article/details/85964068