MySQL数据库学习笔记(三)—-基本的SQL语句

【声明】 

欢迎转载,但请保留著作原来出处→_→ 

生命壹号:http://www.cnblogs.com/smyhvae/

小说来源:http://www.cnblogs.com/smyhvae/p/4028178.html

 

【正文】

重中之重内容:

  • 一、cmd命令行的常用命令
  • 二、数据定义语言(DDL)
  • 三、数据操纵语言(DML)
  • 四、数据查询语言(DRL)
  • 五、事务控制语言(TCL)

一、cmd命令行的常用命令:

当大家使用MySQL 5.5 Command Line
Client这多少个客户端登陆时,只可以登陆root用户。假设之后开创了另外用户,就很麻烦了,所以大家绝不MySQL
5.5 Command Line Client那几个客户端,而是径直行使cmd。

登录MySQL数据库:

因为在这前面设置MySQL的时候,已经将环境变量配置好了,所以可以直接在cmd中输入如下命令举办登陆:

mysql -u root -p 

随后输入密码就行了。

下面代码中,-u代表username,即用户名。-p表示password,即密码。

图片 1

查阅数据库: 

show databases; 

应用数据库:(此命令前面能够不加分号)

use 数据库名; 

查阅当前数量库表:

show tables; 

注:命令前边的分公司表示为止。

图片 2

注:上图中,先输入show
databases;彰显出了多少个库,前多个代表系统的库,第六个test是系统自带的测试库。然后我们使用test这个数据库,展现:Database
changed,表示近年来的数据库处于激活状态。紧接着可以对其举办任何相关的通令了。那里大家输入show
tables,能够看来test那一个数据库的表里面是空的。

故而要从头建表了,于是就关乎到了SQL语句。

SQL全称是:结构化查询语言(Structured
Query
Language)
。既然是言语,就关系到了语法。下边来看一下普遍的语法。

 

二、数据定义语言(DDL)

数据定义语言:Data Definition Language。如CREATE,
DROP,ALTER等说话。需要留意的是,数据库中的命令不区分轻重缓急写

开创数据库(CREATE
DATABASE语句):

【举例】新建数据库,命名为mydb:

CREATE DATABASE mydb; 

注:假使要删除数据库,将“create”改为“drop”即可。

创建表(CREATE
TABLE语句):

【举例】创造一个名为teacher的表:

CREATE TABLE teacher(
id int primary key auto_increment,
name varchar(20),
gender char(1),
age int(2),
birth date,
description varchar(100)
);

地点装有的代码其实是同一行。

概念字段的格式:字段的名字+字段的项目+属性

注:每个字段定义完后,要用逗号隔开,最终一个字段没有逗号。

诚如状况下,每个表都要有一个主键。

命令运行的功用如下:

图片 3

查看表结构:

desc teacher; 

成效如下:

图片 4

亟待小心的是:主键是用来唯一象征一条记下的字段(主键值必须是唯一)

删除表(DROP TABLE语句):

DROP TABLE teacher; 

注:drop table 语句会删除该的具备记录及表结构

修改表结构(ALTER
TABLE语句):(假诺表名为test)

  • alter table test add column job varchar(10);
    –添加表列
  • alter table test rename test1; –修改表名
  • alter table test drop column name; –删除表列
  • alter table test modify address char(10)
    –修改表列类型(改类型)
  • alter table test change address address1  char(40)
    –修改表列类型(改名字和品种,和下边的一行效果一样)
  • alter table test change column address address1
    varchar(30)–修改表列名(改名字和系列)

举例来说:将主键修改为活动增长:alter
table tab_teacher change id
id int auto_increment;

 

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

数量操纵语言:Data Manipulation Language。如:INSERT(增),
UPDATE(改), DELETE(删)语句

加上多少(INSERT
INTO…语句):(即添加表的笔录)

INSERT INTO 表名(字段1,字段2,字段3) values(值,值,值); 

举例:

insert into tab_teacher(name,gender,age,createDate) values('smyh','b',22,now()); 

注:上方的now()函数可以调出当前系统的年月。

下一场通过如下命令举办查询表的所有记录

select * from tab_teacher; 

其中,通配符“*”表示拥有字段,即从tab_teacher这一个表中查所有字段的笔录。

展现效果如下:

图片 5

修改数据(UPDATE … SET语句):

UPDATE 表名 SET 字段1名=值,字段2名=值,字段3名=值 where 字段名=值; 

注:where前面的一对代表修改的规范。修改时,按照字段1、字段2、字段3的先后顺序修改。

剔除数据:(DELETE FROM…语句)

去除所有记录:

DELETE FROM 表名; 

删除ID为1的记录:

DELETE FROM 表名 where id=1; 

 

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

多少查询语言(Data Retrieval Language –DRL):SELECT语句。

在实质上开支中,数据查询语言用的是最多的。大家前些天以上面的这张表格为例:

图片 6

注:实际开支中,要避免使用通配符”*”(通配符代表所有字段),因为系统要先分析出装有的字段名,将其还原为真实的名字,然后再举办操作。假设记录数据库内容特别多,会影响功能。

询问所有老师的消息:

select * from tab_teacher; 

或者:(推荐)

select id,name,gender,age,job,createDate from tab_teacher; 

在未曾表被引用的事态下,允许指定DUAL作为一个假的表名:

DUAL是虚拟表。也就是说,表中从不这么些数据,不过要就是使用sql语句,系统就会用这一个虚拟表来满足你。举例效果如下:

图片 7

询问ID为2的教员新闻:

select * from tab_teacher where id=2; 

询问工作为空的先生信息:

select * from tab_teacher where job is null;

只顾,上方代码中,字段为空用“job is
null”来表示,而不是“job=null”。

查询ID为2的民办教授的真名和性别:

select name,gender from tab_teacher where id=2; 

图片 8

查询性别为女和点名日期的助教音信:

select $ from tab_teacher where gender='w' and ceateDate='2014-10-14';

注:并且用“and”,或用“or”。

查询性别为男仍旧ID小于2的导师:

select * from tab_teacher where gender='m' or id<2; 

图片 9

询问姓名的末梢一个字符为“e”的教员:(关键字:like
‘%+指定字符’)

select * from tab_teacher where name like '%e'; 

查询姓名以指定字符起始的教师:

select * from tab_teacher where name like 's%'; 

查询姓名中富含“m”的教职工:

select * from tab_teacher where name like '%m%'; 

查询所有老师音信,并按日期降序或者升序排列:**ORDER
BY 字段,+默认为升序:ASC/降序:DESC
)**

  • 升序:

    select * from tab_teacher order by createDate; 

注:最后一个单词ASC可写可不写,因为默认为升序。

  • 降序:

    select * from tab_teacher order by createDate desc; 

图片 10

六个排序条件:(当第一个条件相同时,依照第二个原则排序)

诸如:下面图片的排序中,是遵守日期降序排序的,可是id为2和id为3的日子一模一样,这两条记下遵照默认顺序排序。

举例:现在排序的首先规范为:日期降序,第二规范为:年龄降序。多个排序条件用逗号隔开。命令为:

select * from tab_teacher order by createDate desc,age desc;

按性别分组查询男女助教的总人口(GROUP BY
):

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

地点的通令表示,查找gender这么些字段;并总结gender有多少个(count(gender));然后依照gender里的始末将个数举行分组(group
by gender)。

问题:我觉得应该是先分组,再查询性别,再数性其它个数。

注:那之中用到了count()这个松开的函数。关于count()这么些聚合函数,将在下一篇著作中讲到。

毋庸置疑的效用和错误的效用如下:

图片 11

按性别分组,查询出女教员人数的总数:

select gender,count(gender) from tab_teacher group by gender having gender='m';

此地在上一个发令的底蕴上,增添了一个重点字:having。having关键字特别用来在分组之后加上的准绳。意思是:先求总数,然后举办分组,然后再从分组里找到字段等于“m”的个数。注:不可以用where作为根本字,因为where是加在分组此前的尺码。

展现效果如下:

图片 12

注:这种写法操作繁琐,功能较低,having语句尽量少用,可以用其他语句代替,例如:

select gender,count(gender) from tab_teacher where gender='m';

效用是同等的。

查询表的总记录数:

  • 方式一:(不推荐)

    select count(*) from tab_teacher;

  • 措施二:(使用主键的措施查询)

    select count(id) from tab_teacher;

办法一将空记录也蕴含进来了。所以采取方法二,因为主键唯一,且不可以为空,此时id总数则代表总记录数。

别名的用法:

  • 动用别名查询表的总记录数:

    select count(id) as counts from tab_teacher; 

不用别名和用别名的坚守相相比如下:(命令中的”as”可以简简单单)

图片 13

  • 利用别名来代替表的名字:

比方:将表的名字起为t。

select t.name,t.age from tab_teacher t;

图片 14

当表名相比较长,或者同时有多少个表存在时,用别名就呈现特别便利了。

查询先生记录的前三条(从0地方上马找出3条):(非常有效)

select * from tab_teacher limit 0,3;

指令解释:limit前面有四个参数:首个参数是开场地点,第二个参数是偏移量。声明:第一条记下的id不管为多少,索引地方都是0。

注:那种分页查询艺术分外有用,例如使用百度搜索时,告诉您总记录数,不过会分页突显。

 

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

业务控制语言:Transaction Control Language–TCL。如COMMIT,ROLLBACK语句。

1、事务:

事务(Transaction)的概念:工作(Transaction)是访问并可能更新数据库中各样数据项的一个程序执行单元(unit)。在关周到据库中,一个业务可以是一条SQL语句,一组SQL语句或任何程序。

政工的习性:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持续性(durability)。这六个特性通常称为ACID特性。

事务的风味:事务就是对数据库的多步操作,要么一起成功,要么一起失利。

总结:事务就是可以把多步操作看成一个完全,这些共同体依旧一起成功,要么一起失败。

2、事务的交由和回滚命令:

设置默认事务提交格局:(默认为true)

  • 安装工作提交格局为“手动提交”:

    set autocommit = false;

  • 安装工作提交格局为“自动提交”:

    set autocommit = true;

手动提交业务:

commit;

回滚事务:

rollback;

 

注:只要还没手动commit提交,一旦回滚,从前的修改操作都将清零。

注:commit命令和rollback命令只有在付给模式为“手动提交”时,才能够用。

3、保存还原点的一声令下:

当数码未commit此前,增删改查的操作都是暂时保存在内存之中的,当我们修改操作举办到某一步时,能够给这一步设置一个还原点,方便未来回滚到此还原点(类似于PS当中的快照)。

保存还原点:

savepoint name_point;

回滚到指定还原点:

rollback to name_point;

 

网站地图xml地图