MySql

数据库

  • 数据定义语言DDL (create、drop)
  • 数据操作语言DML(insert、delete、update)
  • 数据查询语言DQL(select、where、group by、order by 、limit)
  • 数据控制语言DCL(grant、revoke)
  • 事务处理语言TPL(commit、rollback)
  1. 安装mysql

    sudo apt install mysql-server mysql-client

  2. 开启mysql服务

    sudo service mysql start

  3. 关闭mysql服务

    sudo service mysql stop

  4. 重启mysql服务

    sudo service mysql restart

  5. 查看数据库

    show databases;

show

  1. 使用某个数据库

    use xxx;

  2. 查看当前数据库里面的所有表

    show tables;

  3. 创建用户(当时新建的用户并没有权限)

    create user ‘username’@‘host’

  4. 给某个用户授权

    grant all privileges on * [数据库名]. [表名]* to ‘用户名’@‘用户ip或localhost’ identified by ‘用户名’

  5. 刷新数据库

    flush privileges;

  6. 删除数据库

    drop database 数据库名字;

数据库中的数据类型

类型符号
整型int、smallint、tinyint
浮点型float、double decimal(5,1)
字符char(n)、varchar(n)
枚举enum(‘男’,‘女’)

数据库里面的内置方法

  • 字符串函数
函数功能
char_length(str)获取字符串的字符个数
length(str)获取字符串的字节数
concat(s1, s2, … , sn)连接s1, s2, …, sn 为一个字符串
lower(str)将字符串str中所有的字符转换为小写
upper(str)将字符串str中所有的字符转换为大写
left(str, x)返回字符串str最左边的x个字符
right(str, y)返回字符串str最右边的y个字符
lpad(str, n, pad)用字符串pad对str最左边进行填充, 直到长度为n个字符长度
rpad(str, n, pad)用字符串pad对str最右边进行填充, 直到长度为n个字符长度
ltrim(str)去掉str中最左边的空格
rtrim(str)去掉str中最右边的空格
trim(str)去掉字符串str两边的空格
repeat(str, x)返回str中重复出现x次的结果
replace(str, a, b)将字符串str中的a更换为b
insert(str, x, y, instr)将字符串str从第x位置开始, y个字符长度的子字符串替换为字符串instr
strcmp(s1, s2)比较字符串s1, s2
substring(str, x, y)返回字符串str x位置开始y个字符长度的字符串
  • 日期函数

    函数名功能
    curdate()得到当前日期
    curtime()得到当前时间
    now()得到当前日期和时间
    year(date)得到date的年份
    month(date)得到date的月份
    day(date)得到date的天
    hour(time)得到time的小时
    minute(time)得到time 的分钟
    second(time)得到time的秒
    week(date)得到date是一年中的第几周
    date_format(date,fmt)按格式化串fmt返回date的日期字符串

    DATE_ADD(date, INTERVAL number unit)
    date_sub()
    datediff(date1,date2)
    select DATE_FORMAT(now(),’%Y- %m-%d %H:%i:%s’);

  • 数学函数

    函数名功能
    abs(x)求x的绝对值
    ceil(x)向上取整
    floor(x)向下取整
    round(x,d)四舍五入,d为保留小数的位数
    pow(x,y)x的y次幂
    rand()0~1之间的随机小数
    mod(x,y)等同于x % y,求x对y的模

增删改查

增 insert

  1. 插入全部数据
    insert 表名 values (数据1,数据2,…)
  2. 插入某几列数据
    insert 表名(列名1,列名2,…) values (数据1,数据2,…)
  3. 插入多行数据
    insert 表名 values (数据1,数据2,…),(数据1,数据2,…),(数据1,数据2,…)

删 delect

DELETE FROM runoob_tbl WHERE runoob_id=3

改 update

update 表名 set 列名=数据 where 列名=条件

查 select

  1. 查询所有数据
    select * from 表名
  2. 查询某列数据
    select 列名 from 表名
  3. 查询前几行数据
    select 列名 from 表名 limit 行数 偏移量
  4. 按条件查询
    select * from 表名 where 条件
逻辑
and 与
or 或
not 非
in 在某个范围里面
not in 不在某个范围里面
is null 是否为空
  1. 分组查询 group
-- 查询薪资大于5000的各个部门人数
select depno,count(*) from EMP where sal>=5000 group by depno;

-- 部门号20,各个职位平均薪资
select job,avg(sal) from EMP where depno=20 group by job;

--  姓秦 员工 各个职位的最低薪资
select job,min(sal) from EMP where ename like '秦%' group by job;

-- 查询管理者在各个部门的人数
select depno,count(*) from EMP where job='manager' group by depno;

  1. 分组后再条件查询 having
    (1)显示各个班级的学生成绩
    select * from 成绩表 group by 班级
    (2)显示各个班级前三名的成绩
    这时候需要先把各个班级的成绩分出来,然后再按照成绩排序,选取前三名
    select * from 成绩表 group by 班级 order by 成绩 having limit 3
    having 会和group by 共同使用

约束

主键约束: 主键 = 唯一 + not null

primary key

自增: auto_increment
create table food(id int primary key auto_increment,name varchar(20),price float)

非空约束:

not null

create table qq(id int primary key auto_increment,nick_name varchar(16) not null,password varchar(64) not null,qq_no varchar(10) not null);

默认值约束:

default

create table book(id int primary key auto_increment,bname varchar(30) not null, publisher varchar(50) default ‘默认值’);

insert into book(bname,publisher) values (‘daomubijia’,null)

select * from book;

insert into book(bname,publisher) values(‘daomubiji’,default);

唯一约束:

unique 保证数据的唯一性
但是允许null

create table user(id int primary key auto_increment,username varchar(16) unique,password varchar(64) not null,phone char(11) unique not null);

检查约束:mysql ----》 不支持 check

create table user(id int primary key auto_increment,username varchar(16) unique,password varchar(64) not null,phone char(11) unique,gender enum(‘男’,‘女’));

外键约束:foreign key

一张表可以有多个外键,只能有一个主键(id,username+phone)

username phone
admin 18900001111
admin 18900001112

DDL 数据定义语言

alter 修改表结构:

  1. 添加字段:
    alter table 表名 add [column] 字段名 数据类型 [约束];

  2. 删除字段:
    alter table 表名 drop [column] 字段名;

  3. 修改字段的名称和类型
    alter table 表名 change 旧字段名 新字段名 数据类型 [约束];

  4. 修改字段的类型
    alter table 表名 modify 字段名 新的数据类型 [约束];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只敲代码的大脸猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值