SQL语句分类:
1. 数据定义语言:DDL(data definition language),用来定义数据库对象:数据库,表,列等.关键字:create,alter,drop等(了解).
1.1 数据库:
1).创建数据库格式:
creata database 数据库名;
create database 数据库名 charcter set 字符集;
2).查看数据库:
show databases; -- 查看所有数据库
show create database 数据库名; -- 查看某个数据库
3).删除数据库:
drop database 数据库名;
4).切换数据库:
use 数据库名;
5).查看正在使用的数据库:
select database();
1.2 表:
1).创建表格式:
create table 表名(字段名 类型(长度) 约束,...);
主键约束:用于标识当前记录的字段.非空唯一.在字段后加primary key;
create table 表名(字段名 类型 primary key,...);
2).删除主键:
alter table 表名 drop primary key;
3).主键自动增长:一般主键是自增长的字段,不需要指定。
实现添加自增长语句,主键字段后加auto_increment(只适用MySQL)
2. 数据操作语言:DML(data Manipulation language),用来对数据库表中的记录进行更新.关键字:insert into, delete, update等(掌握).
2.1 插入表记录:
insert into 表 (列名1,列名2...) values (值1,值2...);
insert into 表 values (值1,值2...); -- 当添加所有字段时
注意:
插入的数据应与字段的数据类型相同
数据的大小应该在列的长度范围内
数据位置必须与被加入列的排列位置相对应。
除了数值类型外,其它的字段类型的值必须使用引号引起。
如果要插入空值,可以不写字段,或者插入 null。
对于自动增长的列在操作时,直接插入null值即可。
2.2 修改表记录:
update 表名 set 字段名 = 值,字段名 = 值,...;
update 表名 set 字段名 = 值,... where 条件;
注意:
列名的类型与修改的值要一致.
修改值得时候不能超过最大长度.
值如果是字符串或者日期需要加’’.
2.3 删除记录:
delete from 表名 [where 条件];
delete table 表名;
面试题:
删除表中所有记录使用delete from 表名; 还是用truncate table 表名;
删除方式:
delete 一条一条删除,不清空auto_increment记录数。
truncate 直接将表删除,重新建表,auto_increment将置为零,从新开始。
3. 数据控制语言:DCL(Data control language),用来定义数据的访问权限和安全级别.及创建用户(了解).
4. 数据查询语言:DQL(Data COntrol language),用来查询数据库中表的记录.关键字:select, from ,where , haveing等(掌握).
4.1 查询指定字段信息:
select 字段1,字段2... from 表名;
查询所有字段:
select * from 表名;
注意:
使用"*"在练习学习过程中可以使用,在实际开发中,不推荐使用.原因,要查询的字段信息不明确,若字段数量很多,会导致查询速度很慢。
4.2 distinct 用于出去重复记录:
select distinct 字段 from 表名;
4.3 别名查询:
select * from 表名 as 别名;或select * from 表名 别名;
select 字段名 as 别名,... from 表名; as也可省略;
4.4 在SQL语句操作中可以对列运算在现实
select pname,price+10000 from prod;
4.5 条件查询:select 字段 from where 条件;
例:
/*查询金额大于1000元的记录*/
SELECT * FROM zhangwu WHERE money > 1000;
/*name不等于吃饭支出(不包含null值)*/
SELECT * FROM zhangwu WHERE NAME <> '吃饭支出';
/*支出等于:打麻将支出*/
SELECT * FROM zhangwu WHERE NAME = '打麻将支出';
/*查询所有金额在1000 -- 8000之间的所有数据*/
SELECT * FROM zhangwu WHERE money BETWEEN 1000 AND 8000;-- 经常用于金额、日期的查询;
/*查询id = 1,3,4,7*/
SELECT * FROM zhangwu WHERE id = 1 OR id = 3 OR id = 4 OR id = 7;
SELECT * FROM zhangwu WHERE id IN(1,3,4,7);
/*查询name中包含:麻将字样的记录。通配符:%:通配0个或多个字符;_通配一个字符*/
SELECT * FROM zhangwu WHERE NAME LIKE '%饭%';
/*查询name为null的记录*/
SELECT * FROM zhangwu WHERE NAME IS NULL;
/*查询name为吃饭支出的,money大于1000元的记录*/
SELECT * FROM zhangwu WHERE NAME = '吃饭支出' AND money > 1000;
/*查询name为吃饭支出的,或者money 大于1000元的记录*/
SELECT * FROM zhangwu WHERE NAME = '吃饭支出' OR money > 1000;
/*查询money 不是1000元的*/
SELECT * FROM zhangwu WHERE money <> 1000;
SELECT * FROM zhangwu WHERE NOT money = 1000;
|
|