`

MySQL基础知识

阅读更多

MySQL  必知必会

 关系型数据库
MySQL,ORACLE,SQL Server,IBM DB2,PostgreSQL

NoSQL数据库
mongoDB,redis

MySQL的组成

数据库

视图
存储过程
触发器

MySQL的默认端口号:3306

 

 使用命令行操作数据库:

连接到数据库

写道
mysql -uroot -proot [-h127.0.0.1]

 

断开数据库:

写道
exit
quit

 

显示所有数据库:

写道
show databases;

 

切换到mydb数据库:

写道
use mydb;

 

查看数据库中所有表:

写道
show tables;

 

查看表结构:

写道
desc t_user;

 

查看数据库版本和时间:

写道
select version(),now();

 

创建数据库:

写道
create database db001;

 

创建表:
创建表之前我们需要了解MySQL提供的数据类型
1整型
tinyint
smallint
mediumint
int(常用)
bigint
2浮点型
float
double
decimal(m,d)
3字符型
char
varchar(常用)
tinytext
text(常用)
mediumtext
longtext
4日期时间型
date
time
datetime
timestamp(常用)

下面我们创建表:

create table t_student( 
stuname varchar(20),
stuage int,
stuaddress varchar(100)
);

 

插入数据:

insert into t_student
(stuname,stuage,stuaddress)
values
('tom',23,'郑州');

 

查询表中数据:

select * from t_student;

 

主键:
在设计表时总是要定义表的主键
表的主键设计策略:
任意两行都不具备相同的主键值
每行都必须具有一个主键值(主键不允许null)
主键和业务无关,不更改,不重用
主键可以是一个列或者多个列的组合
使用primary key(**)来声明一个主键列
使用primary key(**,**)来声明组合主键

设计表时添加主键:

create table t_student(
id int,
stuname varchar(20),
stuage int,
primary key(id)
);

 

或者

create table t_student(
id int primary key,
stuname varchar(20),
stuage int
);

 

设置主键的自动增长:auto_increment

create table t_student(
id int auto_increment primary key,
stuname varchar(20),
stuage int
);

 

注意:一个表中只允许有一个自动增长列

创建表的时候除了可以添加主键约束外还可以给列添加一些其他约束

非null约束:

create table t_student(
id int primary key,
stuname varchar(20) not null,
stuage int
);

 

默认约束:

create table t_student(
id int primary key,
stuname varchar(20) default 'tom',
stuage int
);

 

唯一约束:

create table t_student(
id int primary key,
stuname varchar(20) not null unique,
stuage int
);

 

问题:
如果我创建表的时候,没有添加约束或表创建的有问题需要修改怎么办呢?

添加一列:

alter table t_student add tel char(20);

 

删除一列:

alter table t_student drop column tel;

 

添加唯一约束:

alter table t_student add constraint uk_stuname unique(stuname);

 

添加主键约束:

alter table t_user add constraint pk_t_user_id primary key(id);

 

添加默认约束:

alter table t_user alter password set default '000000';

 

添加非null约束:

alter table t_user modify column username varchar(20) not null;

 

重命名表:

rename table t_student to t_stu;

 

删除表:

drop table t_student;

 

导出数据库:

mysqldump -hlocalhost -uroot -proot mydb>c:/mydb.sql

 

导入数据库:

source c:/mydb.sql

 

上面介绍了数据库及表的结构操作,下面介绍更加常用的insert,update,select,delete操作


插入多条数据:

insert into t_student
(stuname,stuage,stuaddress)
values
('tom',23,'郑州'),('tom',23,'郑州');

 

注意:
参数数量要匹配,如果有默认值可以使用default来传值

insert into t_student
(stuname,stuage,stuaddress)
values
('tom',23,default),('tom',23,'郑州');

 

更改数据:

update t_student 
set
stuname='alex',age=26 
where id=1;

 

删除数据:

delete from t_student where id=1;

 

删除整个表数据:
1速度快

truncate table t_student;

 
2速度较慢

delete from t_student;

 

查询:

select id,username,password from t_student where id=1;

 

去重查询:

select distinct username from t_user;

 

分页查询:

select * from t_user limit 5;

 
--等价于limit 0,5;从表的第一行(行0)开始查5个;即ID为1,2,3,4,5的

select * from t_user limit 5,5;

 
--从第六行(行5)开始查5个,ID为6,7,8,9,10的

排序(降序):

select * from products order by prod_price desc;

 

排序(升序):

select * from products order by prod_price asc;

 

多列排序:

select * from products order by prod_price asc,prod_name desc;

 

过滤查询:
查询产品价格在2到10之间的

select * from products 
where 
prod_price>=2 and prod_price <=10;

select * from products
where 
prod_price between 2 and 10;

 

查询产品价格不等于2.5的所有产品

select * from products where prod_price <> 2.5;

select * from products where prod_price != 2.5;

 

查询没有电子邮件信息的客户

select * from customers where cust_email is null;

select * from customers where cust_email is not null;

 

查询不是由供应商1001和1003制造的商品

select * from products where vend_id not in('1001','1003');

 

模糊查询:

select * from products where prod_name like '_ton%';

 

注意:
不要过度使用like进行查询,效率会非常慢,如果必须使用,则把like放到查询的最后。

别名查询:

select vend_id as '供应商编号' from products;

 

算术运算查询:

select quantity,item_price,quantity*item_price as '总价' from orderitems;

 

文本处理函数:

select prod_name,left(prod_name,2) from products;
select prod_name,right(prod_name,5) from products;

select prod_name,length(prod_name) from products;

select prod_name,lower(prod_name) from products;
select prod_name,upper(prod_name) from products;

select prod_name,ltrim(prod_name) from products;
select prod_name,rtrim(prod_name) from products;
select prod_name,trim(prod_name) from products;

select concat('I love ',prod_name) from products;

 

日期处理函数:

SELECT CURDATE();
SELECT CURTIME();
SELECT NOW();
SELECT DATE(NOW());
SELECT TIME(NOW());
SELECT YEAR(CURDATE());
SELECT MONTH(CURDATE());
SELECT DAY(CURDATE());
SELECT DAYOFWEEK(NOW());
SELECT HOUR(CURTIME());
SELECT MINUTE(TIME(NOW()));
SELECT SECOND(TIME(NOW()));
SELECT DATEDIFF(CURDATE(),'2005-5-5');
SELECT ADDDATE(CURDATE(),10);

 

聚合函数:

SELECT MAX(prod_price) FROM products;
SELECT MIN(prod_price) FROM products;
SELECT COUNT(*) FROM products;
SELECT SUM(prod_price) FROM products;
SELECT AVG(prod_price) FROM products;

 

分组统计:

SELECT vend_id,COUNT(*) FROM products GROUP BY vend_id HAVING COUNT(*) > 2;

 

HAVING语句用于GROUP BY的过滤
WHERE用于分组前的过滤

查询语句的顺序:

写道
select
from
where
group by
having
order by
limit

 

子查询:

SELECT cust_name FROM customers WHERE cust_id  
IN (SELECT cust_id FROM orders WHERE order_num  
IN(SELECT order_num FROM orderitems WHERE prod_id = "TNT2") 
);

 

等值查询:

SELECT ts.id AS 'stuid',stu_name,tc.id AS 'class_id',class_name 
FROM t_student AS ts,t_class AS tc 
WHERE ts.class_id = tc.id;

 

内联接查询:

SELECT ts.id AS 'stuid',stu_name,tc.id AS 'class_id',class_name 
FROM t_student AS ts 
INNER JOIN t_class AS tc 
ON ts.class_id = tc.id ;

 

左外联接:

SELECT ts.id AS 'stuid',stu_name,tc.id AS 'class_id',class_name 
FROM t_student AS ts 
LEFT JOIN t_class AS tc 
ON ts.class_id = tc.id ;

 

右外联接:

SELECT ts.id AS 'stuid',stu_name,tc.id AS 'class_id',class_name 
FROM t_student AS ts 
RIGHT JOIN t_class AS tc 
ON ts.class_id = tc.id ;

 

组合查询:

SELECT id,name,createtime FROM t_user 
UNION 
SELECT id,name,createtime FROM t_company;

 

数据库引擎:
InnoDB:可靠的事务处理引擎,不支持全文搜索
MyISAM:是一个性能极高的引擎,支持全文,但是不支持事务处理
MEMORY:功能同MyISAM,但是数据存储在内存,速度极快

create table xxx(
    .....
)engine=innodb;

 

 

 

分享到:
评论

相关推荐

    mysql基础知识和mysql优化整理

    一、MySQL基础知识 1. 数据库与表:MySQL中的数据库是一个逻辑存储单元,用于组织相关数据。表是数据库中的基本元素,由列和行构成,用来存储具体的数据。 2. 数据类型:MySQL支持多种数据类型,如整数类型...

    MYSQL基础知识-学习笔记

    这份"MYSQL基础知识-学习笔记"涵盖了对MySQL的初步介绍以及基础概念,是初学者入门的理想资源。 首先,我们从MySQL的简介开始。MySQL是由瑞典的MySQL AB公司开发的,后被甲骨文公司收购。它是一款开源、免费的...

    MySQL基础知识总结.pdf

    以上是对MySQL基础知识的总结,涵盖了数据库管理系统的各个方面,从基础的数据类型到复杂的查询语句和事务处理,再到数据库的日常管理和性能优化。掌握这些知识对于在IT行业中进行数据库开发和管理是必不可少的。

    MySQL 基础知识的总结

    本文将深入探讨MySQL的基础知识,包括安装、数据类型、表的创建、查询语句、索引以及事务处理等核心概念。 1. **安装与配置** MySQL的安装过程通常包括下载适合操作系统的安装包,按照向导进行安装,然后配置...

    mysql基础知识小结

    mysql参考手册重点章节:5 6 7 8 10 11 13 14 15 ## mysql启动方法: ## mysql关闭方法: ## mysql登陆方法:(单、多实例,本地、远程登录) ## 修改mysql提示符 ## 修改密码 ## root密码丢失找回 ## SQL结构化...

    mysql基础知识培训

    MySQL 基础知识培训涵盖了从数据库的基本概念到实际安装和管理操作的多个方面。MySQL 是一款广泛应用的关系型数据库管理系统,特别适合于中小型企业及个人网站的开发,因其开源、免费且性能优秀的特点,常与 PHP、...

    mysql基础知识

    ### MySQL基础知识概述 根据提供的文件信息,我们可以梳理出关于MySQL的基础知识,主要涵盖数据库与表的基本操作、SQL查询以及简单的数据库管理等内容。 ### MySQL安装与启动 #### 安装路径 - **安装路径**:`D:\...

    MySQL基础知识.md

    # MySQL基础知识笔记 ## 创建表 * 数据类型 |数据类型|大小(字节)|用途|格式| |:------|:--------:|:--:|:--:| |INT|4|整数|| |FLOAT|4|单精度浮点数|| |DOUBLE|8|双精度浮点数|| |ENUM||单选,比如性别|...

    数据库Mysql基础知识总结

    **数据库MySQL基础知识总结** 在IT领域,MySQL是一个广泛使用的开源关系型数据库管理系统,以其高效、稳定和易用性而备受青睐。以下是对MySQL基础知识的详细总结: ### 1. MySQL基本概念 - **数据库(Database)*...

    mysql基础知识2.zip

    这个名为"mysql基础知识2.zip"的压缩包文件显然包含了关于MySQL基础概念、操作和管理的一些教学材料或教程。接下来,我们将深入探讨MySQL的基础知识。 1. **数据库和表的概念**:在MySQL中,数据库是一个组织数据的...

    mysql基础知识 1.zip

    本压缩包“mysql基础知识 1.zip”显然包含了关于MySQL的基础教程或资料,旨在帮助初学者理解并掌握MySQL的基本概念、操作和使用。 1. **MySQL概述** MySQL是一个快速、可靠且可移植的SQL数据库服务器,它由瑞典的...

    mysql基础知识详解,完整ppt

    这份"mysql基础知识详解,完整ppt"提供了全面的学习资源,帮助初学者和教学者快速掌握MySQL的核心概念。以下是对这份PPT中可能涵盖的知识点的详细解读: 1. **MySQL简介**:MySQL是一个开源、免费的数据库系统,它...

    超详细mysql基础知识思维导图

    超详细mysql基础知识思维导图

    MySql基础知识总结

    在日常开发中,了解这些MySQL基础知识是必不可少的。通过持续学习和实践,你可以掌握更高级的概念,如视图、存储过程、触发器,甚至性能优化和集群部署。无论你是初学者还是经验丰富的开发者,不断深入研究MySQL将有...

    mysql基础知识.pdf

    MySQL 基础知识 MySQL 是一种关系型数据库管理系统,建立在关系模型上的数据库系统。关系模型将实体(学生)和实体的属性(学生的学号、姓名)保存到数据库中,并规定数据结构,设置数据之间的关系。 MySQL 的...

    MySQL基础知识复习

    MySQL基础知识复习

    MySQL基础知识.docx

    前端开发者了解后端的MySQL基础知识对于前后端协作至关重要。 首先,我们来看看数据库的存储方式。数据库通常以特定的文件形式存储在本地磁盘或者远程服务器上,也可以存在于内存中以实现高速访问。对于云服务,...

    快速入门MYSQL基础知识.rar

    这份"快速入门MYSQL基础知识"的资料将引导你逐步了解和掌握MySQL的基础知识,包括安装与配置、数据类型、数据库设计、SQL语句、索引、存储引擎、备份与恢复等方面。 1. **MySQL安装与配置**:首先,你需要在你的...

    快速入门MYSQL基础知识.pdf

    ### 快速入门MYSQL基础知识 #### 一、MySQL简介与安装 MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),因其性能稳定、安全性高、易于使用等特点而受到广大开发者的青睐。对于计算机专业的学生来说,掌握...

    MySQL基础知识点111

    MySQL基础知识点111

Global site tag (gtag.js) - Google Analytics