Mysql之基本的sql语句

来源:互联网 发布:淘宝美工助手mac 编辑:程序博客网 时间:2024/04/28 09:58

这篇博客主要是介绍基本的sql(SQL:结构化查询语言(Strucyure query language))语句,包括Mysql命令行客户端命令、数据定义语言、数据操纵语言、数据查询语言和事务控制语言。

一、Mysql命令行客户端命令
1.进入Mysql
(1)在cmd中输入 mysql -u root -p 回车
(2)直接打开mysql命令窗口
2.显示系统中数据库的命令

show databases;

注意:别忘记分号
其中前三个是系统库(information_scheme、mysql、performance_scheme)
3.激活或者使用某个数据库

use test

注:(test为数据库名称)
4.查看当前数据库表

show tables

二、数据定义语言(DDL:Data Defination Language)
1.创建数据库
create database + 数据库名称
例如:

create database mydb;

2.删除数据库
drop database + 数据库名称
例如:

drop database mydb;

3.创建表
create table 表名(字段名字 字段类型 属性);
属性之间用空格分开
例如:

create table teacher(sid int(11) primary key auto_increament,name varchar(20),gender char(1),age int(2),birth date(注意:最后一个不需要逗号));

4.查看表结构

desc teacher;

5.修改表结构
(1)添加表列

alter teble 表名 add column name varchar(10)

(2)修改表名

alter table 表名 rename 新表名

(3)删除表列

alter table 表名 drop column 字段名 

(4)修改表列类型

alter table 表名 modify 字段 要修改的类型

(5)修改字段名称

alter table 表名 change 原字段名称 新字段名称 数据类型;

(注意最后的数据类型不要忘记)
(6)删除字段的默认值

alter table 表名 alter column 字段名 drop default;

(7)设置默认值

alter table 表名 alter column 字段名 set default 默认值;

例如:alter table test modify address char(10)

三、数据操纵语言(DML:Data Manipulation Language)

1.添加数据(insert into语句)

insert into 表名(字段1,字段2,字段3)values(值,值,值);

若想要一次性向表中插入多条数据,可以使用下面一条命令:

insert into 表名 (字段1,字段2,字段3) values(值,值,值),(值,值,值),(值,值,值);

2.修改数据(update set语句)

update 表名 set 字段名=‘值’,字段名=‘值’,字段名=‘值’ where 字段名='值';

注意:where表示修改的条件,也就是指定修改哪一条或者哪几条记录
3.删除数据(delete from …语句)
(1)删除所有记录

delete from 表名

(2)删除指定记录
例如:删除id=1的语句

delete from 表名 where id=1

四、数据查询语言(DRL:Data Retrieval Language)

1.查询所有老师的信息

select * from  teacher;(*为通配符的意思)

2.在没有表被索引的情况下,允许您指定DUAL(虚拟表)作为一个假的表名
使用虚拟表进行运算,没有表的时候使用

select 1+1 from DUAL

3.查询id为1的老师的信息;

select * from teacher_tab where id=1;

4.查询职业为空的老师的信息

select * from teacher_tab where job is NULL;

查询职业不为空的

select * from teacher_tab where job is NOT NULL;

5.使用别名(as关键字,可以省略)查询id为2的老师的姓名和性别

select name as teachername,gender as teacher gender from teacher_tab where id=1;

6.查询性别为女和指定日期的老师的信息

select * from teacher_tab where gender='m' and createDate = '2013-11-11';

7.查询id大于5的老师

select * from teahcher_tab where id>5;

8.查询性别为男或者id小于5的老师

select * from teacher_tab where gender ='m' or id <5;

9.查询姓名的最后一个字符为S的老师(模糊查询:关键字 like %匹配任何字符)

select * from teacher_tab where name like '%S';

10.查询姓名以指定字符c开头的老师

select * from teacher_tab where name like 'c%';

11.查询姓名中包含w的老师

select * from teacher_tab where name like '%w%';

12.查询所有老师信息,并按照日期降序排序(order by 默认为升序 ASC 降序:DESC)

select * from teacher_tab order by createDate desc; 

13.多个排序条件:当第一个条件相同时,以第二个条件排序

select * from teacher_tab order by createDate desc,age;

(上面这条sql语句的意思是当两个人的createDate相同时,再按照年龄的顺序来排序)
14.按性别分组查询男女老师的人数(group by)

select gender,count(gender) from teacher_tab group by gender;

15.按性别分组,查询出女老师的总人数(分组之前条件用where,分组之后的条件用having)

select gender,count(gender) from teacher_tab gorup by gender having gender='m';
select gender,count(gender) from teacher_tab where gender='m'

16.查询表的总记录数

select count(*) from teacher_tab;

或者

select count(主键) from teacher_tab;

17.查询老师记录的前三条(从0的位置开始找出3条,limit关键字)

select * from teacher_tab limit 0,3;

注意:其中0为起始位置,3为结束位置

五、事务控制语言(TCL:Transation Control Language)

事务是访问并可能更新数据库中各种数据项的一个程序执行单元。在关系数据库中,一个事务可以是一条sql语句,一组sql语句或者整个程序。
事务就是对数据库的多步操作,要么一起成功,要么一起失败
事物应该具有4个属性:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持续性(durability)

1.设置默认事务提交方式:
(1)设置事务的提交方式为‘手动提交’

set autocommit=false 

(2)设置事务的提交方式为‘自动提交’

set autocommit=true

commit;—手动提交事务
rollback;—回滚事务

当我们设置了事务的提交方式为手动提交时(默认为自动提交)我们在执行插入、更新数据库等操作时,实际上并没有真正的插入或者修改,只是保存在了内存中,并没有写入本地的数据库文件,所以执行rollback语句可以进行回滚,而一旦执行了commmit语句,才真正的写入了本地文件,再执行rollback则不能撤回。

savepoint point2; 保存还原点point2
rollback to point2;—回滚到point2还原点

0 0