zoukankan      html  css  js  c++  java
  • 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...

  • 相关阅读:
    (404) 未找到 获取StatusCode状态码
    通过UserAgent判断设备为Android、Ios、Pc访问
    Sql视图创建语句及修改视图
    301重定向
    md5加密篇(一)
    黑客编程教程(六)Windows的关机和重起
    黑客编程教程(五)多线程编程介绍
    黑客编程教程(四)关于服务器和客户端编程
    黑客编程教程(三)Windows 网络协议
    黑客编程教程(二)Win API编程简介
  • 原文地址:https://www.cnblogs.com/rogear/p/5424443.html
Copyright © 2011-2022 走看看