一·、数据库的好处

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)
);