一·、数据库的好处
1.实现数据持久化
2.使用完整的管理系统统一管理,易于查询
二、数据库概念
1.DB数据库database
2.DBMS数据库管理系统,如MySQL
3.SQL语言
三、常用命令(mysql)
net start/stop 服务器名(一般为mysql) 启动/关闭服务器
mysql -h 【主机名】 -P(必须大写) 【端口号】 -u 【用户名】 -p 【密码】 登录
exit或者ctrl+c 退出
use 库名; 打开指定库
show databases; 查看当前所有数据库
show tables; 查看当前数据库所有表
show tables from 库名; 查看其它库所有表
desc table; 查看表结构
mysql --version 查看服务器的版本
select 列名 from 表名; 查看表中某一字段
select 列名,列名 from 表名; 查看表中多个字段
select * from 表名;查看所有字段
select 100;(常量,如数字,字符串) 查询常量值
select 100%92 ; 查询表达式
select 列名 as 别名 from 表名; as起别名(查询字段有重名的情况可以使用别名区分开,as可以省略)
/**mysq1中的+号:仅仅只有一个功能---运算符,select 100+90; 两个操作数都为数值型,则做加法运算select '123'+90; 只要其中一方为字符型,试图将字符型数值转换成数值型,如果转换成功,则继续做加法运算。select 'john'+90;如果转换失败,则将字符型数值转换成0。select nu11+10; 只要其中一方为null,则结果肯定为null */
select 100+20; 返回120
select “100”+20; 返回120
select “abc” + 20; 返回20
select null+20; 返回null
/**条件运算符:>,<,=,<>,!=,>=,<=;逻辑运算符:and ,or,not;模糊查询:like,between and,in,is null;安全等于:<=>*/
select 查询列表 from 表名 where 条件;
/**
1、asc代表的是升序,desc代表的是降序,如果不写,默认是升序
2、order by子句中可以支持单个字段、多个字段、表达式、函数、别名
3、order by字句一般是放在查询语句的最后面,limit子句除 外
*/
select 列名 from 表名 where 条件 order by 列名 desc(降序)/asc(升序,默认升序);
/**
1、单行函数,如concat、length、 ifnull等
2、分组函数,功能:做统计使用,又称为统计函数、聚合函数、组函数
*/
select length(“heihei”); 获取参数字节个数
select concat(“a”,“b"); 拼接字符
select upper(”heiheihei“);将字符变为大写
select lower (”HEIHEIHEI“);将字符变为小写
select substr(”阿珍爱上了阿强!“,7);截取索引处后面所有的字符
select substr (”阿珍爱上了阿强!“,1,3);指定索引处指定字符长度
select replace (”阿珍爱上了阿强!“,”阿强“,”五六七“);替换
select now(); 返回当前系统时间;
select user(); 查询当前使用者
select version();查询版本号
select if(条件,”大“,”小“);
/**
case要判断的字段或表达式
when常量1 then要显示的值1或语句1;
when常量2 then要显示的值2或语句2;
else要显示的值n或语句n;
end
*/
eg:
select id
case id
when 30 then id*1
when 40 then id*2
when 50 then id*3
else id
end
from test;
/**
分类:
sum求和、avg平均值、max最大值、min最小值、count 计算个数特点:
1、sum、avg一般用于处理数值型,max、min、 count可以处理任何类型
2、以上分组函数都忽略null值
3、可以和distinct搭配实现去重的运算
*/
select min(字段)from 表名;
select max(字段)from 表名;
select count(字段)from 表名
select sum(字段)from 表名;
select avg(字段)from 表名;
/**
分组函数
①分组函数做条件肯定是放在having子句中
②能用分组前筛选的,就优先考虑使用分组前筛选
*/
select 字段 from 表名 group by 分组的列表 having 条件;
/**
分类:
按年代分类:sq192标准,sq199标准[推荐]
按功能分类:
内连接:
等值连接非等值连接
外连接: 自连接
左外连接右外连接全外连接
交叉连接
*/
select 查询列表 from表1别名[ 连接类型] join 表2别名 on 连接条件 [where 筛选条件] [group by. 分组] [having筛选条件] [order by排序列表]
分类:
内连接(★) : inner
外连接
左外(★) :left [outer]
右外(★): right [outer]
全外: full [outer ]
交叉连接: cross
/**
概念:出现在其他语句内部的select语句,称为子查询或内查询
内部嵌套其他select语句的查询,称为外查询或主查询.
*/
示例:
select first_ name from emp loyees
where department_ id in(
select department_ id from departments
where location_ id=1700);
/**当要显示的数据,一页显示不全,需要分页提交sql请求,limit offset, size; offset要显示条目的起始索引( 起始索引从0开始),size要显示的条目个数 */
select * from test limit 0,3;
/**
union联合合并:将多条查询语句的结果合并成一个结果语法:
应用场景:
要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时特点:
1、要求多条查询语句的查询列数是一致的!
2、要求多条查询语句的查询的每一列的类 型和顺序最好-致
*/
语句1;
union
语句2;
/**DML语言
数据操作语言:
插入: insert
修改: update
删除: delete
#delete pk truncate
1. delete可以加where条件,truncate不 能加
2. truncate删除, 效率高一丢丢
3.假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,而truncate删除后,再插入数据,自增长列的值从1开始。
4. truncate删除没有返回值,delete删除有 返回值
5. truncate删除不能回滚,delete删除可以回滚.
*/
insert into 表名 value(列名,...)value(值,...);
insert into 表名 set 列名=值;
update 表名 set 列=新值 where 条件;
delete from 表名 where 筛选条件;
/**
#DDL
数据定义语言
库和表的管理
一、库的管理
创建、修改、删除
二、表的管理
创建、修改、删除
创建: create 修改:alter 删除: drop
*/
create database if not exists 库名;alter database 库名 character set gbk;
drop database if exists 库名;
create table 表名(
id 类型 约束,
name 类型 约束,
sex 类型 约束,
...
age 类型 约束
);
/**
表的修改
alter table表名 add /drop /modify /change column 列名[列类型约束] ;
*/
eg:
alter table test add column test_id int;
alter table test modify column test_sex varchar(10);
alte table test drop column test_age;
alter table test rename to new_test;
/**
含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性
分类:六大约束
NOT NULL: 非空,用于保证该字段的值不能为空,比如姓名、学号等
DEFAULT:默认,用于保证该字段有默认值,比如性别
PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空,比如学号、员工编号等
UNIQUE:唯一, 用于保证该字段的值具有唯一性,可以为空,比如座位号
CHECK:检查约束[mysq1中不支持],比如年龄、性别
FOREIGN REY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某列的值。比如学生表的专业编号,员工表的部门编号,员工表的工种编号
*/
creat table if not exists test(
id int primary key,
name varchar(20) not null,
sex char(1),
age int default 18,
seat int unique,
majorid int,
constraint fk_test_major foreign key (majorid) references major(id)
);