`

MySQL 入门

阅读更多
安装完后可以把服务改成手动,在命令行输入 services.msc,打开服务,把MySQL改成手动。

在命令行 可以启动/停止 服务
net start/stop mysql

安装删除mysql服务
cmd进入命令行,cd进入mysql安装目录bin下,
mysqld -remove 删除mysql服务
mysqld -install 安装mysql服务

1、连接到本机上的MYSQL命令行

首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是如果-p后带有用户密码,那么-p与密码之间必须没有空格,否则让你重新输入密码.例如以下都是合法的登陆:(帐号:root   密码:123)
mysql -u root -p
mysql -u root -p
mysql -u root -p root

如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>

2、连接到远程主机上的MYSQL命令行

假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -u root -p 123;(注:u与root之间可以不用加空格,其它也一样)

3、退出MYSQL命令: exit (回车)


常用查询
MySQL结束符是“;”结束。

1、    显示所有数据库
show databases;

2、    删除数据库
drop database dbName;

3、    创建数据库
create database [if not exists] dbName;
中括号部分可选的,判断该数据不存在就创建

4、    切换、使用指定数据库
use dbName;

5、    显示当前使用数据库所有的表对象
show tables;

6、    显示表结构describe(desc)
desc tableName;

7、    创建一张表
create table user (
        --int 整型
        uId int,
        --小数
        uPrice decimal,
        --普通长度文本,default设置默认值
        uName varchar(255) default ‘zhangsan’,
        --超长文本
        uRemark text,
        --图片
        uPhoto blob,
        --日期
        uBirthday datetime
);

8、    子查询建表方法
部分列名匹配模式:
create table userInfo (
name varchar(20),
sex char
)
as
select name, sex from user;
上面的列名和子查询的列名以及类型要对应

全部列名模式:
create table userInfo
as
select * from user;
直接将整个表的类型和数据备份到新表userInfo中

9、    添加表字段
添加单列
alter table user add tel varchar(11) default ‘02012345678’;

添加多列
alter table user
add (
photo blob,
birthday date
);
上面就同时增加了多列字段

10、    修改表字段
修改tel列
alter table user modify tel varchar(15) default ‘02087654321’;
修改tel列的位置,在第一列显示
alter table user modify tel varchar(15) default '02087654321' first;
修改tel列的位置,在指定列之后显示
alter table user modify tel varchar(15) default '02087654321' after age;
注意:alter modify不支持一次修改多个列,但是Oracle支持多列修改
但是MySQL可以通过多个modify的方式完成:
alter table user
modify tel varchar(15) default '02087654321' first,
modify name varchar(20) after tel;

11、    删除指定字段
alter table user drop photo;

12、    重命名表数据
表重命名
alter table user rename to users;

字段重命名
alter table users change name u_name varchar(10);
alter table users change sex u_sex varchar(10) after u_name;
如果需要改变列名建议使用change,如果需要改变数据类型和显示位置可以使用modify
13、 删除表
drop table users;
drop删除表会删除表结构,表对象将不存在数据中;数据也不会存在;表内的对象也不存在,如:索引、视图、约束;

truncate删除表
truncate都被当成DDL出来,truncate的作用就是删除该表里的全部数据,保留表结构。相当于DDL中的delete语句,
但是truncate比delete语句的速度要快得多。但是truncate不能带条件删除指定数据,只会删除所有的数据。如果删除的表有外键,
删除的速度类似于delete。但新版本的MySQL中truncate的速度比delete速度快。
Ø 约束
MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息;
约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。

常用五类约束:
not null:非空约束,指定某列不为空
unique: 唯一约束,指定某列和几列组合的数据不能重复
primary key:主键约束,指定某列的数据不能重复、唯一
foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据
check:检查,指定一个表达式,用于检验指定数据
MySQL不支持check约束,但可以使用check约束,而没有任何效果;

根据约束数据列限制,约束可分为:
单列约束:每个约束只约束一列
多列约束:每个约束约束多列数据

MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息;
1、    not null约束
非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。
Null类型特征:
所有的类型的值都可以是null,包括int、float等数据类型
空字符串“”是不等于null,0也不等于null
create table temp(
        id int not null,
        name varchar(255) not null default ‘abc’,
        sex char null
)
上面的table加上了非空约束,也可以用alter来修改或增加非空约束
增加非空约束
alter table temp
modify sex varchar(2) not null;

取消非空约束
alter table temp modify sex varchar(2) null;

取消非空约束,增加默认值
alter table temp modify sex varchar(2) default ‘abc’ null;

2、    unique
唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。虽然唯一约束不允许出现重复的值,但是可以为多个null
同一个表可以有多个唯一约束,多个列组合的约束。在创建唯一约束的时候,如果不给唯一约束名称,就默认和列名相同。
唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。
MySQL会给唯一约束的列上默认创建一个唯一索引;
create table temp (
        id int not null,
        name varchar(25),
        password varchar(16),
        --使用表级约束语法,
        constraint uk_name_pwd unique(name, password)
);
表示用户名和密码组合不能重复
添加唯一约束
alter table temp add unique(name, password);
alter table temp modify name varchar(25) unique;
删除约束
alter table temp drop index name;

3、    primary key
主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值;如果的多列组合的主键约束,
那么这些列都不允许为空值,并且组合的值不允许重复。
每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别上创建。MySQL的主键名总是PRIMARY,
当创建主键约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。
列模式:
create table temp(
    /*主键约束*/
    id int primary key,
    name varchar(25)
);

create table temp2(
    id int not null,
    name varchar(25),
    pwd varchar(15),
    constraint pk_temp_id primary key(id)
);

组合模式:
create table temp2(
    id int not null,
    name varchar(25),
    pwd varchar(15),
    constraint pk_temp_id primary key(name, pwd)
);

alter删除主键约束
alter table temp drop primary key;

alter添加主键
alter table temp add primary key(name, pwd);

alter修改列为主键
alter table temp modify id int primary key;

设置主键自增
create table temp(
        id int auto_increment primary key,
        name varchar(20),
        pwd varchar(16)
);
auto_increment自增模式,设置自增后在插入数据的时候就不需要给该列插入值了。

4、    foreign key 约束
外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。
也就是说从表的外键值必须在主表中能找到或者为空。
当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表中依赖该记录的数据,
然后才可以删除主表的数据。还有一种就是级联删除子表数据。
注意:外键约束的参照列,在主表中引用的只能是主键或唯一键约束的列,假定引用的主表列不是唯一的记录,
那么从表引用的数据就不确定记录的位置。同一个表可以有多个外键约束。
创建外键约束:
主表
create table classes(
        id int auto_increment primary key,
        name varchar(20)
);
从表
create table student(
        id int auto_increment,
        name varchar(22),
        constraint pk_id primary key(id),
        classes_id int references classes(id)
);

通常先建主表,然后再建从表,这样从表的参照引用的表才存在。
表级别创建外键约束:
create table student(
        id int auto_increment primary key,
        name varchar(25),
        classes_id int,
        foreign key(classes_id) references classes(id)
);
上面的创建外键的方法没有指定约束名称,系统会默认给外键约束分配外键约束名称,命名为student_ibfk_n,
其中student是表名,n是当前约束从1开始的整数。

指定约束名称:
create table student(
        id int auto_increment primary key,
        name varchar(25),
        classes_id int,
        /*指定约束名称*/
        constraint fk_classes_id foreign key(classes_id) references classes(id)
);

多列外键组合,必须用表级别约束语法:
create table classes(
        id int,
        name varchar(20),
        number int,
        primary key(name, number)
);
create table student(
        id int auto_increment primary key,
        name varchar(20),
        classes_name varchar(20),
        classes_number int,
        /*表级别联合外键*/
        foreign key(classes_name, classes_number) references classes(name, number)
);

删除外键约束:
alter table student drop foreign key student_ibfk_1;
alter table student drop foreign key fk_student_id;

增加外键约束
alter table student add foreign key(classes_name, classes_number) references classes(name, number);

自引用、自关联(递归表、树状表)
create table tree(
        id int auto_increment primary key,
        name varchar(50),
        parent_id int,
        foreign key(parent_id) references tree(id)
);

级联删除:删除主表的数据时,关联的从表数据也删除,则需要在建立外键约束的后面增加on delete cascade
或on delete set null,前者是级联删除,后者是将从表的关联列的值设置为null。
create table student(
        id int auto_increment primary key,
        name varchar(20),
        classes_name varchar(20),
        classes_number int,
        /*表级别联合外键*/
        foreign key(classes_name, classes_number) references classes(name, number) on delete cascade
);

5、    check约束
MySQL可以使用check约束,但check约束对数据验证没有任何作用。
create table temp(
        id int auto_increment,
        name varchar(20),
        age int,
        primary key(id),
/*check约束*/
check(age > 20)
);
上面check约束要求age必须大于0,但没有任何作用。但是创建table的时候没有任何错误或警告。


Ø 索引
索引是存放在模式(schema)中的一个数据库对象,索引的作用就是提高对表的检索查询速度,
索引是通过快速访问的方法来进行快速定位数据,从而减少了对磁盘的读写操作。
索引是数据库的一个对象,它不能独立存在,必须对某个表对象进行依赖。
提示:索引保存在information_schema数据库里的STATISTICS表中。

创建索引方式:
自动:当表上定义主键约束、唯一、外键约束时,该表会被系统自动添加上索引。
手动:手动在相关表或列上增加索引,提高查询速度。

删除索引方式:
自动:当表对象被删除时,该表上的索引自动被删除
手动:手动删除指定表对象的相关列上的索引
索引类似于书籍的目录,可以快速定位到相关的数据,一个表可以有多个索引。

创建索引:
create index idx_temp_name on temp(name);

组合索引:
create index idx_temp_name$pwd on temp(name, pwd);

删除索引:
drop index idx_temp_name on temp;

Ø 视图
视图就是一个表或多个表的查询结果,它是一张虚拟的表,因为它并不能存储数据。
视图的作用、优点:
限制对数据的访问
让复杂查询变得简单
提供数据的独立性
可以完成对相同数据的不同显示
   
创建、修改视图
create or replace view view_temp
as
    select name, age from temp;
通常我们并不对视图的数据做修改操作,因为视图是一张虚拟的表,它并不存储实际数据。如果想让视图不被修改,可以用with check option来完成限制。
create or replace view view_temp
as
    select * from temp
with check option;

修改视图:
alter view view_temp
as
    select id, name from temp;

删除视图:
drop view view_temp;

显示创建语法:
show create view v_temp;

Ø DML语句
DML主要针对数据库表对象的数据而言的,一般DML完成:
插入新数据
修改已添加的数据
删除不需要的数据
1、    insert into 插入语句
insert into temp values(null, ‘jack’, 25);
主键自增可以不插入,所以用null代替

指定列
insert into temp(name, age) values(‘jack’, 22);
在表面后面带括号,括号中写列名,values中写指定列名的值即可。当省略列名就表示插入全部数据,
注意插入值的顺序和列的顺序需要保持一致。
Set方式插入,也可以指定列
insert into temp set id = 7, name = 'jason';

MySQL中外键的table的外键引用列可以插入数据可以为null,不参照主表的数据。

使用子查询插入数据
insert into temp(name) select name from classes;

多行插入
insert into temp values(null, ‘jack’, 22), (null, ‘jackson’ 23);

2、    update 修改语句
update主要完成对数据的修改操作,可以修改一条或多条数据。修改多条或指定条件的数据,需要用where条件来完成。
修改所有数据
update temp set name = ‘jack2’;
所有的数据的name会被修改,如果修改多列用“,”分开
update temp set name = ‘jack’, age = 22;
修改指定条件的记录需要用where
update temp set name = ‘jack’ where age > 22;

3、    delete 删除语句
删除table中的数据,可以删除所有,带条件可以删除指定的记录。
删除所有数据
delete from temp;
删除指定条件数据
delete from temp where age > 20;

Ø select 查询、function 函数
select查询语句用得最广泛、功能也最丰富。可以完成单条记录、多条记录、单表、多表、子查询等。
1、    查询某张表所有数据
select * from temp;
*代表所有列,temp代表表名,不带条件就查询所有数据

2、    查询指定列和条件的数据
select name, age from temp where age = 22;
查询name和age这两列,age 等于22的数据。

3、    对查询的数据进行运算操作
select age + 2, age / 2, age – 2, age * 2 from temp where age – 2 > 22;

4、    concat函数,字符串连接
select concat(name, ‘-eco’) from temp;
concat和null进行连接,会导致连接后的数据成为null

5、    as 对列重命名
select name as ‘名称’ from temp;
as也可以省略不写,效果一样
如果重命名的列名出现特殊字符,如“‘”单引号,那就需要用双引号引在外面
select name as “名’称” from temp;

6、    也可以给table去别名
select t.name Name from temp as t;

7、    查询常量
类似于SQL Server
select 5 + 2;
select concat('a', 'bbb');

8、    distinct 去掉重复数据
select distinct id from temp;
多列将是组合的重复数据
select distinct id, age from temp;

9、    where 条件查询
大于>、大于等于>=、小于<、小于等于<=、等于=、不等于<>
都可以出现在where语句中
select * from t where a > 2 or a >= 3 or a < 5 or a <= 6 or a = 7 or a <> 0;

10、    and 并且
select * from temp where age > 20 and name = ‘jack’;
查询名称等于jack并且年龄大于20的

11、    or 或者
满足一个即可
select * from tmep where name = ‘jack’ or name = ‘jackson’;

12、    between v and v2
大于等于v且小于等于v2
select * form temp where age between 20 and 25;

13、    in 查询
可以多个条件 类似于or
select * from temp where id in (1, 2, 3);
查询id在括号中出现的数据

14、    like 模糊查询
查询name以j开头的
select * from temp where name like ‘j%’;

查询name包含k的
select * from temp where name like ‘%k%’;

escape转义
select * from temp where name like ‘\_%’ escape ‘\’;
指定\为转义字符,上面的就可以查询name中包含“_”的数据

15、    is null、is not null
查询为null的数据
select * from temp where name is null;
查询不为null的数据
select * from temp where name is not null;

16、    not
select * from temp where not (age > 20);
取小于等于20的数据
select * from temp where id not in(1, 2);

17、    order by
排序,有desc、asc升序、降序
select * from temp order by id;
默认desc排序
select * from temp order by id asc;
多列组合
select * from temp order by id, age;
分享到:
评论

相关推荐

    数据库MySQL入门.pdf

    MySQL入门讲义 MySQL是属于Oracle Corporation(甲骨文公司)推出的关系型数据库管理系统, MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。 MySQL最流行的关系型数据库...

    MySQL入门+进阶资源合集.pdf

    ### MySQL入门+进阶资源合集 #### 一、MySQL基础知识与入门 ##### 1.1 MySQL基础概念 - **数据库(Database)**:是用于存储数据的逻辑容器,它能够高效地管理和组织数据。 - **表(Table)**:是数据库中用来存储...

    MySQL入门到高级-宋红康版.zip

    MySQL入门到高级-宋红康版 ----- 毕业设计,课程设计,项目源码均经过助教老师测试,运行无误,欢迎下载交流 ----- 下载后请首先打开README.md文件(如有),某些链接可能需要魔法打开。 ----- 毕业设计,课程设计,...

    MySQL入门很简单课件 MySQL入门很简单课件

    这个“MySQL入门很简单课件”旨在为初学者提供一个易懂且全面的学习路径,帮助他们快速掌握MySQL的基础知识。 首先,我们要理解数据库的基本概念。数据库是一个组织和存储数据的系统,它允许用户以结构化方式访问和...

    MySQL入门很简单课件

    MySQL入门很简单课件,感兴趣同志可以下载来学习一下。

    MySQL入门到高级-康师傅版.zip

    本教程"MySQL入门到高级-康师傅版.zip"旨在帮助初学者快速掌握MySQL的基础,并逐步提升至高级水平。尚硅谷教育机构的宋红康老师倾力打造,通过一系列深入浅出的讲解,使学习者能够全面了解和掌握MySQL的各个方面。 ...

    MySQL入门很简单.pdf

    本书《MySQL入门很简单》主要面向初学者,旨在帮助他们从零开始学习和掌握MySQL数据库的使用。 在学习MySQL的过程中,初学者首先需要了解数据库的基础知识,包括数据库的概念、数据库表的创建与管理、数据类型以及...

    MySQL入门很简单PPT

    这份"MySQL入门很简单PPT"旨在为初学者提供一个快速理解MySQL基础知识的平台,帮助他们轻松进入数据库管理的世界。 首先,PPT可能会涵盖MySQL的基本概念,包括数据库、表、字段和记录等。数据库是存储数据的容器,...

    MySQL入门很简单

    根据提供的标题“MySQL入门很简单”以及描述“自己整理的带标签的MYSQL教程《MySQL入门很简单》”,我们可以推测这份教程旨在帮助初学者轻松掌握MySQL的基本操作与应用。下面将基于这一推测,详细介绍MySQL的基础...

    《MySQL入门很简单》 源代码

    《MySQL入门很简单》是一本旨在帮助初学者快速掌握MySQL数据库技术的教程。源代码提供了书中所有实例和练习的实现,让读者能够动手实践,加深理解。以下是对这些知识点的详细阐述: 1. **MySQL简介**:MySQL是一款...

    21分钟MySQL入门教程

    ### MySQL入门教程精要知识点详解 #### 一、MySQL的相关概念介绍 - **关系型数据库**:MySQL是一种关系型数据库管理系统(RDBMS),它基于表格形式组织数据。 - **表格**:由一系列行和列构成的数据结构,用于...

    MySQL入门与精通教程.pdf )

    ### MySQL入门与精通教程知识点概览 #### 一、MySQL简介 - **定义**:MySQL是一种跨平台的开源关系型数据库管理系统(RDBMS),它支持标准的SQL(Structured Query Language)语言。由于其高性能、易用性和稳定性,...

    MySQL入门很简单-学习笔记_20110913.pdf

    ### MySQL入门知识点详解 #### 一、数据库概述 1. **数据存储方式**:数据库是组织、存储和处理数据的一种重要工具。早期的数据存储方式包括文件系统,但是随着数据量的增长,这种简单的方式逐渐暴露出许多问题,...

    mysql入门到精通ppt

    【MySQL入门到精通PPT】是一份旨在帮助初学者快速掌握MySQL数据库系统核心概念和操作技巧的教程。MySQL是一款广泛使用的开源关系型数据库管理系统,它以其高效、稳定和易用性在众多数据库系统中脱颖而出。这份PPT...

    MySQL学习源码(MySQL入门教程).zip

    MySQL学习源码(MySQL入门教程).zipMySQL学习源码(MySQL入门教程).zipMySQL学习源码(MySQL入门教程).zipMySQL学习源码(MySQL入门教程).zipMySQL学习源码(MySQL入门教程).zipMySQL学习源码(MySQL入门教程).zipMySQL...

    《MySQL入门很简单》PDF版本下载.txt

    根据提供的文件信息,我们可以推断出这是一份关于MySQL数据库入门...对于初学者来说,《MySQL入门很简单》这本书将是非常有用的资源,可以帮助他们快速掌握MySQL的基本操作及高级功能。希望这些信息能对你有所帮助。

    MySQL 入门经典MySQL 入门经典MySQL 入门经典MySQL 入门经典

    MySQL 入门经典MySQL 入门经典MySQL 入门经典MySQL 入门经典MySQL 入门经典MySQL 入门经典MySQL 入门经典MySQL 入门经典MySQL 入门经典MySQL 入门经典MySQL 入门经典MySQL 入门经典MySQL 入门经典MySQL 入门经典...

    MySQL入门很简单(数据库)

    以下是一些关于MySQL入门的重要知识点: 1. **数据库概念**:数据库是一个组织和存储数据的系统,它允许高效地检索、更新和管理信息。MySQL是一个开源、免费的SQL数据库,支持多种操作系统。 2. **SQL语言**:SQL...

    MySQL入门很轻松.zip

    本课程“MySQL入门很轻松”旨在帮助初学者快速掌握MySQL的基本概念、安装配置以及基本操作,从而轻松踏入数据库管理的大门。 在“资源下载及教书服务介绍.doc”中,可能包含了关于课程的教学资源、下载指南以及教学...

Global site tag (gtag.js) - Google Analytics