接下来的几天会做一个sql语句的合集,从基本概念、用法到标准规范等等,今天主要讲sql的基础。
1.SQL语言分类
DDL (Data Definition Language)数据定义语句
创建数据库、创建二维表、修改二维表等。例如:create, alter, drop, truncate, rename。一般要先用DDL(create)创建二维表的列,才能使用后续其它类别的语句
DML (DATA MANIPULATION LANGUAGE)数据操纵语句
例如:insert,向已建二维表中插入行记录,update,修改行记录,delete删除行记录,应用非常广泛,银行刷卡,打电话等交易型数据均以DML语句的形式存在
DQL (Data Query Language)数据查询语句
SELECT语句,从数据库的二维表中查找数据。应用非常广泛,但前提是先用DML(insert)语句,向已建二维表中插入行记录,才能用select查找
DCL (DATA CONTROL LANGUAGE)数据控制语句
例如:grant, revoke,一般数据库为多用户系统,不同用户的权限不一样,可以访问的数据不一样,可以用DCL语句为给用户赋予或收回数据库的各类权限
TCL (TRANSACTION CONTROL LANGUAGE)事务控制语句
例如:commit; rollback; savepoint,只有支持事务的数据库管理系统或存储引擎TCL语句才能有效
2.MySQL数据类型
1.四种主要数据类型
数值
例如:身高、体重、工资、销量、房屋面积等数据,适用于数值类型存储* 字符
例如:姓名、公司名称、地址、商品描述、简历等数据,适用于字符类型存储
时间
例如:生日、订单日期、登录时间等数据,适用于时间类型存储
二进制
例如:照片、文件扫描件、音频、视频等数据,适用于二进制类型存储
2.常用数值数据类型
整数
int, 如:sno int, 学号为整数数字
int(N), 如:sno int(4),括号中的数字4为显示宽度和取值范围无关,如果学号为1,显示该学号时前面会补充3个空格,如果学号为99999,不影响存储,同样可以显示出来
小数
decimal(M,N),M代表总共的位数,N代表的是小数的位数,如:score decimal(4,1),表示score这列存储分数,一共有4位,其中小数部分占1位
3.常用字符数据类型
定长字符
char(N),如: sex char(6),存储性别占6位字符,如果只存储了一个字符‘男’,右边会填充5个空格,保证一共6个字符,但是最多只能存储6个字符
处理查询速度快,但是浪费存储空间
对于长度固定确经常作为查询条件的列,可以考虑使用char类型,例如:18位身份证号码
变长字符
varchar(N),如:sname varchar(20),存储学生姓名最多可以20个字符,不足20个字符不会填充空格,相对char类型节约存储空间
4.常用时间数据类型
date
用于仅仅需要存储日期数值时,不包括时间(时,分,秒)信息
默认格式:‘YYYY-MM-DD’, YYYY表示年,MM表示月,DD表示日
例如:birth date,存储学生的生日信息
datetime
用于即需要存储日期也需要存储时间信息时
默认格式:‘YYYY-MM-DD HH:MM:SS’, YYYY表示年,MM表示月,DD表示日,HH表示小时,MM表示分钟,SS表示秒
例如:login_time datetime,存储登录业务系统的日期和时间
5.数据类型选择要素
适当 (Appropriate) 需要以最适合数据类型来表示数据
例如:存储日期应当选择日期类型,而不要选择字符串类型。如果选择字符串类型存储,当需要日期计算的时候,需要用相关函数进行转换,记录数多的时候会浪费额外的系统资源
简洁 (Brief) 选择所用存储空间最少的数据类型。这可节省资源并提高性能
例如:存储学生姓名,应该选择varchar类型,而不要选择char类型,以节约存储空间
完整 (Complete) 选择的数据类型应分配有可存储特定项的最大可能值的充足空间
例如:存储地址信息时,使用varchar(N)来存储,N值给太小了,当地址字符串过长时会出现不能存储的情况,应当考虑最大的地址长度,给一个合适的值。
3.SQL语法
数据库表
一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据的记录(行)。
下面的例子是一个名为 “Persons” 的表:
上面的表包含三条记录(每一条对应一个人)和五个列(Id、姓、名、地址和城市)。
SQL 语句
需要在数据库上执行的大部分工作都由 SQL 语句完成。
下面的语句从表中选取 LastName 列的数据:
SELECT LastName FROM Persons
结果集类似这样:
重要事项
一定要记住,SQL 对大小写不敏感!
SQL 语句后面的分号
某些数据库系统要求在每条 SQL 命令的末端使用分号。
分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的语句。
如果使用的是 MS Access 和 SQL Server 2000,则不必在每条 SQL 语句之后使用分号,不过某些数据库软件要求必须使用分号。