数据库SQL语句

常用数据类型

数据类型用法、含义
整数int、bit
小数decimal表示浮点数,如decimal(5,2)表示共存5位数,小数占2位
字符串char、varchar、text;如char(3),如果填充’ab’时会补一个空格为’ab ‘;varchar表示可变长度的字符串,如varchar(3),填充’ab’就会储存’ab’;字符串text表示储存大文本,当字符大于4000时推荐使用
日期时间date, time, datetime; date:YYYY-MM-DD;time:HH:mm:ss;datetime:YYYY-MM-DD HH:mm:ss
枚举类型enum; enum(“男”,“女”);
大文件储存对于图片、音频、视频等文件,不储存在数据库中,而是上传到某个服务器上,然后再表中储存这个文件的保存路径

数据库表格约束

主键primary key物理上储存的顺序
非空 not null此字段不允许填写空值
唯一 unique此字段的值不允许重复
默认default当不填写此值的时候会使用默认值,如果填写时已填写的值为准
外键 foreign key对关系字段进行约束,当为关系字段填写时,回到关联的表中查询此值是否存在,如果存在则填写成功,否则则填写失败并抛出异常。说明:虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增、删、改、查)时,都会降低数据库的性能,所以不推荐使用。那么数据的有效性可以在逻辑层进行控制

SQL语句

在SQL语句中,不区分字母大小写,且在数据库中每条语句都要以“;”结束

创建数据库create database databaseName (此时默认编码为 拉丁编码)
create database databaseName charset = utf8 (此时编码为utf-8)
查看数据库列表show databases
显示当前时间select now()
显示数据库版本select version()
查看创建数据库的内容show create database databaseName
删除数据库drop database databaseName
使用数据库use databaseName
查看当前数据库select database()
查看当前数据库中所有的数据表show tables
创建数据表create table tableName 如示例一
查看数据表的结构desc tableName
删除表drop table tableName
修改表属性alter table tableName + 其他
修改表-添加字段 columnalter table tableName columnName + 类型 约束
修改表-修改字段(重命名)alter table tableName change old_tableName new_tableName columnName + 新类型 约束
修改表-修改字段(不重命名)alter table tableName modify columnName + 新类型 约束
修改表-删除字段alter table tableName drop culomnName
添加外键alter table tableName add foreign key( tableName2_id) referfences tableName2 (id)
表中数据增删改查(CURD)
向表中插入数据insert into tableName values() – 需要将所有字段全部填写
insert into tableName (columnName1, columnName ) values (columnName1_value1, columnName2_valuse2)
修改表中的数据update tableName set columnName = “new_columnNameValue” (where * _columnName* = * _vlaue*) --()为限制条件
查看表中数据select * from tableName where 限制条件
物理删除delete from tableName where columnName = columnNameValue
逻辑删除alter table tableName add is_delete bit default 0; – 在加上一个字段代表是否删除(0未删除,1已删除)
数据表去重distinct
模糊查询 关键字like%代替0+个字符; _ 代替一个字符
模糊查询关键字rlike这个使用的是正则表达式
范围查询 关键字inselect * from tableName where columnName2 in (a,b,c);
select columnName from tableName where columnName2 not in (a,b,c);
范围查询 关键字between …and…select * from tableName where columnName2 between m and n;
select * from tableName where columnName2 not between m and n;
从小到大排序 asc (默认为这个)select from tableName order by columnName asc
从大到小排序 descselect * from tableName order by columnName desc
columnName1Value相同,则比较第二行select * from tableName order by columnName1, columnName2

聚合函数

count 统计满足条件的个数select count( * ) from tableName where columnName = columnNameValue
max 取出满足条件的最大值select count( columnName1 ) from tableName where columnName2 = columnName2Value
min 取出满足条件的最小值
sum 计算满足条件的值的总和
avg 计算满足条件值的平均值
round(m,n) 其中m位数字,n为m的小数部分的保留位数
group by分组select columnName from tableName group by columnName
分组中不和聚合函数将毫无意义select columnName1 , count(columName2) from tableName group by columnName1

条件筛选 having 和 where

havingwhere
是对select出来的结果进行筛选是对原表格进行筛选
select columnName1, group_concat(columnName2), agv(columnName3) from tableName having avg(columnName) < columnName

分页

limit m输出符合条件的前m个数据,若不到m个数据则全部输出
limit m, n输出符合条件的第(m+1)个数据到(m+n+1)个数据

链接查询

inner join … on 内链接(取交集)select * form tableName1 inner join tableName2 on tableName1.tableName2_id = tableName2.id
left join … on 左链接(将左边的表全取出来,右边表的属性没有则显示为null)select * form tableName1 left join tableName2 on tableName1.tableName2_id = tableName2.id
right join … on 右链接(将右边的表全取出来,左边表的属性没有则显示为null)select * form tableName1 right join tableName2 on tableName1.tableName2_id = tableName2.id
--   示例一
create table students(
    id int unsigned primary key not null auto_increment, 
    name varchar(30),
    age  tinyint unsigned default 0, 
    gender enum("男", "女", "保密") defalut "保密",
    high decimal(5, 2)
);

在设计数据库时要看58到家数据库30条军规

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值