SQL的语句们~~

SQL语句是以分号来进行区分的,所以你可以每行写一个单词的写一个SQL语句,最后分号之后,才会执行
但是一般没有必要。
数据库定义语言(大小写不敏感)(DDL):
create、drop、alter等


create database databaseName;
创建数据库
create table tableName(id int(11) primary key auto_increment,
name varchar(20) not null,
age int(2) not null,
birth date not null);
创建表,表里面有id,name,age,birth四个属性。


删除表:
drop tableName;
会删除表的所有记录和表结构


修改表结构:
alter table tableName add column username varchar(20)-----添加一列username列.
alter table tableName rename tableName1-----修改tableName表名为tableName1.
alter table tableName drop column username-----删除username列.
alter table tableName modify name varchar(10)-----修改name列的数据类型
alter table tableName change name name varchar(10)-----修改name列的数据类型
alter table tableName change column name name1 varchar(50)-----修改name列的数据类型和列名
在这里面:modify只能修改列的数据类型;change可以修改列名,还能修改列的数据类型。


数据操纵语句DML:
insert、update、delete等


insert into 表名(字段1,字段2,字段3,...) values(值1,值2,值3,...);
添加数据,字段可以不写,指定赋值的时候就必须写,值和字段必须要对应上,否则会出错。
now()一般用在date数据类型,用于获取当前时间。


update tableName set 字段名='值',字段名='值',字段名='值' where 字段名='值';
***不用where就会修改掉该表中的全部的上面字段的值
在这里只要where后面的字段符合,那么前面能修改的,每修改一个字段都会判断后面的字段
如果前面改了的话,很有可能就会出错,所以在修改的时候,尽量不要修改where后面指定的那个字段。
即不能:
update tableName set id=1,age=22 where id=0;
这样的话,年龄是没有办法修改成功的!!!!!


delete from tableName;
删除tableName表的所有记录
delete from tableName where id=1;
删除tableName表中id为1的记录,where后面可以是任何的符合SQL语句的范围值,例如id>5,id<=3等。


数据查询语句DRL:
select语句,占SQL语句的70%或以上。
select * from tableName;
-----查询所有老师信息(*代表通配符,为了优化SQL语句,要尽量避免使用*这个通配符)
#select id,name,gender,... from tableName;
-----是与上面等价的,一般都建议用这个语句。(这个也可以查询你所需要的数据)
select 1+4 from dual;
-----没有表被引用,指定DUAL作为一个假的表名。结果第一行为1+4,第二行为5
select * from tableName where id=1;
-----查询id为1的记录的信息
select * from tableName where job is null;
-----查询职业信息为空的记录的信息
select * from tableName where job is not null;
-----查询职业信息不为空的记录的信息
select name as '姓名',gender as '性别' from tableName where id=1;
-----用别名查询,字段处就会变成姓名和性别(这里的as也可以不要)。
select * from tableName where gender='m' and createDate=2013-11-11;
-----这里是查询符合多个条件下的记录信息
select * from tableName where id<1;
-----查询id大于1的所有记录的信息
select * from tableNamewhere id>5 or gender='m';
-----这里是查询符合其中任意一个条件的记录的信息
select * from tableName where name like '%s%';
-----查询姓名中有s的记录的信息,如果只有后面有%,那么就是名字以s开头,如果%在前面,那么就是以s结尾
select * from tableName order by id;
-----这里是按照id升序排列(默认,或者加上asc)
select * from tableName order by id desc;
-----这里是按照id降序排列
select * from tableName order by name desc,age desc;
-----这个是按照name降序排列,name相同时,按照age降序排列(排序可以多种条件的)
select gender,count(gender) from tableName group by gender;
-----分组排序,按照性别分组排序,并且计算性别总数,相同的就为一组,所以只会显示;两组
select gender,count(gender) from tableName group by gender having gender='m';
-----分组排序之后,只显示性别为m的分组(效率比较低,最好不用,或者先限制条件之后再分组)
select count(*) from tableName;
-----查询总的记录的个数(一般把*通配符换成id或者某一字段)
select * from tableName limit 0,3;
-----这个是查询前三条数据,这个0指的是起始位置,后面的3是偏移量,即要查询多少条记录


事务控制语言TCL:
使用前提是把事务提交方式设置为手动提交:set autocommit=false;
如果是true的话,就无法使用,使用也没有效果。
commit,rollback等


事务(Transaction):是访问并可能更新数据库中各种数据项的一个程序执行单元。
在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。
事务具有4个属性:原子性、一致性、隔离性(事务和事务之间不收影响)、持续性【ACID】


当然,如果你的事务提交方式的话就不需要用到事务控制语言,但是修改的数据也没有办法还原


commit;手动提交事务
rollback;回滚事务(只能在commit之前可以做,commit之后就没有意义了!)
savepoint;保存还原点,还原点之后的语句在commit之前都可以rollback回来
rollback to savepoint;回滚到savepoint的还原点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值