MySQL学习笔记6

MySQL学习笔记6

#进阶8:分页查询
/*
应用场景:当显示的数据一页显示不全,需要分页提交sql请求
语法:
	select查询列表
	from 表
	【join type】表2
	条件
	limit offset,size;
	offset 要显示条目起始索引 起始索引从0开始
	size要显示的条目个数
特点:
	limit放在查询语句最后
	公式:
	要显示的页数page ,每页的条码数size
	
	select 查询列表
	from表
	limit,(page-1)*size,size;
*/
SELECT *FROM employees LIMIT 0,5;

# 案例2:查询第11条-第25条
SELECT *FROM employees LIMIT 10,15;
#案例3:有奖金的员工信息,并且工资较高的前10名显示出来
SELECT e.*,salary 
FROM employees e
WHERE e.`commission_pct` IS NOT NULL
GROUP BY e.`employee_id`
ORDER BY salary DESC
LIMIT 0,10;
#进阶9 联合查询
/*
union :联合。合并。将多条查询语句的结果合并成一个结果
语法:
	查询语句1
	union
	查询语句2
	union
应用场景
要查询的结果来自多个表,且多个表没有直接的联合关系,但查询的信息一致

特点:
1、要求多条查询语句的列数一致
2、要求多条查询语句类型顺序一致
3、union关键字,默认去重,若不想去重union all

*/

#案例:查询部门标号》90或者邮箱包含啊的员工信息
SELECT * FROM employees WHERE email LIKE '%a%'
UNION 
SELECT * FROM employees WHERE department_id>90;

#dml语言
/*
数据操作语言
插入:insert
修改:update
删除:delete


*/
#一、插入语句
/*
方式一、
语法:
insert into 表名(列名.....) values(值1,...)


*/
#1.插入的值的类型要与列的类型一致或兼容
INSERT INTO beauty (id,NAME ,sex,borndate,phone,photo,boyfriend_id)
VALUES ()
#2.不可以为null的列必须插入值,可以为null的列如何插入值 方法1,列名对应值为null,方法2.列名不写,对应值不写
INSERT INTO beauty (id,NAME ,sex,borndate,phone,photo,boyfriend_id)
VALUES ()
#3.列的顺序可以调换,值必须对应
#4.列的个数与值必须对应一致
#5.可以省略列名,默认所有列,而且插入值的顺序和表中列的顺序一致

#方式二、
/*
语法:
insert into 表名
set 列名=值,
...

*/

#两种方式比较
/*1、方式一支持多行,方式二不支持
insert into beauty values (),(),();
2、方式一支持子查询,方式二不支持
insert into 表名(列名)
select 列名对应的数值;


#二、修改语句
/*
1、修改单表的记录
语法:
update 表名
set 列=新值,列=新值....
where 筛选条件;
2、修改多表的记录
语法:
update 表1 别名,表2 别名
set 列=值....
where连接条件 and筛选条件;

sql99语法
update 表名1 别名
inner left right join 表2 别名
on 连接条件
set 列=值,...
where 筛选条件

*/

#三删除语句

/*
方式一;delete
语法:
1、单表的删除
delete from 表名 where 筛选条件
2、多表删除
sql92语法:
delete 别名
from 表1 别名,表2 别名
方式二:
语法:truncate table 表名;

*/
#delete 与 truncate 比较
/*
1、delete删除可以加where条件truncate不行
2、truncate删除,效率比delete高
3、假如要删除的表中有自增长列;
如果用delete删除后,在插入数据,自增长列的值从断点开始
而truncate删除后,再插入数据自增长的列从1开始
4、truncate删除没有返回值
5、truncate 删除不能回滚,delete删除可以回滚

*/

#方式二:
TRUNCATE TABLE boys;



#ddl
/*
数据定义语言
库和表的管理
一、库的管理
创建、修改、删除
二、表的管理
创建 修改 删除
创建create
修改alter
删除drop
*/

#一、库的管理
#1、库的创建
/*
语法 
create database (if not exists) 库名:
(如果库存在不创建,不存在则创建)


*/
CREATE DATABASE IF EXISTS books;
#2、库的修改
/*更改库的字符集*/
ALTER DATABASE books CHARACTER SET gbk;

#3、库的删除

DROP DATABASE IF EXISTS books;


#二、表的管理
#1、表的创建
/*
create table表名:(
列名 列的类型 【(长度)约束】中括号内可选,
列名 列的类型 【(长度)约束】中括号内可选,
)
*/

CREATE DATABASE books;
#案例:创建book
CREATE TABLE book(
	id INT,
	bname VARCHAR(20),
	price DOUBLE,
	authorid INT,
	publishDate DATETIME
);
CREATE TABLE author(
	id INT,
	au_name VARCHAR(20),
	nation VARCHAR(20)
);

#2、表的修改
/*
alter table 表名 add | drop |modify|change column 列名 类型 约束
*/

#1.列名
ALTER TABLE book CHANGE COLUMN publishDate pubDate DATETIME;


#2.类型或约束
ALTER TABLE book MODIFY COLUMN  pubDate TIMESTAMP;
DESC book;

#3.增加列
ALTER TABLE author ADD COLUMN annual DOUBLE;
#4.删除列
ALTER TABLE author DROP annual;
#5.修改表名
ALTER TABLE author RENAME TO name_author;


#3、表的删除
DROP TABLE IF EXISTS name_author;
SHOW TABLES;
#通用写法:
DROP DATABASE IF EXISTS 旧库名;
CREATE DATABASE 新库名;

DROP TABLE IF EXISTS 旧表名;
CREATE TABLE 新表名;

#4、表的复制
DESC author;
DESC book;
INSERT INTO author VALUES
(1,'aa','bb'),
(2,'cc','dd'),
(3,'ee','ff');
 #1 仅仅复制表的结构
 CREATE TABLE copy LIKE author;
 #2 复制表达结构+数据
 CREATE TABLE copy2
 SELECT * FROM author;
 
 #3 只复制部分数据
 CREATE TABLE copy3
 SELECT * FROM author
 WHERE nation = 'bb';
 SELECT * FROM copy3;
 #4 只复制部分结构
 CREATE TABLE copy4 SELECT id ,au_name
 FROM author
 WHERE 1=2;
 SELECT * FROM copy4;
 
 
 
#常见的数据类型
/*
数值型:
	整形
	小数:
		定点数
		浮点数
字符型:	
	较短的文本:char varchar
	较长的文本:text blob(较长的二进制数据)
日期型:

*/


#一、整形
#整形类型
/*
tinyint 字节1 有符号 -128~127 无符号0-255
smallint 字节2  2的16幂
分类:
tinyint smallint mediumint int bigint
1、特点:
1.如果不设置无符号,爱好是有符号,默认是有符号,想设置加unsigned
2.如果插入数据超出临界范围,会显示临界值
3.如果不设置长度,会有默认长度
长度代表了显示的最大宽度,如果不够会用0填充,但必须搭配zerofill使用

*/

#1、如何设置无符号和有符号
DROP TABLE IF EXISTS tab_int;
CREATE TABLE tab_int(
		t1 INT,
		t2 INT UNSIGNED 

);
INSERT INTO tab_int VALUES(-222222,22222222);
DESC tab_int;
SELECT	* FROM tab_int;




#二、小数
/*
浮点型
float(M,D)
double(M,D)

定点型
dec(M,D)

特点:
1.M和D
M代表整数部位加小数部位长度,D代表小数点后保留位数,超出范围插入临界值。
2.M和D都可以省略,
如果是dec型 M默认为10 D为0,如果是float和double,则Juin根据插入的数值精度来决定精度
3.定点型精确度较高,如果要求插入数值精度较高如货币运算等则考虑使用
*/
CREATE TABLE tab_float(
	f1 FLOAT(5,2),
	f2 DOUBLE(5,2),
	f3 DEC(5,2)
);
INSERT INTO tab_float VALUES(123.456,123.456,123.456);
SELECT * FROM tab_float;

#原则
/*
所选择的类型越简单越好,能保存的数值越小越好

*/
#三、字符型
/*
较短的文本
char:固定长度
varchar:可变长度
其他 :
binary 和varbinary 较短二进制
enum 保存枚举
set保存集合

较长的文本:
text
blob


特点
char vchar(M)最大字符数,插入耗费空间大char
char 效率高	变化小使用 默认1
varchar效率低 变化大

*/
#四、日期型
/*
date 日期
year 年
time 时间

datetime 日期+时间
timestamp 日期+时间

特点:
		字节			范围		时区等的影响

datetime	8			1000-9999	不受
timestamp	4			1970-2038	受

*/
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值