DDL:定义库表语句
mysql -uroot -p #linux系统
#库操作
show databases #查看库
create database emp; #建库
use emp; #切换库
select database;
drop database emp; #删库
#表操作
show tables;
create table emp(id not null,name varchart(20)); #create table 表名(字段1 字段类型,字段2 字段类型)
desc 表名 #查看表
show create table 表名;
alter table 表名 add/modify/change/drop/rename to...; #表操作
drop table 表名 #删除
#举例--新增表
create table emp(
id int comment '编号',
workno varchar(10) comment '工号',
name varchar(10) comment '姓别',
gender char(1) comment ‘性别’,
age tinyint unsigned comment '年龄',
idcard char(18) comment '身份证号',
entrydate date comment "入职时间") comment '员工表';
)
alter table emp change name username varchar(10);#修改数据类型\
alter table emp drop name;#删除字段
rename table x to y;#x表名改为y表名
insert into y(id,username,age) values(1,'xx',20); #插入数据
update employee set name ='itheima'where id = 1n #修改id为1 的数据,将name修改为itheima
update employee set name ='小昭',gender ='女'where id = 1. #修改id为1 的数据,将name修改为 小昭,gender 修改为 女
update employee set entrydate ='2008-01-01'; #-将所有的员工入职日期修改为 2008-01-01
#添加数据
INSERT INTO 表名 (字段1,字段2,..) VALUES(值1,值2,….)[,(值1,值2,…)…];
insert into emp(id,name) values(1,'张');
#修改数据2
UPDATE 表名 SET 字段1=值1,字段2=值2[WHERE 条件];
update emp set name='张',gender = '女' where id=1; #id=1的name改为张,性别改女
#删除数据
DELETE FROM 表名[WHERE 条件];
delete from 表名;
delete from 表名 where 条件;
#distinct去重
select distinct 字段 from emp;
select distinct device_id
FROM user_profile
LIMIT 2;
#数据包含某值
select * from emp where age in(10,20,19);
#查询姓名为n字节的员工信息 _%;
select * from emp where name like '___';
#查询id最后一位是X的员工信息;
select * from emp where id like '%X';
================================
DQL:select查询语句
********************执行过程:快速记: 1from--2where#找表,找符合的数据,分组前---3group by #数据分组---4select #查询数据---5orderby #数据排序---6limit#分页---7having #分页后操作
1 from 表名
2 where 条件
3 group by分组字段列表
4 select 字段
5 orderby排序
6 limit分页
7 having分组后条件 #最后一个
#聚合函数
count(字段) #统计数量
max(字段) #最大值
min(字段) #最小值
avg(字段) #平均值
sum(字段) #求和
语法:select 聚合函数(字段) from 表名; #null值不参与聚合函数
#统计字段有几列----和wc -l一样功能
select count(id) from emp;
#分组查询语法
SELECT 字段列表 FROM 表名[WHERE 条件]GROUP BY 分组字段名[HAVING 分组后过滤条件];
#where与having区别
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组:而having是分组之后对结果进行过滤>判断条件不同:where不能对聚合函数进行判断,而having可以。
#执行顺序: where >聚合函数>having。
#分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
#排序查询语法
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序式2;
192.168.0.53db
show databases;
use idmp_merchant;
select user_id,user_name from mer_user where user_id like '%6' and sex = 1 order by user_id desc;
ASC:升序(默认值)
DESC:降序
#limit分页
起始索引,展示行数 #从0开始,0为1。 #0,10 查看第一页,每页展示10行数据
select * from 表名 limit 1,10;
总结:as别名,提高查询效率
=========================================================
DCL:管理数据库用户访问权限
【用户增删】
#查询用户
use mysql;
select * from user;
#创建用户
create user '用户名'@'ip地址' identified by '密码';
#修改用户密码
alter user '用户名'@'ip地址' identified with mysql_native_password by '新密码';
#删除用户
drop user '用户名'@'ip地址';
【用户权限】
#查询权限
show grants for '用户名'@'ip地址';
#授予权限
grant xxx权限 on 数据库.表名 to '用户名'@'ip地址';
#撤销权限
revoke xxx权限 on 数据库.表名 from '用户名'@'ip地址';
总结:DCL语句,对于数据库用户创建删除,用户权限管理
【远程授予权限】
#桥接模式
create user 'root'@'192.168.0.180' identified by '1';
grant all on *.* to 'root'@'192.168.0.180';
flush privileges;
#nat模式--给网关
create user 'root'@'192.168.61.1' identified by '1';
grant all on *.* to 'root'@'192.168.61.1';
flush privileges;
=====================================================================
【字符串函数】
#lower转【小写】
select lower('GANTRS');
#upper转【大写】
select upper('HEddd');
#字符串前位填充---简称lpad【左填充】
select lpad('22',5,'xxx');
#字符串后位填充---简称rpad【右填充】
select rpad('22',5,'xxx');
#trim【去空格】
select trim('HELLO MYSQL');
#substring【截取字符串】,这里的下标从1开始,截取3位字节
select substring('hellomysql',1,3);
#统一5位数,不足5位前面补充0,1号员工,工号为000001; 工号字段为mer_id
#实际修改
#update 表名 set mer_id=lpad(mer_id,5,'0');
select lpad('1',5,'0');
【数值函数】
#ceil(x),向上取整
#floor(x),向下取整
#mod(x,y),返回x,y值
#rand(),返回0-1随机数
#round(x,y),求参数的四舍五入值,保留n位小数
#通过数据库函数,生成一个六位数的随机验证码
#rand生成随机小数所以需要*1000000;
#round,,保留0位数;
#lpad左填充,6字节,填充0;
select lpad(round(rand()*1000000,0),6,'0');
【流程函数】
#ifnull空
select ifnull(null,'default');
#case多条件判断
#province字段 如果是北京 那么返一线 (可继续增加when式子) 其他返二线 查询出来的数据给别名工作地址
select name,(case province when '北京市' then '一线' else '二线' end) as '工作地址' from mer_user where user_name like '%9';
=======================================================================
存储引擎:定义数据如何存取,用于存数据(库=目录,表=文件),默认innodb为引擎
数据特性:原子性,一致性,隔离性,持久性。
innodb引擎:支持事务,行锁,并发性能好,并发能保证数据一致性。支持外键约束。xxx.ibd=innodb文件。
例子:
createtable x(
id int no null;
name varchar(10);
) engin = innodb