mysql常用语句

mysql知识点
  1:安装 mysql数据库 windows 版本mysql
  2:配置文件 my.ini mysql安装目录下
  [mysqld]
  default-character-set=utf8
  mysql服务器默认编码 utf8
3:登录mysql数据库服务器
  mysql -uroot -proot
  登录本机mysql服务器
  mysql -uroot -proot -h 192.168.10.1
  -h mysql服务器地址
4:查看当前mysql编码设置
  status;
Server characterset:    utf8 服务器编码
Db     characterset:    utf8 当前数据库编码
Client characterset:    utf8 客户编码
Conn.  characterset:    utf8 客户连接编码
 show variables like 'charac%';
character_set_client     | utf8  客户编码
character_set_connection | utf8  连接编码
character_set_database   | utf8  当前数据库编码
character_set_results    | utf8  结果集
character_set_server     | utf8  服务器
character_set_system     | utf8  系统
5:设置客户端编码
 set names gbk;一个指修改下面三个编码
 1:客户编码
 2:连接编码
 3:结果编码
总结:
 统一编码不容易出乱码;
 1:创建数据库 utf8
 2:创建表     utf8
 3:查询更新   set names utf8;//一定
6:显示现在所有数据为名称
  show databases;
   1:information_schema 内存中数据....
   2:mysql              安全相关数据

7:显示当前数据库下所有表
   use test;
   show tables;
8:更改使用当前数据库
   use 数据库名;
9:查看表结构
   desc 表名
   show create table 表名
10:建库
   create database 数据库名;
   create database 数据库名 DEFAULT CHARACTER SET utf8;
11:查看创建数据库指令
   show create database t11;
12:删除数据库
   drop database t11;///???危害性比较大
13:建表;
   create table 表名(
     字段名 数据类型 约束,
     字段名 数据类型 约束,
     字段名 数据类型 约束,
     字段名 数据类型 约束
   ) ENGINE=InnoDB;
   默认存储引擎
14:数据类型
   int,varchar,char,float,
   date,time,datetime,timestamp;
   enum,text; DECIMAL<高精度浮点>

   char   [固定长度字符段串]
   varchar[可变长度字符段串]

   create table t(c1 char(5),c2 varchar(5)));
   insert into t values('ab','ab');
   c1[5]       c2
   ab'   '     'ab'
  磁盘空间: char浪费,varchar节省空间
  查询效率: 高      稍慢
  int    4个字节 21亿正负
  int(5) 4个字节 21亿正负
  date   年月日
  time   时分钟
  datetime  年月日时分秒
  timstamp  时间戳[年月日时分秒]
 
15:约束
  主键约束: primary key
  唯一约束: unique
  外键约束:foreign key(字段) references 表(字段)
  非空约束:not null  !!!
  空约束:  null
  默认值: default 值 !!!
  自增长: auto_increment

  还有一个约束 mysql不支持约束
  检查约束: check(字段=值);

16:添加记录
  insert into 表名 values(值,值...);
  insert into 表名(字段1,字段2)values(值,值);
  insert into 表名 values(值),(值),(值);
17:修改记录
  update 表名 set 字段=值,字段=值 where 条件;
  update 表名 set 字段=值,字段=值;
18:删除记录
  delete from 表名 where 条件
  delete from 表名
19:清空表记录
  delete from 表名;   慢:  删记录空间保留   
  truncate table 表名;稍快:删除记录空间回收;
20:基本查询
  select * from 表名;//*所有字段
  select 字段1,字段2 from 表名
21:条件
  select * from 表名 where 条件;
22:排序
  select * from 表名 order by 字段 asc;//升
  select * from 表名 order by 字段 desc;//降
  select * from 表名 order by 字段1 desc,字段2 asc;//降
  select * from 表名 where 条件 order by 字段
23:聚合查询(count(),max(),avg(),sum(),min())
  select count(*) from 表名;
  select count(字段) from 表名;
  select sum(字段) from 表名;
  select avg(字段) from 表名;
  select max(字段) from 表名;
  select min(字段) from 表名;
24:给字段别名
  select 字段1 as 别名 from 表名 where 条件;
  select 聚合函数(字段) as 别名 from 表名 where 条件;
25:分组
  select 字段 from 表名 group by 字段
  技巧:
  1:出现在select 子句中字段
  2:一定要出现在group by 字段
  3:或者添加组函数

  示例
  select count(id),name,age
  from t_user
  group by name;
26:having  条件分组函数 where
27:分页
   select * from 表名 limit 超始值,条数;
   1-10
   select * from 表名 limit 0,5;
   select * from 表名 limit 1;//只查询一条记录
28:模糊查询
   select * from 表名 where name like '';
   _ 匹配一个
   % 匹配零到多个字符
29:内连接
   select * from 表1 inner join 表2;
30:左连接
   select * from 表1 left join 表2;


   所有匹配内容显示
   select e.empno,d.name
   from emp e inner join dept d
   on e.deptno = d.id;

   select e.empno,d.name
   from emp e left join dept d
   on e.deptno = d.id;

   select e.empno,d.name
   from emp e right join dept d
   on e.deptno = d.id;



31:右连接
   select * from 表1 right join 表2;

32:内连接另一种用法
   select * from 表1,表2;
   where 条件;
   编码,雇员名,主管名称;
   
   select e.ename,m.ename
   from emp e join emp m
   on e.mgr = m.empno;
33:给表别名
   select * from 表 别名;
34:子查询(嵌套查询)
   select * from 表名
   where 字段 = (子查询 select 字段 from 表名);
   select * from 表名
   where 字段 in(子查询 字段 from 表名);

   select * from emp
   where sal in
  (select sal from emp where deptno = 10);

  select * from emp
   where sal in
  (2540,5000,1000);

  select * from 表名
   where 字段 != (select 字段 from 表名);
 
  delete from 表名
  where 字段 = (select 字段 from 表名);

  update 表名 字段=值
  where 字段= (select 字段 from .....);

//-------------------------------------
   
3:mysql 视图
视图 view
作用:简化查询语句

创建视图
create view 视图名
as
 查询语句;

使用视图(把视图当表用)
select * from 视图名
select 字段,字段,字段 from 视图名称
select * from 视图名 where 条件;

修改视图
 alter view  视图名
as
  查询语句;

删除视图
drop view 视图名;

//------------------------------
示例:
创建视图:保存所有雇员信息,工资大于2000;

create view v_emp
as
SELECT * FROM emp WHERE sal > 2000;

DROP view v_emp;

视图注意
1:视图中必须存放select 查询语句
2:把视图当表使用
3:不建议对视图执行insert,update,delete 操作;


查看视图
1:show tables;
2:用information_schema库表 tables;
  use information_schema;
  select * from tables;//????数据太多;
  select table_schema,table_name,table_type
  from tables
  where table_schema='库名' and table_type='view';


   查询所有视图
  use information_schema;
  select table_schema,table_name,table_type
  from tables
  where table_schema='test' and table_type='view';
  查询某个库所表视图
  use information_schema;
  select table_schema,table_name,table_type
  from tables

  where table_schema='test';

3:触发器trgger  javascript 事件...
作用:当对表进行 insert,update,delete 操作时[指定触发]
触发类型:insert;update;delete
触发器执行时间:before;after


创建触发器
delimiter //
 create trigger 触发器名
 [before|after] [insert|update|delete]
 on 表名
 for each row
 begin
  sql 语句;
  sql 语句;
 end //
 
delimiter ;

删除触发器
drop trigger 触发器名;

修改定界符
delimiter ;  
delimiter //

select * from emp ;


示例:
create table t1(id int);
create table t2(name varchar(20));

insert into t1 values(1),(2),(3);
insert into t2 values('tom');

给t2表添加update触发器,
触发器工作--->将t1删除了;
delimiter //
 create trigger tri_t2_update
 before update
 on t2
 for each row
 begin
   delete from t1;
 end //
delimiter ;


示例:
创建触发器 t2 delete
作用:向t1 表添加一条记录

delimiter //
  create trigger tri_t2_delete
  after delete
  on t2
  for each row
  begin
     insert into t1 values(1000);
  end //
delimiter ;

查看触发器
information_schema库-->triggers
select trigger_name,event_object_schema,
       event_object_table
from information_schema.triggers
where event_object_schema='库';

select trigger_name,event_object_schema,
       event_object_table
from information_schema.triggers
where event_object_schema='news';


show create trigger '触发器名';
show create trigger tri_my \G;

存储过程 procedure  自定义函数

创建存储过程

delimiter //
 create procedure 存储过程名称()
 begin
   sql ;
   sql ;
 end //
delimiter ;


调用存储过程
call 存储过程名(值);

删除存储过程
drop procedure 存储过程名;

查看存储过程
mysql库->proc 表
select db,name from mysql.proc;
select db,name from mysql.proc where db = 'news';

helloworld

delimiter //
 create procedure hello()
 begin
  select 'hello';
 end //
delimiter ;

call hello();


示例:查询表内容

delimiter //
 create procedure hello1()
 begin
   select * from t_user;
 end //
delimiter ;


call hello1();

PDO执行MySQL

<?php
header("content-type:text/html;charset=utf-8");
 //1:创建连接
 $dsn = "mysql:host=127.0.0.1;dbname=news";
 $db = new PDO($dsn,'root','root');
 //2:设置编码
 $db->query("set names utf8");
 //3:执行sql
 $count = $db->exec("INSERT INTO t_user values(null,'f',md5('f'))");
 //4:关闭
 $db = null;
 echo $count;
?>

mysql的数据文件在datadir下,你在数据库中执行 show variables like '%datadir%';就会显示数据库文件的路径


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值