简单了解Mysql

MySQL

一、入门


1.查看所有数据库

show database;

2.选择某个数据库

use shop;

3.查看库中表

show tables;

4.显示当前用户

select user();

5.退出

quit;

二、mysql


1.DDL(数据定义语言):

Create Table,Drop Table,Alter Table等

1)操作表;
  • 创建库
    create database 库名;
  • 创建表单

create table student(
id int(10) primary key auto_increment,
stuName varchar(20) not null,
school varchar(20) comment ‘字段的注释,是学校’,
score float(5,2),
birthday date,
sex char(2) default ‘女’
);
Primary key:主键
主键的目的可以确定唯一 一行数据
Auto_increment : 设置主键自增;
localhost是本地的意思

2)显示
  • 显示表的详情

desc student;

  • 显示表的创建语句

show create table student(重要)

3)删除
  • 删除表

drop table student;

  • 删除数据库

drop datebase java90;

4)表的修改语句
  • 单独增加一行

alter table class add aa int(3);

  • 修改一行内容内的某个内容

alter table class change aa age int(3);

  • 修改表,设置某列添加约束

alter table class modify sex char(1) not null;

  • 修改表名称

alter table class rename(as) dat;

  • 修改字段的注释

alter table dat modify sex char(20) comment’ 修改字段注释’;

2.DML(数据操作语言):Selesct,Insert,Update,Delete等

1)插入数据
    insert into  class (姓名,chinese,math,english) values ('王二',92,87,60);
    //字符串用单引号‘ ’;
    //日期也用单引号‘ ’;
     //增加多行
     insert into class (姓名,math,chinese,english)  values
    ('李',90,60,20),
    ('王',50,60,73),
    ('张',23,90,80);
  • 迁移数据

insert into class_chinese select 学号,姓名,chinese from class;

2)数据更新( 修改)
  • 全部修改

update class set math=100;

  • 指定修改

update class set math=60 where 学号 = 5;
and 和 or , <>与!=一样

3)删除数据

delete from class_copy //删除完
delete from class where 学号=5 //删行
truncate from 表名:

  • a.速度快;
  • b.自动主键从1开始重置
4)查询数据
  • 整个数据

select math from class;

  • 指定行数据

select * from class where 学号=5;(尽量不适用*号,可以有效的增加搜索效率)
+修改名字
select 姓名 as id from class;

  • 定义的有自己的规范(与表无关)

select 1+1;
select now();//now()时间函数

  • 精确小数

float查询的不是个精确值,但是效率高;
decimal较为准确;

5)函数及关键字
 max( )      //最大值
 min( )      //最小值
 avg( )      //平均值
 count( )    //求数据条款
 sum( )      //求和
  • 注意:where后面不能跟聚合函数,having后面可以跟聚合函数;

select max(fsalary) as 最大工资 from t_employee where fsalary>5000;

  • 分类

order by 子句,只能用于select语句的最后;
select * from t_employee ORDER BY fsalary;

注意:默认升序为升序查询asc升序,desc降序;

  • 常用函数

select now( );
select curdate() as 今天;不带时分秒
select hour(now( ));

  • 其他

ifnull(arg1,arg2);
arg1为null输出arg2

  • like模糊查询
    • 匹配单个字符:

例如:张_ 张三可以,张三三不行

    • 匹配多个字符:

例如: 张% 张三三
%张% d张a

  • in关键字

select * from t_employee where fage In(23,25,28);

  • 在范围内选择

between ….and…

select * from t_employee where between 20 and 25; 
  • 数据分组

select AVG(fsalary) ‘平均工资’,company as ‘公司’ from t_employee group by company;

  • union高效有用(很重要,不容易锁)
select temp.temp as '表头',temp.max from(
select '正式员工的最高年龄' as temp,MAX(fage) as max from  t_employee
union all 
select '最高工资' as temp,MAX(fsalary) as max  from t_employee
 )as temp;
6)事务具备几个特点:
  • 1)原子性;
  • 2)一致性;
  • 3)持久性;
  • 4)隔离性;

例子:start TRANSACTION; //开启事务

insert into class(姓名,math,english,chinese) values ('孙',45,56,26);
COMMIT;  //提交事务
7)case (if的意思)
   select fname as 姓名,
       (case fage
         when 20 then '小年轻'
         when 28 then '老家伙'
         else '中等家伙'
         end
          ) as '职称'  from t_employee;

注意: end不能忘

8)外键(不重要通常不用)
  • 添加外键
alter table t_student add constraint fx foreign key(Schoolid)         references t_school(id);
  • 删除外键
alter table t_student drop foreign key fx

3.DCL(数据控制语言):存储权限 访问权限

  • 修改密码
update mysql.user set password=password('新密码') where user=
('用户名');
  • 刷新权限
flush privileged;

4.表链接方式(数据库)

内连接,外连接,交叉连接

  • 1.内连接
  • a. where连接
select t_student.id,t_student.name,t_school.name as '学校' from t_student,t_school where t_student.Schoolid=t_school.id;
  • b.Join… On
select st.id,st.name,sc.name as '学校' from t_student st join t_school sc  on st.Schoolid = sc.id where st.name like '张%';

特点: 如果a表有4条记录,b表有两条记录,使用内连接只会查询两个有匹配条件的数据

2)外连接

  • a.lelf join … on
  • b.right join…on
  • c.full join … on( mysql 不支持,union代替)

3)交叉连接(不常用)

5.检索

  • Explain 优化的质量排序:

system>const>eq_ref>ref>range>index>aLL

  • 一般来说,ref>range这种程度就已经优化的相当完美了,system>const这两个是较为理想的优化形式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值