什么数据库:是用来储存数据的
 创建库语句是数据定义语言(DDL):
 DROP、CREATE、ALTER等语句,主要用于对数据库、表的操作。   
 数据操作语句(DML):
 INSERT、UPDATE、DELETE语句,主要用于对表中的数据进行操作。
 数据查询语句(DQL):
 SELECT语句,数据查询操作。
 数据控制语句(DCL):
 GRANT、REVOKE、COMMIT、ROOLBACK等语句,主要用于对数据库控制操作,如事务管理。mysql数据库端口:3306
create database '库名' 建库
 drop  database '库名' 删库 mysql数据类型
 数值:int,float
 日期:datetime
 字符串是:varchar mysql 建表语句
create table '表名'(
 字段1,字段2...
 )drop table '表名';
insert into '表名'(字段...)
 values(值1...)create table test(
  #主键,唯一,且不能重复 
  id int(11) not null primary key auto_increment,
  #默认值
  sex int(1)  DEFAULT 1,
  status int(1) DEFAULT 1,
  #不为空约束 
  name varchar(50) not null        '姓名',
  #唯一约束,且不能重复 
  card_num VARCHAR(18) not null UNIQUE
 );添加字段的命令:
 ALTER TABLE `表名`
 ADD COLUMN `字段`  数据类型; 修改字段类型的
 ALTER TABLE `表名`
 modify COLUMN `字段`  数据类型; 新增主键
 ALTER TABLE 表名
 ADD [CONSTRAINT 约束名] PRIMARY KEY 添加唯一约束
 ALTER TABLE 表名
 ADD [CONSTRAINT 约束名] UNIQUE (字段名...)删除唯一约束
 ALTER TABLE 表名  DROP INDEX 约束名
     
 设置默认值
 ALTER TABLE 表名
 ALTER 字段 SET DEFAULT 默认值
 删除默认值
 ALTER TABLE 表名
 ALTER 字段 DROP DEFAULT设置非空约束
 ALTER TABLE 表名
 MODIFY字段名 字段定义 NOT NULL ;修改字段顺序
 ALTER TABLE new_test MODIFY 
 sex int(1) AFTER name;mysql 是一款关系型数据库;
 设置外键约束:
   FOREIGN KEY(字段) REFERENCES 
   主表名(字段)
 新增外键约束
 ALTER TABLE 表名 
 ADD  FOREIGN KEY(外键列) 
 REFERENCE 父表(父表主键名)修改数据
 update 表名 set 字段='值',...
 修改某项数据的 利用where条件
 查询数据
 select * from 表名 where 条件
 *****慎用
 delete  from 表名 where 条件 查询数据    
 查询所有的字段
 select * from 表名
 起别名
 select 字段1 as 别名2,字段1 as 别名2... from 表名 
 select 字段1   别名2,字段1   别名2... from 表名 
 where条件语句
 and 同时满足多个条件
 select * from 表名 where 条件1 and 条件2
 or 满足其中一个条件 
 select * from 表名 where 条件1 or 条件2
 in包含
 select * from 表名 where 字段 in('值1','值2'...)
 concat 字符串拼接
 select concat(str,str2,...) from 表名
 like 模糊查询
 全模糊
 select * from 表名 where 字段 like '%值%'
 左模糊
 select * from 表名 where 字段 like '%值'
 右模糊
 select * from 表名 where 字段 like '值%'
 between  and 区间查询左闭右开
 select * from 表名 where 字段 between  '值1' and '值2'not null
 select * from 表名 where 字段 is not null;order by 默认是升序
 select * from 表名 order by 字段 
 order by desc 降序
 select * from 表名 order by 字段 desc+-*/(用于字段是数值类型的)
>= <= != < > 
 distinct 不查询重复数据(除id外所
 有内容相同,查询的时候不能出现id)
 binary 区分大小写的limit n,m;
 n代表的是页数                                                           ,m代表的是条数; 聚合函数
 count() 查询总数的
 sum() 求和的
 max() 最大值
 min() 最小值
 avg() 平均值
 分组 group byHAVING 
 如果对 group by 进行条件过滤的时候
 则必须是having  可以单独使用case when 条件语句
 case 
 when 条件1 then 值
 when 条件2 then 值2
 end 别名 group_concat
 日期处理
 获取当前时间
 now(),sysdate()
 ex:
     select now();
     select sysdate();
 日期格式化
 date_format(date,'%Y%m%d%h%i%s')y是大写重点
 字符串转换成日期
 str_to_date(str,格式)
 select str_to_date('08/09/2008', '%m/%d/%Y'); -- 2008-08-09
 select str_to_date('08/09/08' , '%m/%d/%y'); -- 2008-08-09
 select str_to_date('08.09.2008', '%m.%d.%Y'); -- 2008-08-09
 select str_to_date('08:09:30', '%h:%i:%s'); -- 08:09:30
 select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s');日期计算相加的
 date_add(date,interval n unit)
     select date_add (now(), interval 1 day); -- add 1 day
     select date_add (now(), interval 1 hour);
     select date_add (now(), interval 1 week);
     select date_add (now(), interval 1 month);
 日期相减的
 date_sub(date,interval n unit)
     select date_sub (now(), interval 1 day); -- add 1 day
     select date_sub (now(), interval 1 hour);
     select date_sub (now(), interval 1 week);
     select date_sub (now(), interval 1 month);
 返回某一天
     select DAYOFMONTH(birthday)
 返回当前是某一年的第多少天
     select DAYOFYEAR(now());
 返回一周第几天(记着减一)
     dayofweek(date)=    字符串
     concat(str1,str2); 
     length(st1)//字节长度
     char_length()//获取字符串长度
     substring()//截取字符串长度
     substr()// 截取字符串长度
     left(str, length)
     right(str, length)
     截取值的第几个之前的字符串
     substring_index(str,"值",count);
     
     select substring_index('西门吹雪雪'),'雪',2) from employees;     upper(str); 转换成大写
     lower(str)转换成小写
     CONCAT_WS(separator,str1,str2)
     trim(str)去掉首尾空格
     REPLACE(str, from_str, to_str);替换
     REPEAT(str, count)str重复几次返回
     REVERSE(str): 字符串颠倒顺序
     locate(str,str2)字符串位置,类似于包含
     elt(n,st1,str2....)返回第n个字符窜
     field(str,str1,str2...)返回与str匹配的位置下标从1开始
     find_in_set(str,str2);返回相同位置的(str2要用逗号隔开)
     
 多表连接查询笛卡尔积:是多个表的乘积
 格式:select * from tb1,tb2..inner:如果没有条件的时候相当笛卡尔积
 select *from tb1 inner join 
 tb2 where 条件 子查询
     --步骤1:查询最高工资人的信息
             select max(salary) maxSalary from person
             --步骤2:查询 工资是maxSalary 的 员工
             select employee_id,last_name,salary from person where salary=maxSalary
             --步骤3:合成SQL
             select employee_id,last_name,salary from person where salary=(select max(salary) maxSalary from person)    
             
 查询工资是前3名的信息
 select * from 
 #临时表
     (select * from employees_20190221 
     order by salary desc
     ) tb limit 0,3; 左外连接格式
             left join .. on ..
             select * from tb1
             left join tb2 
             on 条件 where 条件右外连接格式
         right join .. on ..
         select * from tb1
         left join tb2 
         on 条件 where 条件自连接查询
 查询 星星是一个
 相同部所有人的都有谁
         SELECT p1.*  FROM 
         person AS p1 JOIN 
         person AS p2 
         ON 
         p1.did=p2.did 
         WHERE 
         p2.name='星星';