喜欢,请多多关注!!!
首先介绍一下几个数据库—— ——
## 主流关系型数据库
- Oracle:甲骨文 闭源 拉里.艾力森
- DB2 IBM:应用与大型系统,UNIX/linux,是oracle的主要竞争对手
- SQL Server 微软 只能在window下运行,net(C#)
- Mysql 免费 开源 买代码
## SQL基本操作
- SQL语言是操作数据库的语言
- 每一种数据库都有自己独特的方言
## 数据库类型
- 主要包括五大类
- 整数类型 int, big int
- 浮点树类型 double decimal
- 字符串类型 char varchar text
- 日期类型 date datetime timestamp time year
- 其他数据类型 set。。。
##数据库
1.显示所有的数据库
- show databases;
2.选定要操作的数据库
-use 库名;
3.创建新的数据库
- create database 库名;
4.查看创建数据库的语句
- show create database 库名;
5.设置默认解码的创建库语句
- create database demo dafault character set utf8;
6.删除数据库
- drop database 库名;
7.需求,创建库demo1,要求默认编码utf8,创建完成后,选定这个库
8.显示所有表
- show tables
9.查询表结构
- desc 表名(比如id,name,password)
## 创建表
- create table 表名(
列名 数据类型(长度)约束,
列名 数据类型(长度)约束,
。。。
列名 数据类型(长度)约束
);
create table stu(
id int not null,
name varchar(10),
sex varchar(10)
);
CREATE TABLE `stu` (
`id` int(11) NOT NULL,
`name` varchar(10) DEFAULT NULL,
`sex` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
## mysql的引擎有两种**ENGINE
- ENGINE=InnoDB
- 支持数据库高功能
- 事务
- 外键
- ENGINE=myisam
- 数据存储基本功能
- 效率非常高
create table user(
name varchar(16),
age int
)engine=innodb charset=gbk; 备注一下:这里的gbk是编码,你可以设置为utf-8
### SQL分类
- 数据定义语言 DDL :对表本身
- 数据操丛语言 DML:对表中的操作 增 删 改
- 数据查询语言 DQL select查
- 事务控制语言 TCL
- 数据库控制语言 DCL
### DDL不支持事务,运行后马上执行,不能回滚
### DML支持事务
### 数据定义语言 DDL
- 负责数据结构定义,与创建数据库对象的语言
- 常用 create alter drop
- DDL不支持事务,DDL语句执行之后,不能回滚
### 数据操作语言 DML
- 对数据库种更改数据操作的语句
- select insert update delete ---》CRUD 增删改查
- 通常把select相关操作,单独拿出来,称之为DQL
- DML支持事务,在非自动提交模式时,可以利用rollback回滚操作
### 数据查询语言 DQL
- 筛选,分组,连表查询
### TCL 和 DCL
- 事务控制语句TCL
- 负责实现数据库中事务支持的语言,保括 commit rollback savepoint等指令
- DCL数据库控制语言
- 管理数据库的授权,角色控制等,grant(授权),remove(取消授权)
开始学习 -DDL-对表本身进行操作:
1.修改表名
- rename table 旧表名 to 新表名
- rename table user to tb_user;
2.修改表属性(引擎,字符集编码)
- alter table tb_user engine=myisam charset=utf8;
3.添加字段
- alter table 表名 add 新字段 新字段的类型 新字段的约束 first;
- alter table tb_user add id int first;
- alter table tb_user add(
gender char(5),
tel char(11)
);
4.修改字段名
- alter table tb_user change 旧字段名 新字段名 新字段数据类型
- alter table tb_user change gender sex varchar(10);
5.改数据类型
- 删除某一个字段,添加一个新的
- 使用命令关键字直接修改
- alter table 表名 modify 字段名 字段新类型
- alter table tb_user modify tel varchar(11);
6.修改列的顺序:把什么放在什么后面
- alter table 表名 modify 目标列名 目标列数据类型 after 某一列列名
- alter table tb_user modify tel varchar(11) after age;
7.删除列
- alter table 表名 drop 列名
- alter table tb_user drop sex;
## 删除表
- drop table 表名;
- DROP TABLE TB_USER;
##TRUNCATE语句
- truncate删除表内容的原理
- 先把整张表删除,然后重新创建一个表结构一模一样的空表
truncate table 表名
truncate table emp;
开始学习-DML-对表中进行操作-如:增,删,改:
首先我们先创建一个表,然后对这个表进行DML操作!!!
创建员工表emp
create table emp(//员工表
empno int(4),//工号
ename varchar(10),//姓名
job varchar(10),//工种
mgr int(4),//上级领导的工号
hiredate date,//入职时间
sal double(7,2),//工资
comm double(7,2),奖金
deptno int(4)//所属部门编号
);
##INSERT语句:插入,添加
insert into 表名(列名1,列名2,...) values (值1,值2,...);
insert into emp(ename,empno,sal,comm) values('zhangsanfeng',1004,5000,2000);
insert into emp(dname deptno,sal) values('流经',1008,6000);
##UPDATE语句:修改
update emp set ename='lucy' where empno=1001;
update emp set comm=2000 where ename='lilei';
uodate emp set sal=5000 where ename='zhangsanfeng';
update emp setmgr=1001,sal=3000 where ename='liuchuanfeng';
##DELETE语句:删除
- delete from 表名 where 条件
- delete from emp where job is null;
DQL:查询操作:
selsct * from 表名 备注一下:这个是全表查询,如果数据过多时,最好不要用这个方法,因为查询速度会很慢!!!
查询某些列中的值
select name from 表名;
select name as '姓名' from person;
select name as '姓名',age from person;
select name as '姓名',age as '年龄' from person;
select id as '编号',name as '姓名',age as '年龄' from person;
备注一下,这个as的前面是表里面的,后面是自己取的别名,可以随便取,不过最好能让别人看懂!!!
select empno as '员工编号',ename as '姓名',job as '工种',mgr as '上级领导编号',hiredate as '入职时间',sal as '工资',comm as '奖金',deptno as '所属部门编号' from emp;
上面的东西看懂了,那你对数据库就有一点了解了,下面就是通过条件来查询数据!!!
### WHERE
- where子句用于规定选择的标准
- 如果需要有条件的从表中选取数据,可将where子句添加到select语句的后面
- where子句是决定一条查询语句最后显示多少条目数的关键
- where mgr=7698;(条目数===对象数量)
在where中我们会使用一些运算符,大致与java相同
1. and or where mgr=7698 and comm>1000;满足2个
2. and or where mgr=7698 or comm>1000;满足其中一个
3. like
4. <,> , <= ,>= , = , !=, <>:不等于的意思
5. is null , is not null , in , not
6. comm<=100 and comm>=50, between XX and XX;
### AND 和 OR 运算符
- 在where子句中两个或者多个条件结合起来,
- 在结合的结果与java中的&& || 一致
- 在不明优先级的情况下,请使用()
### SQL LIKE 操作符
- like用于在where子句中搜索列中的指定 模式
- sql 模式 ---》 通配赋
- %代替一个或者多个字符
- a%:a开头的 %a:a结尾的 a%a:以a开头,以a结尾
- _代替一个字符
- A_ _B A_B _A_
### SQL ORDER BY 子句
- 用于根据指定的列对结果集进行排序
- 默认升序 从小---大
- asc为升序,desc降序
- order by必须写在where语句之后
- order by 把结果集排序
### limit 子句--分页
- limit begin,size
- begin:本页数据的起始行,从0开始
- size:本页显示多少行
- select price
- from t_item
- order by price limit 0,5;
### select查询语句 的顺序,一定不要搞错了
1、from找到数据源
2、where根据条件进行筛选,确定条目数量(不能带聚合函数,因为不认识聚合函数的结果,如果有就会报错)
3、group by 将数据划分成多个组
4、聚合函数运算
5、having 子句筛选分组条件
6、计算所有表达式
7、确定 select 后的字段
8、使用 order by 排序