SQL :结构化查询语言。 (数据库不区分大小写)
MYSQ 基本命令
1:数据定义语言(DDL)(create,drop,alter)
创建数据库,
CREATE DATABASE 数据库名
删除数据库:
DROP DATABASE 数据库名
创建表:
CREATE TABLE 表名
create table teacher (
sid int (11) primary key auto_increment,
name varchar (20) not null ,
gender char (1),
age int (2),
birth date);
删除表: drop table 表名
Drop语的句会删除表的结构内容慎用!!!
修改表结构:
添加表列 (alter table 语句):
给表添加新表列
alter table teacher add column course varchar (20);
修改表名:
alter table teacher add column course varchar (20);
删出一列:
alter table teacher_tab drop column birth;
修改某一列的类型:
(将varchar属性改大一点 但列名不能改)
alter table teacher_tab modify course varchar (50);
查询表结构:
Desc 表名。
2:数据操纵语言(DML)
添加数据
Insert into ...语句。
Insert into 表名 (字段1, 字段2.。。。) values (值, 值, 值。。。)
insert into teacher_tab (name,gender,age,course,create_data )values('威哥
','男',27,'android讲师',now());
2:修改数据
Update 表名 字段名= ‘值’。。。。Where字段名= ‘值’
(修改是where条件最好为id)
update teacher_tab set age = 26 where id =1;
3:删出数据:
Delete from 表名:// 删除表的 所有的数据
delete from teacher_tab where id =1;
3:数据查询语言(DRL)
对于查询语句中的* (统配符)如果是用其查询的话会增加后台数据库的负担,其会将表的所有列表项解析出来,会降低数据库的效率,使用的时候应该避免使用统配符。
2:查询已有表中course为空的老师信息:
select *from teacher_tab where course is null ;
3:查询老师信息按日期降序排列 (默认为asc,可以匹配多个条件用逗号隔开 ):
select *from teacher_tab order by create_data desc;
4:按性别分组查询男女老师的人数:
select gender , count(gender)from teacher_tab group by gender;
5:按性别分组查询出女老师的人数:
在group中增加查询条件要使用having 语句 (专门为分组时提供的语句)。
select gender,count(gender)from teacher_tab group by gender
having gender = '女';
上语句虽然可以完成查询,但是效率较低,如下语句效率较高:
select gender, count(gender) from teacher_tab where gender = '女';
7:查询表的总记录数:
select count(*) from teacher_tab; (存在统配符不建议使用)
8:一般统计id个数
select count(id) from teacher_tab;
9:查询老师记录的前三条:
select *from teacher_tab limit 0,3;
limt一共有两个参数,第一个参数为索引号,第二个参数为要查询的记录数
10:查询性别为女和指定日期的老师:
select *from teacher_tab where gender = '女'and
create_data= '2015-12-14';
11:查询性别为男或者id小于5的老师
select *from teacher_tab where gender='男'or id <5;
12:查询姓名的最后一个字符为“琪”的老师
select * from teacher_tab where name like '%琪';
13:查询姓名已指定字符开始的老师:
select * from teacher_tab where name like '小%';
姓名中包含“老”的老师:
select * from teacher_tab where name like '%老%';
4:事务控制语言(TCL)
是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠
事务:是访问并可能更新数据库中各种数据项的一个程序执行单元。
在关系数据;库中一个事务可以是一条SQL语句,一组SQL语句或整个程序。
事务的属性:原子性,一致性,隔离性,持续性。(acid);
设置默认事务提交方式:
Set autocommit = false -------设置事务提交方式为手动提交
Set autocommit = true---------设置事务提交方式为自动提交方式
当set autocommit= false后,所有的SQL都将作为事务处理,直到使用comm(提交)确或
Rollback(回滚)结束。当结束这个事务的同时也开启了新的事务。
Savepoint point2 保存还原点。
Rollback to point2 :回滚到point2
在一个事务中可以设置多个还原点,在事务没有提交之前,都可以回滚到任意点。但是如果一旦提交的话,就无法再提交了。