SQL语言基础
一、SQL语言介绍
SQL介绍
- SQL是结构化查询语言,是一种永凯操作RDBMS(关系型数据库管理系统)的数据库语言,当前关系型数据库都支持试用SQL语言进行操作,也就是说可以通过SQL操作oracle、sql server、mysql等关系型数据库
- 注意:对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径
SQL语言主要分类
- DDL语言:数据定义语言,这些语句创建不同数据段、数据库、表、列、索引等数据库对象
- DML语句:数据操作语句,用于添加、删除、更新和查询数据库记录毛病检查数据完整性。DBA来做增、查、更新 。删的话不一定会给权限,DDL 与 DML语句是重要的两部分,DML最重要
- DCL语句:数据控制语句,用于控制不同数据段直接许可和访问级别的语句
二、SQL数据存储的相关知识
数据完整性:
- 在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束
数据字段的类型
- 无符号范围:用于正数位数范围大(两倍),正数,unsigned
- 够用就好
- 浮点数的size 要大于等于d,因为size是总的位数,包含小数位数在内的
整数类型 | 有符号范围 | 无符号范围 |
---|---|---|
TYNYINT(size) | -128~127 | 0~255 |
SMALLINT(size) | -32768~32767 | 0~65535 |
MEDIUMINT(size) | -8388608~8388607 | 0~16777215 |
INT(size) | -2147483648~2147483647 默认11位 | 0~4294967295 |
BIGINT(size) | -9223372036854775808~9223372036854775807 | 0~18446744073709551615 |
小数类型 | 描述 |
---|---|
FLOAT(size,d) | 近似取值,size最大位数,d小数点的最大位数 ,不满足的小数会四舍五入,不指定的话就几位小数就保存几位 |
DOUBLE(size,d) | 近似取值,比FLOAT范围更大,size最大位数,d小数点的最大位数 ,不满足的小数会四舍五入,不指定的话就几位小数就保存几位 |
DECIMAL(size,d) | 常用,精确取值,与其他的区别就是有默认值,默认DECIMAL(10,0)。size最大位数,d小数点的最大位数 ,不满足的小数会四舍五入,作为字符串存储的 DOUBLE(size,d) |
日期时间类型 | 描述 |
---|---|
DATE() | 日期。格式:YYYY-MM-DD 支持的范围:‘1000-01-01’ ~ ‘9999-12-31’ |
DATETIME() | 日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS 支持的范围:‘1000-01-01 00:00:00’ ~ ‘9999-12-31 23:59:59’ |
TIME() | 时间。格式:HH:MM:SS 支持的范围:‘ -838:59:59’ ~ ‘838:59:59’ |
YEAR() | 2位或4位格式的年。4位格式:1901~ 2155 2位格式:70 ~ 69表示1970~2069 |
TIMESTAMP() | 时间戳。格式:YYYY-MM-DD HH:MM:SS 支持的范围:‘1970-01-01 00:00:01’ UTC~ ‘2038-01-09 03:14:07’UTC |
字符串类型 | 描述 | 示例 |
---|---|---|
CHAR(size) | 0~ 255 长度规定不变,小于的会用空格填充,大的话会缩短,在数据库设计中,如果字段长度大体能够确定,建议用char,因为Varchar类型在数据库查询中效率不如char类型高 | char(3)输入‘ab’,实际存储的是‘ab ’ ,输入‘abcd’,实际存储‘abc’ |
VARCHAR(size) | 0~65535 小于就是小的,大的话会缩短 | varchar(3)输入‘ab’,实际存储的是‘ab’ ,输入‘abcd’,实际存储‘abc’ |
枚举类型 |
---|
英文ENUM,就是类似虚拟变量,将字符串的变量变成可以操作的数值,从1开始,例如性别m= 1,f =2, |
数据字段的约束
- 主键primary key: 物理上存储的顺序,alter改变该字段的时候 primary key不能重写
- 非空not null:此字段不允许填写空值
- 唯一unique:此字段的值不允许重复(身份证号、银行卡号等)
- 默认default:当不填写此值时会使用默认值,如果填写时以填写为准
- 外键foreign key:对关系字段进行约束,当为关系字段填写值时,会关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
其他信息
- 列:字段
- 行:记录
- 每一个sql语句都必须以;结尾,不严格区分大小写
- 如果名称包含下划线等特殊字符的话,加` 名称 `
- 字段自增:字段名 auto_increment 加了这个就必须定义成key