MySQL学习笔记

MySQL是一个数据库管理系统,主要是对数据库进行增加、修改、删除、查询,具有大小写不敏感的特点(输入中用大写、小写均可)

1、基本命令

MySQL可以直接通过cmd进行登录,登录命令行:mysql -u用户名 -p密码/mysql -uroot -proot

1-1、DDL(Data Definition Language 数据定义语言)

1-1-1、基本语句

查看全部数据库:show databases;

创建数据库:create database 数据库名称;/create database name;

创建数据库并设置数据库的编码:create database 数据库名称 default charset=‘utf8’;/create database  name default charset=‘utf8’;

查看数据库的创建信息:show create database 数据库名称;/show create database name;

删除数据库:drop database 数据库名称;/drop database name;

使用数据库(数据库需要使用以后才能对数据库内的数据进行操作):use 数据库名称;/use name;

查看全部表(需要先使用数据库):show tables;

查看表的创建信息:show create table 表名称;/show create table name;

创建表:

  create table 表名称(

  字段名1 数据类型,

  字段名2 数据类型,

  constraint fk_字段名 foreign key 字段名2 references 表名1(字段名1)

  );(注意:“)”前的最后一句不能有“,”结尾)

  create table name(

  a int primary key auto_increment,

  b varchar(20) not null,

  c double(3,2) default 0,

  d char(1) check(d=’男‘ or d=’女‘),

  constraint fk_b foreign key (b) references name1(b)-- 由name1表中的b来约束name表中的b,前提name1表中的b是主键且数据类型与name表中的b相同

  )auto_increment=100;

修改列类型:alter table 表名 modify 列名 新类型/alter table name modify b int;

增加列:alter table 表名 add 列名 类型/alter table name add e int;

删除列:alter table 表名 drop 列名/alter table name drop e;

修改列名:alter table 表名 change 旧列名 新列名 类型/alter table name b x int;

修改表名:alter table 表名 rename 新表名/alter table name rename name1;或者rename table 表名 to 新表名/rename table name to name1

1-1-2、约束语句

约束语句用于约束数据的类型、数值等信息。

非空(数据不能为空):字段后+not null;

唯一:字段后+unique(注意:可以有多个null值);

主键:字段后+primary key(注意:一个表中只能有一个主键,主键字段非空且唯一);

自动增长:主键列+auto_increment,若需要从某个数开始增加可以在create table name()后+auto_increment=起始数值,如果不设置起始数值则默认从1开始(注意:只有int类型的字段才能使用,一张表中最多有一个自增);

设置默认值:字段后+default+默认值;

检查约束:字段后+check+条件(注意:mysql中对check会忽略,即写了也是白写,mysql是为了保持与其他数据库的一致性才设置的check约束,其他数据库中check约束是有用的);

外键约束:foreign key 建立两张或多张表中的联系,以保证数据的完整性。子表的外键参照列只能是主表的外键列或者有unique约束的列。子表中外键约束的列的值必须在主表的被参照列的值内,即若主表中有1,2,那么子表中只能有1或者2,不能有其他值。若主表中有值被参照,那么主表的相应记录不能被删除,若要删除需要先将子表中对应删除后才能删除主表中的值。

1-2、DML(Data Manipulation Language 数据操控语言)

增加数据:insert into 表名(列名1,列名2……)values(值1,值2……)/insert into name(a,b,c,d)values(1,2,3,4)。如果输入的值是表中全部的值,可以省略表名后面的括号,即insert into name values(a,b,c,d);

删除数据:delete from 表名 where 列名=条件值/delete from name where a=1。如果需要删除表格中的全部数据可以省略where语句。此外可以用truncate table name,该语句不能使用where条件限制,只能直接删除表中的全部数据,据说删除效率比delete语句高;

修改数据:update 表名 set 列名=新值 where 列名=条件值 and 列名like ’%条件值‘;/update name set a=1 where b=‘2’ and like ’_花%‘;where和lie语句根据实际情况使用,like后的’%‘表示多个不确定的值,‘_’表示一个不确定的字符,以上的like条件可以找出如‘无花果’、‘梅花一朵’等内容;

查询数据:select * from 表名

 

where 列名=条件值 and/or like 列名=条件值/select * from name where name.a=1 and name.b like ‘2’,该语句用于查询表格中满足条件的所有值,若只需要查询某几列内容可以使用:select 列名1,列名2 from where 列名=条件值 and/or 列名=条件值/select name.a,name.b from where name.a=1。由于表名较长可以用简称,查询出的列名也可以用简称:select 列名 as 别名1,列名 as 别名2 from 表名 别名3 where 列名=条件值/select x3.a as ‘编号’,x3.b as ‘内容’ from name x3 where x3.a=1,其中as可以省略。

1-3、DCL(Data Control Language 数据控制语言)

标准SQL语句:

  select 展示列(*表示全部列)

  from 表名

  where/like 条件

  group by 列名(分组)

  having 条件(必须有group by 语句才能使用)

  order by 列名(排序,默认升序,若要降序需要在语句最后加上 desc)

  limit 条件值(limit 开始行号,返回的行数。如果不写开始行号则默认从0开始,开始行号是实际行号-1)

指定展示列:select 列名1,列名2 from 表名/select name.a,name.b from name。

列名去除重复 :select distinct 列名1,列名2 from 表名/select distinct name.a,name.b from name;

列名取别称:由于文件名较长不便于使用,可以取别称简化或者更改列名显示,select 列名 as 别名1,列名 as 别名2 from 表名 别名3 /select x3.a as ‘编号’,x3.b as ‘内容’ from name x3 ,其中as可以省略;

between A and B语句:A和B之间的数据:select * from name where name.a between 1 and 10;

查询出的结果可以嵌套使用:复制表格create table newname select * from name;复制空表格create table newname select * from name where 1=2或者create table newname like name;

聚合函数:

count(1)统计全部数量

count(distinct 列名)统计列名中有多少种类

sum(列名)对列名的内容进行求和

avg(列名)对列名内容求平均数

列名的结果用于算术计算,即可以使用+、-、*、/、%等

max(列名)找出列名中的最大值

min(列名)找出列名中的最小值

left (列名,数字)找出列名中左起‘数字’个值

right(列名,数字)找出列名中右起‘数字’个值

全表链接:将两个或多个表进行链接select * from 表名1,表名2,表名3 where 表名1.列名1=表名2.列名2 and 表名2.列名3=表名3.列名3或者select * from 表名1 inner join 表名2 on 表名1.列名1=表名2.列名2 inner join 表名3 on 表名2.列名3=表名3.列名3

外链接:左外链接left join/left outer join,右外链接right join right outer join。左外链接是左边表全部显示,右边表没有对应信息则用null填补,右外链接是右边表全部显示,左边表没有对应信息则用null填补。

重要语句case when...then...else...end相当于if... ...else...

posted @ 2016-04-23 13:20  rogear  阅读(291)  评论(0编辑  收藏  举报