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 '柳_'; -- 名字为两个且姓柳
因为本人刚开始写博客,时间有限,没有编辑文本.

你可能感兴趣的:(Mysql,MySQL学习笔记)