mysql 基础操作

来源:互联网 发布:中小型网络设计方案 编辑:程序博客网 时间:2024/06/02 17:54

一、SQL分类

      SQL语句主要 可以划分为以下3个类别

      DDL(Data Definition Languages): 数据定义语言,这些语句定义不同的数据段,数据库,表,列,索引等数据库对象。

      DML(Data Manipulation Language) : 数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。

      DCL(Data Control Language): 数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。

二、DDL语句

         1、创建数据库

         create database dbname

         例:create database test;

         选择数据库,并操作。

         use dbname;

         例:use  test;

         查看数据库。

         show databases;

         查看数据库内包含的表。

         use dbname;

         show tables;

         2、删除数据库

         drop database dbname;

         例:drop database test;

         3、创建表

         create table tablename( column_name column_type constraints, ……);

         例:create table employ(id int(11) not null auto_increment primary key,name varchar(25) not null default '' comment '姓名',hiredate date not null default '' comment '入职时间',sale decimal(10,2) not null default '0.00' comment '薪资',deptno int(11) not null default '0' comment '员工编号') engine=innodb default charset=utf8;

         查看表结构

         desc tablename;

         show create table  tablename;

         explain tablename;

         show columns from tablename;

        4、删除表

        drop table tablename;

        例:drop table employ;

        5、修改表

        修改表类型

        alter table tablename modify [column] column_definition[first | after column_name ]

        例:alter table employ modify name varchar(20);

        增加表字段。

        alter table tablename add [column] column_definition [first | after column_name];

        例:alter table employ add column age int(3) not null default 0 comment '年龄';

        删除表字段

        alter table table name drop [column] column_name

        例:alter table  employ drop column age;

        字段名更改

        alter table tablename change[column] old_column_name  new_column_name  column_definition [first | after column_name]

        例:alter table employ change age age1 int (4);

        注:change 和 modify 都可以修改表的定义,不同的是 change 后面需要两次列名,不方便。但是change的有点在于可以修改列名称,modify则不可以。

        修改字段顺序

        (add / change / modify)中都有一个选项 first | after  column_name 这个选项可以修改字段在表中的位置。

         例:alter table employ add brithday  date after name;

                 alter table employ modify age int(3)  frist;

         更改表名称

         alter table tablename rename [to] new_tablename

         例:alter table employ rename to employ2;

三、DML 语句

         1、插入记录

          insert into tablename (field1,field2……) values(value1,value2……);

         例:insert into employ(name,hiredate,sale,deptno) values('xx001','2015-01-02','10000',1230045);         

                  insert into employ  values(' ','xx001','2015-01-02','10000',1230045);

                  insert into employ(name,sale)  values(' ','xx0012','20000');

                  insert into employ values(' ','xx001','2015-01-02','10000',1230045),(' ','xx002','2014-03-02','10000',1230046),……

          2、更改记录

          update tablename set field1 = value1, field2=value2…… [where condition]

          例:update employ set sale=400000 where name ='xx001'

                  update tablename1,tablename2 set tablename1.field1 = value1, tablename2.field2=value2 where condition

         3、删除记录

         delete from tablename [where condtion]

         例:delete from employ where name='xx001';

                 delete t1,t2 ……from  tablename1 t1 , tablename2 t2 where condition;

        4、查询记录

        select * from tablename [where condtion]

        * 表示将所有的记录的字段都选出。也可以使用逗号分割的具体字段。

         select field1, field2 …… from tablename [where condition]

        例:select * from employ;

                select id, name from employ where name='xx001'

        条件查询

        结果集中将符合记录的列出来。where后面的条件是一个字段的比较 可以使用  =、 >、 <、>=、<= 、!= 多个条件还可以使用 or 、and 等罗辑运算符。

        例:select * from employ where name="xx001' and sale="10000"

        排序和限制

         select * from tablename [where condition] [order by field1 desc | asc , field 2 desc|asc,…… ] desc 降序 asc 升序

         例:select * from employ order by sale desc;

                 select * from employ order by deptno asc, sale desc;

        提取部分数据而非全部

        select * from tablename  limit offset_start, row_count  offset_start 表记录的起始偏移量,row_count 表示显示的行数

        例:select * from employ order by sale desc  limit 3;

                select * from employ order by sale desc limit 1, 3;

        聚合

         select field1,field2 …… func_name from tablename [where condition group by field1, field2 …… with rollup  having where_condition]

         常用 sum (求和) 、count(*)(记录总数)、 max(最大值)、min(最小值).

         group by 后跟要分类聚合的字段

         with rollup 聚合后的结果再进行汇总

         having condition 分类后的结果再进行筛选

         例:select count(*) from employ

                 select deptno,count(1) from employ group by deptno;

                 select deptno, count(1) from employ group by deptno with rollup

                 select deptno,count(1) from employ group by deptno having count(1) > 1

                 select sun(sale), max(sale),min(sale) from employ;

         表链接

         同时需要显示多个表的字段时,就可以用表链接实现,大体上分为 内连接 和 外联结,区别在于内链接仅仅选出两张表中互相匹配的记录,而外链接会选出其他不匹配的记录。

         例:select name,deptname from employ, department where employ.deptno = department.deptid

                 select name,deptname from employ join departname on employ.deptno = department.deptid

         外链接又分为 左链接 和 右链接

         左链接 包含所有的左表中的记录 甚至是右表中没有和它匹配的记录

         右链接 包含所有的右表中的记录 甚至是左表中没有和它匹配的记录

         例:select name,deptname from employ left join department on  employ.deptno = department.deptid

                 select name,deptname from employ right join department on  employ.deptno = department.deptid

         子查询

         某些情况,查询的时候,需要的条件是另外一个色了传统 语句的查询结构。

         关键字:in 、 not in 、= 、 !=、 exists  、 not exists

         例: select * from employ where deptno in (select deptid from department)

         记录联合

         select * from tablename union | union all select * from tablename

         union 和 union all 的区别在于结果集直接合并起来,而union 是将结果合并后,去除重复的记录

         例:select deptno from employ union select deptid from department;

                 select deptno from employ union all select deptid from department;


         查询补充

         模糊查询

         使用 like    x% 前匹配   %x%  包含匹配   %x 后匹配

         例:select * from employ where name like "x%"

                 select * from employ where name like "%x%"

                 select * from employ where name like "%x"

          使用正则

          例:select * from employ where name regexp {正则规则}

四、DCL

        主要用于数据库对象权限的控制等。

         授权和废止

         例:  grant select, insert on test.* to 'jack '@'localhost' identified by '123456'

                   revoke  insert  on test.* from 'jack'@'localhost';

                   flush privileges //刷新权限

         使用帮助

         例:? contents

                 ? data types

                  ? int

                  ? show

                  ? create table


         参考:《深入浅出mysql》,《mysql 必知必会》

0 0
原创粉丝点击