mysql入门

数据库学习

第一范式  确保每列是不可再分的最小数据单元
第二范式  每个表只描述一件事
第三范式  如果一个关系满足第二范式,并且除主键以外的其他列
        都不传递依赖于主键列

Mysql配置
  详细配置  Detailed  Configuration
  标准配置  Standard  Configuration
Mysql应用方式
  Developer Machine  最小数量内存
  Server Machine     中等大小内存 
  Dedicated  Mysql Server Machine   最大内存
数据库用途
  Multfunctional  Database(多功能数据库)  对事务性存储引擎和非事务性存储引擎读取很快
  Transactional Database Only(事务性数据库) 优化事务性但是非事务性也可以
  Non-Transactional Database Only(非事务性型) 优化非事务性 事务性不能使用
  Decision  Support(决策支持系统) 连接数20
  Online Transaction Processing  (在线事务系统) 连接数500
  Manual Setting (手工设置)

  win服务 
  mysqld  --console
  关闭服务
  mysqladmin -uroot  shutdown
  手工启动
  net  start mysql
  net  stop mysql
  启动服务
  service  mysql  start 
  service  mysql  restart
  service  mysql  stop 
  Sql基础
    DDL(数据定义语言) 定义不同数据段,数据库,表等数据库对象 Create,drop,alter 
    DML(数据操纵语句)添加,删除,更新,和查询数据库insert,delete,uodate,select(表内部)
    DCL(数据控制)控制不同数据段许可和访问级别 grant,revoke
    DDL语句

    Information_schema 存储一些数据库对象信息
    cluster 存储系统集群
    mysql 存储系统用户权限信息

    1.创建数据库 mysql  -uroot  -p
    2.Create  database dbname
    3.show databases
    4.Use dbname  要操作的数据库
    5.show  tables 查看数据表
    6.drop  database dbname  删除数据库
    7.Create table  tablename
    (
column_name  colum_type  constraints
列名   类型  约束
    )
    8.desc tablename 查看表信息
    9.show create  table tablename \G 查看创建表sql语句
    10.drop table  tablename  删除表
    11.alter table  tablename modify  column  修改表类型
    12. alter  table  tablename modify column column_name  column_type
    alter  table test  modify  ename  varchar(20)
    13.alter table  table_name  add column column_name   column_type  添加字段
    14.alter table table_name drop column  column_name 删除字段
    15.alter  table   table_name change column_name column1_name column_type
       change和modify 都可以修改表  change 后面需要写两次列名 可以修改列名 modify不能
    16.修改字段增加和修改 有可选项first/after/column_name
    alter  table test add  age  after  ename;
    alter  table  test modify  ename  int(3) first
    更改表名
     alter  table  table_name  rename  newtablename
    
    DML语句
   1. 插入记录 insert into  tablename(firld1,firld2) values(value1,value2)
   2. 多行插入
    insert into  table (firld1,firld2) values (value1,value2),(val1,val2);
   3. 查询  select * from  tablename
   4. 更新记录 update  tablename  set  field=value1,field1=value2 where 条件
   5. 同时更新多个表数据
    update t1,t2, set  t1.age=t1.age*2, t2.name=t1.ename where  t1.name=t2.ename;
   6. 删除记录 
     delete   from  tablename  where 条件
   7. 删除多表
     delete  t1,t2 from  tmp a, emp where a.tmpname =b.empname and  a.tmpname='admin';
   8. 查询记录 
    select  *  from tablename  where条件
   9. 查询不重复的记录
     select distinct   ename  from  tmp;
   10. 排序和限制
     select *  from  tablename  where 条件 [order by  field DESC/ASC]
   11. limit 显示前3行记录 
   select  *  from emp order by  ename limit 3
   12. 聚合 
   select field1,field  fun_name from tablename  where 条件  [group by  field] [with rollup][having where 条件]
   fun_name 聚合操作(聚合函数) sum ,max min 
   group  by   要进行分类聚合的字段
   with  rollup 可选语法 是否对分类聚合后的结果再汇总
   having   对分类后的结果再进行条件过
   select   sum(age),max(age),min(age)  from  tmp;
   13. 表连接 内连接和外连接=>左连接和右连接
   左连接 包含所有的左边表中记录甚至是右边表中没有和它匹配的记录
   右连接 包含所有的右边表记录甚至是左边表中没有和它匹配的记录
   select t1,t2 from   tmp,emp  where  tmp.tmpname=emp.empname;

   select  t1,t2 from tmp left join emp on tmp.tmpname=emp.empname;
   子查询
   select  * from  tmp where tmpname =(select tmpname from emp  where emp.name='root')
   如果子查询记录数唯一 可以用=代替in 
   记录联合
   select  * from t1  union/union  all
   区别 union all 是把结果合并在一起 union  是将union all再 distinct 去除重复记录
   select empname  from emp  union all 
   
   
   
   创建存储过程
   create  procedure  GetPro
as 
begin
select Relationship_2.func_role_id from Relationship_2
 join  T_user  on  T_user.user_id=Relationship_2.user_id  
 end 
 execute  GetPro

   DCL 语句
   DBA用来管理系统中的对象权限
   授出权限 grant  select,insert on  sakila. *  to 'z1'@'localhost '  identified  by '123';

   收回权限 revoke insert on skila.*  from 'z1' @'localhost'; 

   按照层次看帮助  ? content ?  data types ? show 

   查看元数据
   
   
   约束
   https://blog.csdn.net/xiyiyindie/article/details/52583861
   
   https://blog.csdn.net/CCSUXWZ/article/details/61435056
   
   判断数据库是否存在
if exists (select * from sys.databases where name = '数据库名')
drop database [数据库名]
判断表是否存在
if exists (select * from sysobjects where id = object_id(N'[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [表名]
   
   
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值