*学习重点:创建数据库/向表添加记录/查询记录
数据库概念:文件系统(存储和管理)
数据库软件介绍:Oracle/MySQL/SQL server…
分类:
关系型数据库:关系模型组织数据
非关系型数据库:键值对关系存储
一台数据库服务器中会创建很多个数据库(一个项目会创建一个数据库)
在数据库中会创建很多张表(一个实体会创建一个表)
在表中会有很多记录(一个对象的实例会添加一条新的记录)
数据库中以表的方式存储数据,类似于Java中的类,每个字段会有相应的数据类型;
表名 – Java类
表中的字段 – 类中的属性
表中的记录 – 类创建的对象
浏览器 — Web服务器 — 数据库服务器
用户 项目
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):<了解> 授权
create database 库名; 创建数据库
create database 库名; 创建数据库
create database if not exists 库名;
create database 库名 character set 字符集名;
create database if not exists 库名 character set 字符集名;
show databases; 查看所有数据库;
show create database 库名;查看指定数据库的字符集(创建语句)
alter database 库名 character set 字符集名;
drop database 库名;
drop database if exists 库名;
use 库名; (不加database)
select database();查看正在使用的数据库;
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
)
show tables; – 查询所有的表; (并没有show table 表名;语句)
show create table 表名; – 查看创建表的详细信息
describe 表名;–查询表结构;
alter table 表名rename to 新表名; – 修改表名
alter table 表名 character set 字符集名;–修改表的字符集
alter table表名 add 列名 数据类型; – 添加新字段
alter table 表名 change 列名 新列名 新数据类型;–修改指定的字段
alter table 表名 modify 列名 新数据类型;–修改字段的数据类型
alter table 表名 drop 列名; 删除表的字段
drop table 表名;
drop table if exists 表名;
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 条件;
注意:不加条件,默认修改所有的记录;
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件限定
order by
排序
limit 分页限定
多个字段的查询:
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可以省略
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 非: !
占位符:
_ :单个任意字符
% :多个任意字符
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 '柳_'; -- 名字为两个且姓柳
因为本人刚开始写博客,时间有限,没有编辑文本.