MySQL 必知必会
关系型数据库:
MySQL,ORACLE,SQL Server,IBM DB2,PostgreSQL
NoSQL数据库:
mongoDB,redis
MySQL的组成
数据库
表
视图
存储过程
触发器
MySQL的默认端口号:3306
使用命令行操作数据库:
连接到数据库:
断开数据库:
quit
显示所有数据库:
切换到mydb数据库:
查看数据库中所有表:
查看表结构:
查看数据库版本和时间:
创建数据库:
创建表:
创建表之前我们需要了解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用于分组前的过滤
查询语句的顺序:
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基础知识和mysql优化整理,
MySQL基础知识总结.pdf
mysql参考手册重点章节:5 6 7 8 10 11 13 14 15 ## mysql启动方法: ## mysql关闭方法: ## mysql登陆方法:(单、多实例,本地、远程登录) ## 修改mysql提示符 ## 修改密码 ## root密码丢失找回 ## SQL结构化...
NULL 博文链接:https://onestopweb.iteye.com/blog/2340103
MYSQL 学习的笔记 由MYSQL的简介 和一些基础知识简介。
mysql基础知识
# MySQL基础知识笔记 ## 创建表 * 数据类型 |数据类型|大小(字节)|用途|格式| |:------|:--------:|:--:|:--:| |INT|4|整数|| |FLOAT|4|单精度浮点数|| |DOUBLE|8|双精度浮点数|| |ENUM||单选,比如性别|...
mysql基础知识教程,本书详细介绍了如何安装、管理、备份、维护和优化一个MySQL系统。
超详细mysql基础知识思维导图
MySQL基础知识复习
MySQL基础知识点111
mysql基础知识xmind总结
mysql基础知识 1.zip
mysql基础知识2.zip
PHP mysql基础知识技术考题分享,用于面试,考题用,最基础的简单的数据库操作和PHP基础只是测试
MySql基础知识(⾼频⾯试题) 事务的四⼤特性? 事务特性ACID:原⼦性(Atomicity)、⼀致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 1.原⼦性是指事务包含的所有操作要么全部成功,要么全部...
mysql基础知识.pdf
MySQL基础知识,常用命令,前端应知道的后端知识
mysql基础知识mysql基础知识,学习后可以达到中级mysql水准