mysql常用语句

来源:互联网 发布:麒麟linux操作系统下载 编辑:程序博客网 时间:2024/06/05 03:38
mysql知识点  1:安装 mysql数据库 windows 版本mysql  2:配置文件 my.ini mysql安装目录下  [mysqld]  default-character-set=utf8  mysql服务器默认编码 utf83:登录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  条件分组函数 where27:分页   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_empasSELECT * 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库-->triggersselect trigger_name,event_object_schema,       event_object_tablefrom information_schema.triggerswhere event_object_schema='库';select trigger_name,event_object_schema,       event_object_tablefrom information_schema.triggerswhere 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';helloworlddelimiter // 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<?phpheader("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%';就会显示数据库文件的路径


原创粉丝点击