MySQL基本操作(一)

MySQL基本操作(一)

  • 粗略总结中……

基本操作

  • 所有的语句要用分号结尾。
  • discribe tablename; – 显示表中所有的信息
  • – 是单行注释
  • MySQL的关键字不区分大小写

数据库操作

  • dbe 为示例数据库

  • 创建数据库

    create database if not exists dbe
    
  • 删除数据库

     drop database if not exists dbe
    
  • 使用数据库

    use `dbe` -- 如果表名或者字段名是一个特殊的字符就需要带``,关键字什么的
    
  • 查看数据库

    show westos  show databases -- 查看所有的数据库
    

数据库的列类型

数值

tinyint1
small int2
mediumint3
int4
bigint8
float4
double8
decimal字符串浮点数,用于金融计算

字符串

char固定大小的字符串 0~255
varchar可变字符串
tinytext微型文本
text文本串

时间日期

java.until.date

dateYYYY-MM-DD
timeHH: mm: ss
datetimeYYYY-MM-DD HH: mm: ss
timestamp时间戳 19701.1到现在的毫秒数
year年份显示

null

  • 没有值,未知

  • 注意不能用null进行运算,其结果一定为null

数据库的字段属性

unsigned

  • 无符号的整数
  • 声明之后该列不能为负数

zerofill

  • 零填充
  • 不足的位数,自动使用0来填充。例如:int(3),5 – 005

自增

  • 自动在上一条的记录上+1(默认情况)
  • 通常用来设计唯一的逐渐~index,必须是整型

not NULL

  • 字面理解

default

  • 设置默认值,如果不指定该列的值会指定默认值 例如:sex 默认为男

每个表所必需的五个字段:

  • id 主键
  • version 乐观锁
  • is_delete 伪删除
  • gmt_create 创建时间
  • gmt_update 修改时间

DDL

创建数据库表

注意:

  • 使用英文的(),表的名称和字段尽量用 `` 包裹起来

  • comment 意为注释

  • 建表时,每一行语句后面要加 " , ",最后一句可以省略

	create table if not exists `user_information`(
    	`id` int not null auto_incement comment `学号`,
        `name` varchar(20) not null default `miao` comment `密码`,
        `sex` varchar(2) not null default `女` comment `性别`
        -- …………
    
    )
create table [if not exists] `table_name`(
	`字段名` 列类型 【属性】【索引】【注释】.
	…………



查看创建数据库的语句和创建表的语句

show create database/table `table/database_name`

查看表的结构

DESC database_name`

数据表的类型

数据库引擎

INNODB 默认使用

MYISAM 早些年使用的
MYISAMINNODB
事务支持NY
数据行锁定NY
外键约束NY
全文索引YN
表空间大小较小二倍

常用规则:

  • MYISAM节约空间,速度较快
  • INNODB安全性高,事物处理和多表多用户操作

在物理空间的位置

目前未知。。。

设置字符集编码

charset=utf8 -- 写在建数据库或者建表语句括号之后

修改和删除表

修改表

alter table tablee_name rename as new_table_name  -- 修改表名
alter table tablee_name add fiel_dname datatype -- 添加字段
alter table tablee_name modify field_dname datatype -- 像一次重新定义,修改约束
alter table tablee_name change new_field_dname datatype -- 修改字段名(重命名)
alter table tablee_name drop field_name -- 删除表的字段
drop table if exists tablee_name -- 删除表 

MySQL数据管理

外键

  • 数据库级别的外键不建议使用,会造成一些困扰,避免使用外键
  • 数据库就是单纯的表,只用来存储数据,只有行列,行代表数据、列代表字段
  • 外键用程序级别去实现
  • 不得使用外键与级联,一切外键必须在应用层面解决

DML

  • 数据库存在的意义:数据存储,数据管理
  • DML,数据操作语言
  • insert
  • update
  • delete

添加(insert)

insert into tablename ({ field1,field2...})values("value1"),("value2") # 所示是一次插入多行,对同一行的操作妨碍一个括号里面。如果不写表的字段他就会一一匹配

修改(update)

update tablename set colnum = value where condition
  • colnum_name 是数据库的列,要尽量带上``,对于所有涉及到表明和列名的都建议带上
  • 注意删选的条件,如果不带条件会修改所有的列
  • value,是一个具体的值,也可以是一个变量(常用于时间)
  • 多个设置的属性之间使用英文的逗号隔开
操作符含义
===
<> or !=!=
>>
<<
<=<=
>=<=
between…and…>=&&<=
and&&
or||

删除

  • delete
delete from table_name where condition # 注意where,别删库跑路了
  • truncate

    完全亲空一个数据库表,表的结构和索引不会变

    计数器归零,重新设置自增列,不会影响事物

DQL

  • DQL 数据库查询语言

select

select * from table_name # 查询所有数据
select fieldname1,fieldname2 from table_name # 查询指定字段
select fieldname1 as nickname ,fieldname2 as nickname from table_name as table_nickname # 使用别名 
select concat('name:',fieldname1) from table_name # 在对应结果前面加一个字符串 name:zhangsan

  • 当列名不能见名知意的时候注意使用as

去重

select distinct * from tablename # 去除结果中所有的重复数据

数据库的表达式

select version() # 查询系统的版本
select 100*3-21 as result # 用于计算
select result+1 from result # 结果+1显示
# 不多BB

where

  • 检索结果中符合条件的值

模糊查询

  • 本质是一些比较运算符和通配符
运算符含义
is null是空不?
is not null非空不?
between……and……不解释
like用于匹配
a in (b,c,d)不解释
%不限个数个字符
_单个字符
  • 所有的非空判断要用is null or is not null,不能用“=”

联表查询

  select t1.field1,field2 from table1 as t1 inner join table2 as t2
  where t1.field1 = t2.field1 -- 对于重复字段field1,用别名加以区分
  select t1.field1,field2 from table1 as t1 
	right join table2 as t2
  where t1.field1 = t2.field1
  select t1.field1,field2 from table1 as t1 
  left join table2 as t2
  where t1.field1 = t2.field1

自连接

  • 自己的表和自己的表连接,核心: 一张表拆为两张一样的表即可
  • 类似于用表表示树的结构,用于寻找父类或子类
select t1.field1,t2.field2 from table as t1 , table as t2
  where t1.field1 = t2.field1

分页和排序

  • 升序 ASC,降序DESC
order by field DESC
order by field ASC
  • 分页
limt 0,5 -- 参数分别为起始条数(从0开始)和页面大小。起始值(第n页) = (n-1)*size 

条件书写顺序

  • 联合查询
  • where
  • 分组
  • 过滤
  • 排序
  • 分页

子查询

  • 在where语句中嵌套一个查询语句,实现类似联表查询的效果。相当于列大方程,将一个查询的结果集当作变量进行条件判断

函数

  • ABS( )
  • celing( ) 上取整
  • floor( ) 下取整
  • rand( ) 随机数0~1
  • sign( ) 返回符号 0是0,负数-1,正数1
  • char_length( ) 返回字符串长度
  • concat( a , b,c ) 粘贴字符串
  • insert(s1,1,2,s2 ) 查询,替换,从某位置开始,替换某个长度
  • replace(s,s1,s2) 替换指定的字符串
  • sunstr(s1,star,size ) 截取字符串
  • current_date() 获取当前日期2021-1-30
  • now() 2020-1-30 16:40:53

聚合函数

  • 完成各种统计及操作
  • count( * ) 也可以放个指定列,都行吧,看操作 多少条记录
  • sum( ) 求和
  • AVG( ) 平均分
  • MAX( ) 最高分
  • min( ) 最低分

分组

group by field

分组之后where失效,用having替代where,况且where应该在group by 之前

不用组函数的分组是没有意义的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值