数据库的概念:存储数据的容器
表的概念:真正的存储单元
数据库与表的关系:一对多的关系,一个库里通常维护了多个表。
Sql概念:
Sql:结构化查询语言,用户访问和处理数据库的标准计算机语言
作用:创建数据库、表等数据库对象;数据库记录的增删改查
创建数据库
Create database数据库名,例如:create database test;
创建表
Create table表明(字段名1 类型1,...字段名n 类型n) default charset-utf8;
常见字段类型:
整型:
Tinyint:占1个字节,取值范围为-128~127
Int:占4个字节,-2147483648~2147483647
字符串型:
Char(n):n个字符,最多255个字符,固定长度
Varchar(n):可变长度,最多65535个字符
时间和日期:
Date:日期,格式(yyyy-mm-dd)
Time:时间,格式(hh:mm:ss)
Datetime:日期时间,格式(yyyy-mm-dd hh:mm:ss)
浮点型:
Float(m,d):单精度浮点型,32bit,m代表总位数,d小数位
Double(m,d):双精度浮点型,64bit,m代表总位数,d代表小数位
Decimal(m,d):m代表总位数,d代表小数位,decimal数据类型用于精度要求非常高的计算中
主键:
主键字段存储的值不能重复,因此主键课唯一标识一行数据
一个表只能有一个主键
主键是非必需的
语法:
字段名类型primary key;
主键:primary key
自动增长:auto_increment
非空:not null
备注:comment
插入数据
Insert into表名 values(值A,值B,...值F);
列如:
Insert into member values(1,`123456`,3);
插入一条数据,且只对一部分字段赋值
Insert into表名 (字段A,字段B,字段C) values (值A,值B,值C);
例如:
Insert into member(regname,pwd,tpye) values (`annia`,`123456`,1);
注释快键键:Ctrl+/
取消注释快键键:shift+Ctrl+/
修改表数据
Update表名 set 字段名1=新值1,字段名2=新值2...;
例如:
Update member set name=’张三’;
修改一个表里满足某些条件的那一部分数据:
Update表名 set 字段名1=新值1...where 条件表达式1 and(or)条件表达式2
例如:
Update member set name=’张三’ where id =16;
删除数据库
Drop database数据库名;
例如:
Drop database lemo60;
删除数据表
Drop table表名;
例如:
Drop table member;
删除表里的所有数据
Delete from表名;
例如:
Delete from member;
删除一个表里满足条件的数据
delete from表名 where 条件1 and(or)条件2...;
例如:
Delete from member where id=16;
多表查询
Select要查询的字段 from 表1,表2...where 关联条件和过滤条件
对查询结果进行排序:
Select ... from ... order by字段A asc(desc);
Select ... from ... order by字段A asc(desc),字段B asc(desc)...;
Asc:升序
Desc:降序
掌握in的用法:
Select ... from表名 where 条件字段 in (数据集)
Eg:select * from member where id in(1001,1002,1003);
Not in:条件字段的值不存在于某个数据集
Eg:
Select * from member where id not in(1002,1003);查询id不为1002,1003的用户
查询以任意字符开头,以k结尾 的值
Select字段1,字段2...from 表名 where 条件字段 like ‘%xx’;
Select * from member where regname like’%k’;
查询以n开头,以任意字符结尾的值
Select字段1,字段2...from 表名 where 条件字段 like ‘xx%’;
Select * from member where regname like ‘n%’;
查询包含k的值
Select字段1,字段2...from 表名 where 条件字段 like ‘%xx%’;
Select * from member where regname like ‘%k%’;
分组
Select查询字段,聚合函数 from 查询涉及到的表 group by 分组字段 having 过滤条件;
常见聚合函数:
Sum(),count(),avg(),min(),max()
Eg:
Select loanid,count() from invest group by loanid;
Between:条件字段的取值处于2个数据范围内的情况
Select ... from表名 where 条件字段 between 数值A and 数值B;
Eg:
Select * from member leaveamount between 100000 and 400000;
去重
Select distinct memberid from member;
分页:
Select ... from表名 limit m,n;
M:指索引值从m开始,n表示每页要取多少条
获取系统当前日期时间:sysdate();
获取系统当前日期:curdate();
获取系统当前时间:curtime();
获取给定日期的年份:year(date)
获取给定日期的月份:month(date)
为指定日期增加一个时间间隔的函数:date_add(date,interval expr unit
Select date_add (curdate(),interval 1 day);
字符串函数:
拼接函数:concat(字段A,字段B)
Select concat(id,regname,pwd) from member;
截取函数:substr(字段A,截取开始的位置,截取字符个数)
Select substr(regname,3,2) from member;
获取字符串长度的函数:length(字段A)
Select length(regname) from member;
子查询
可以把一条sql语句的结果作为一张新表的数据
Select * from(
Select * from member where id<5
)as newtable;
网友评论