什么数据库:是用来储存数据的
创建库语句是数据定义语言(DDL):
DROP、CREATE、ALTER等语句,主要用于对数据库、表的操作。
数据操作语句(DML):
INSERT、UPDATE、DELETE语句,主要用于对表中的数据进行操作。
数据查询语句(DQL):
SELECT语句,数据查询操作。
数据控制语句(DCL):
GRANT、REVOKE、COMMIT、ROOLBACK等语句,主要用于对数据库控制操作,如事务管理。mysql数据库端口:3306
create database '库名' 建库
drop database '库名' 删库 mysql数据类型
数值:int,float
日期:datetime
字符串是:varchar mysql 建表语句
create table '表名'(
字段1,字段2...
)drop table '表名';
insert into '表名'(字段...)
values(值1...)create table test(
#主键,唯一,且不能重复
id int(11) not null primary key auto_increment,
#默认值
sex int(1) DEFAULT 1,
status int(1) DEFAULT 1,
#不为空约束
name varchar(50) not null '姓名',
#唯一约束,且不能重复
card_num VARCHAR(18) not null UNIQUE
);添加字段的命令:
ALTER TABLE `表名`
ADD COLUMN `字段` 数据类型; 修改字段类型的
ALTER TABLE `表名`
modify COLUMN `字段` 数据类型; 新增主键
ALTER TABLE 表名
ADD [CONSTRAINT 约束名] PRIMARY KEY 添加唯一约束
ALTER TABLE 表名
ADD [CONSTRAINT 约束名] UNIQUE (字段名...)删除唯一约束
ALTER TABLE 表名 DROP INDEX 约束名
设置默认值
ALTER TABLE 表名
ALTER 字段 SET DEFAULT 默认值
删除默认值
ALTER TABLE 表名
ALTER 字段 DROP DEFAULT设置非空约束
ALTER TABLE 表名
MODIFY字段名 字段定义 NOT NULL ;修改字段顺序
ALTER TABLE new_test MODIFY
sex int(1) AFTER name;mysql 是一款关系型数据库;
设置外键约束:
FOREIGN KEY(字段) REFERENCES
主表名(字段)
新增外键约束
ALTER TABLE 表名
ADD FOREIGN KEY(外键列)
REFERENCE 父表(父表主键名)修改数据
update 表名 set 字段='值',...
修改某项数据的 利用where条件
查询数据
select * from 表名 where 条件
*****慎用
delete from 表名 where 条件 查询数据
查询所有的字段
select * from 表名
起别名
select 字段1 as 别名2,字段1 as 别名2... from 表名
select 字段1 别名2,字段1 别名2... from 表名
where条件语句
and 同时满足多个条件
select * from 表名 where 条件1 and 条件2
or 满足其中一个条件
select * from 表名 where 条件1 or 条件2
in包含
select * from 表名 where 字段 in('值1','值2'...)
concat 字符串拼接
select concat(str,str2,...) from 表名
like 模糊查询
全模糊
select * from 表名 where 字段 like '%值%'
左模糊
select * from 表名 where 字段 like '%值'
右模糊
select * from 表名 where 字段 like '值%'
between and 区间查询左闭右开
select * from 表名 where 字段 between '值1' and '值2'not null
select * from 表名 where 字段 is not null;order by 默认是升序
select * from 表名 order by 字段
order by desc 降序
select * from 表名 order by 字段 desc+-*/(用于字段是数值类型的)
>= <= != < >
distinct 不查询重复数据(除id外所
有内容相同,查询的时候不能出现id)
binary 区分大小写的limit n,m;
n代表的是页数 ,m代表的是条数; 聚合函数
count() 查询总数的
sum() 求和的
max() 最大值
min() 最小值
avg() 平均值
分组 group byHAVING
如果对 group by 进行条件过滤的时候
则必须是having 可以单独使用case when 条件语句
case
when 条件1 then 值
when 条件2 then 值2
end 别名 group_concat
日期处理
获取当前时间
now(),sysdate()
ex:
select now();
select sysdate();
日期格式化
date_format(date,'%Y%m%d%h%i%s')y是大写重点
字符串转换成日期
str_to_date(str,格式)
select str_to_date('08/09/2008', '%m/%d/%Y'); -- 2008-08-09
select str_to_date('08/09/08' , '%m/%d/%y'); -- 2008-08-09
select str_to_date('08.09.2008', '%m.%d.%Y'); -- 2008-08-09
select str_to_date('08:09:30', '%h:%i:%s'); -- 08:09:30
select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s');日期计算相加的
date_add(date,interval n unit)
select date_add (now(), interval 1 day); -- add 1 day
select date_add (now(), interval 1 hour);
select date_add (now(), interval 1 week);
select date_add (now(), interval 1 month);
日期相减的
date_sub(date,interval n unit)
select date_sub (now(), interval 1 day); -- add 1 day
select date_sub (now(), interval 1 hour);
select date_sub (now(), interval 1 week);
select date_sub (now(), interval 1 month);
返回某一天
select DAYOFMONTH(birthday)
返回当前是某一年的第多少天
select DAYOFYEAR(now());
返回一周第几天(记着减一)
dayofweek(date)= 字符串
concat(str1,str2);
length(st1)//字节长度
char_length()//获取字符串长度
substring()//截取字符串长度
substr()// 截取字符串长度
left(str, length)
right(str, length)
截取值的第几个之前的字符串
substring_index(str,"值",count);
select substring_index('西门吹雪雪'),'雪',2) from employees; upper(str); 转换成大写
lower(str)转换成小写
CONCAT_WS(separator,str1,str2)
trim(str)去掉首尾空格
REPLACE(str, from_str, to_str);替换
REPEAT(str, count)str重复几次返回
REVERSE(str): 字符串颠倒顺序
locate(str,str2)字符串位置,类似于包含
elt(n,st1,str2....)返回第n个字符窜
field(str,str1,str2...)返回与str匹配的位置下标从1开始
find_in_set(str,str2);返回相同位置的(str2要用逗号隔开)
多表连接查询笛卡尔积:是多个表的乘积
格式:select * from tb1,tb2..inner:如果没有条件的时候相当笛卡尔积
select *from tb1 inner join
tb2 where 条件 子查询
--步骤1:查询最高工资人的信息
select max(salary) maxSalary from person
--步骤2:查询 工资是maxSalary 的 员工
select employee_id,last_name,salary from person where salary=maxSalary
--步骤3:合成SQL
select employee_id,last_name,salary from person where salary=(select max(salary) maxSalary from person)
查询工资是前3名的信息
select * from
#临时表
(select * from employees_20190221
order by salary desc
) tb limit 0,3; 左外连接格式
left join .. on ..
select * from tb1
left join tb2
on 条件 where 条件右外连接格式
right join .. on ..
select * from tb1
left join tb2
on 条件 where 条件自连接查询
查询 星星是一个
相同部所有人的都有谁
SELECT p1.* FROM
person AS p1 JOIN
person AS p2
ON
p1.did=p2.did
WHERE
p2.name='星星';
mysql excel新增
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章