SQL基础教程一、SQL简介
A:SQL指结构化查询语句 B:SQL使我们有能力访问数据库 C:SQL是一种ANSI(美国国家标准化组织)的标准计算机语言
*面向数据库执行查询 *从数据库中取出数据 *向数据库插入新的记录
*更新数据库中数据 *从数据库删除记录 *创建数据库 *创建表
*创建存储过程 *创建视图 *设置表、存储过程和视图的权限
RDBMS是指关系型数据库管理系统
RDBMS是SQL的基础,同样也是所有现代数据库系统的基础,如MS SQL Server、IBM DB2、Oracle、MySQL以及Microsoft Access
RDBMS中的数据存储在被称为表的数据库对象中
表是相关的数据项的集合,他由列和行组成。
注意:SQL对大小写不敏感!!!
1:SQL语句后面的分号
某些数据库系统要求在每条SQL命令的末端使用分号。
分号是在数据库系统中分隔每条SQL语句的标准方法,这样就可以在服务器的相同请求中执行一条以上的语句。
如果使用的是MS Access和SQL Server 2000,则不必在每条SQL语句之后使用分号,不过某些数据库要求必须使用分号。
2:SQL DML和DDL
可以把SQL分为两个部分:数据操作语言(DML)和数据库定义语言(DDL)
SQL(结构化查询语句)适用于执行查询的语法。但是SQL语言也包含用于更新、插入和删除记录的语法。查询和更新构成了SQL的DML部分:select、update、delete、insert into 。 数据库定义语言(DDL)部分使我们有能力创建或删除表格,我们也可以定义索引(键),规定表之间的连接,以及事假表间的约束:
Create database、alert database、create table、alert table、drop table、create index、drop index
User表里面的数据如下
查询user表里面的user_name字段和user_age字段的所有数据
Select user_name,user_age from user
查询user表中所有的字段数据,用 * 表示列的名称
Select * from user
Distinct选取所有的值的时候不会出现重复的数据
用普通的查询,查询所有
Select * from user
Select distinct user_name,user_age from user
注意:不能有user_id,因为两个Mary的user_id不一样,加上就不算相同数据
1:查询user_id等于1 的数据
Select * from user where user_id = 1
2:查询user_age大于等于12的数据
Select * from user where user_age >=12
3:查询user_age不等于12的数据
Select * from user where user_age <> 12
And和or在where子语句中把两个或多个条件结合起来。如果需要两个条件都成立就是用and如果只需要其中一个条件成立就使用or
Select * from user where user_name = ‘mary’ and user_age = 12
需要注意的是SQL使用单引号来环绕文本值,如果是数值则不需要引号
Select * from user where user_name=’mary’ or user_age =13
结合and和or使用圆括号来组成复杂的表达式
Select * from user where (user_name = ‘mary’ and user_age = 12) or(user_age =13)
1:对指定列进行升序排列
Select * from user order by user_name
2:按照user_id逆序排列
Select * from user order by user_id DESC
2:按照升序排列user_id逆序排列user_age
SELECT * FROM user order by user_id ASC,user_age DESC
3:按照升序排列user_id逆序排列user_age
SELECT * FROM user order by user_age DESC,user_id ASC
注意:前面的条件优先级更高!!
插入一行数据 user_id为2 user_name为tom,user_age为12
注意:如果每一项都有插入的话就不需要在前面列出列名!!
Insert into user values(2,’tom’,12)
新插入一行数据,只要求user_name为eva
Insert into user(user_name) values(‘eva’)
注意:因为ID设置为自增,所以user_id不为null
修改user_id为6的数据user_age为14
Update user set user_age=14 where user_id=6
修改user_id为1的数据user_name为ann,user_age为11
Update user set user_name=’ann’,user_age=11 where user_id=1
User表中的所有数据信息如下
删除user_age为12的数据
Delete from user where user_age=12
Delete from user
第二章 SQL高级教程
Top子句用于返回要返回的记录的数目,但并不是所有的数据库都支持top子句
1:SQL Server
Select top 5 * from user
Select * from user limit 5
Select * from user where ROWNUM <= 5
User表的初始数据如下
1:找出以li开头的数据
Select * from user where user_name like ‘li%’
2:找出以ry结尾的数据
Select * from user where user_name like ‘%ry’
Select * from user where user_name like ‘%a%’
4:找出第二个字母是a第四个字母是y的数据
Select * from user where user_name like ‘_a_y’
在搜索数据库中的数据的时候SQL通配符可以替代一个或多个字符。SQL通配符必须与like运算符一起使用
1: _ 替代一个字符
找出第二个字母是a第四个字母是y的数据
Select * from user where user_name like ‘_a_y’
2: % 替代一个或多个字符
Select * from user where user_name like ‘%ry’
3: 字符列中的任意一个单字符
找出以a或者l开头的数据
Select * from user where user_name like ‘[al]%’
找出不是a或者l开头的数据
Select * from user where user_name like ‘[!al]%’
只要数据满足in里面的一个条件就可以了
找到user_age是12或者13的数据
Select * from user where user_age in (12,13)
找到user_name是Harry和Mary的数据
Select * from user where user_name IN (‘mary’,’harry’)
查询年龄在12和14之间的数据
Select * from user where user_age between 12 and 14
查询字母在Alice和John之间的数据
Select * from user where user_name between ‘alice’ AND’john’
假设我们有两个表分别是user和Room 。我们分别指定他们为u和r。
Select room.room_name,user.user_name,user.user_age from user ,room Where user.user_age=12 and room.room_id = 1