sql从入门到放弃

这篇博客详细介绍了SQL的基本语句,包括查看数据库信息、SELECT查询、DISTINCT、WHERE条件、ORDER BY排序、UPDATE修改、DELETE删除以及AS别名。此外,还探讨了高级用法,如LIMIT、IN操作符、JOIN、UNION等,适合SQL初学者学习。

目录

一、基本语句(增删改查)

1.使用命令查看数据库中某个表的信息(use、set、select)

2.select语句(查)

3.select distinct语句

4.Where语句(查)

5.order  by语句

6.update  set语句(改)

7.delete  from语句(删)

8.as 别名

二、高级用法

1.Limit、select  top、rownum 语句

2.in操作符

3.inner  join(连接)on

4.left  join和right  join

5、union语句



 

一、基本语句(增删改查)

SQL对大小写不敏感!

2、在每条sql语句末端使用分号!        

Navicat常用操作快捷键:

Ctrl+QCtrl+N            打开查询窗口

Ctrl+/            注释sql语句

Ctrl+Shift +/  解除注释

Ctrl+R           运行查询窗口的sql语句

F6               打开一个mysql命令行窗口

Ctrl+L           删除一行

Ctrl+W          关闭一个查询窗口

运行已选择的命令的快捷键: ctrl + shift + r

 

查看数据库状态:(stopstartstatusrestart

systemctl  status mysqld.service

 

查看指定目录-文件大小 :  du  -sh  文件名或目录名

 

1.使用命令查看数据库中某个表的信息(use、set、select)

Show  databases;    //显示可用的数据库  

Use  crius;        //选择名为crius的数据库

Set  names  utf8;    //设置使用的字符集

Select  *  from  crius_area_dictionary;  //读取crius_area_dictionary表的所有信息

2.select语句(查)

用来读取某个表中的数据

格式:select 列名,列名,….  From 表名; //把这个表中的第几列第几列数据读出来

Select  *  from  表名;    //把这个表中的所有数据都读出来

另一种写法: 查看websites表的name列和access_log表的count列数据

         Select  websites.name , access_log.count  from  websites,  access_log;d

3.select distinct语句

在使用select查找表中指定列的数据的时候,这个列中可能有很多重复的数据,使用select distinct可以把重复的数据去掉

比如说area表中有一列country有很多重复的国家在里面,想要去掉重复的,则

Select  distinct  country  from  area;

4.Where语句(查)

          跟select结合使用,筛选满足某个条件的记录

And:同时满足多个条件的值

Or: 满足其中一个条件的值

Not:满足不包含该条件的值

Is null: 判断某个列中的空值

between  and :在,,,之间的值  

In :某个列中的多个值

Like:模糊查找

         比如M为要查询的模糊信息,通配符如下:

         %M%: 查询包含M的所有内容

         M%: 查询以M为开头的

练习:

  1. 搜索表中empno等于100的数据;

Select  *  from  emp  where  empno = 100;

 

  1. 查询emp表中sal列中大于2000小于3000的值;

Select  *  from  emp  where  sal  > 2000  and   sal  <  3000;

 

  1. 查询emp表中sal大于2000或comn大于500的值;

Select  *  from  emp  where  sal  >  2000  or  sal  > 500;

 

  1. 使用not,查询emp表中sal小于等于100的值

Select  *  from  emp  where  not  sal  >100;

 

  1. 查询emp表中comm列中的空值

Select  *  from  emp  where  comn  is  null;

 

  1. 查询emp表中id列中值在1-10范围内的数据(包含110)

Select  *  from  emp  where  id   between  1  and  10;

  1. 查询emp表中sal列中等于500030001500的值(一个列中有多个可能的值)

Select  *  from  emp  where  sal  in  (5000,3000,1500);

 

  1. 查询emp表中ename列中以海口市开头的数据

Select  *  from  emp  where  ename  like  海口市%’

 

  1. 查询emp表中ename列中包含海南的数据

Select  *  from  emp  where  ename  like  ‘%海南%’;

5.order  by语句

对某个列进行升序或降序排列

         格式:select * from table  order  by  column_name,  column_name  ASC|DESC

         默认按照升序排列,DESC为降序。

练习

         从websites表中选取所有数据,并按照“alexa”列降序排列。

         Select  *  from  websites  order  by  alexa  desc;

6.update  set语句(改)

修改表中已经存在的数据

Update xxx  set  xxx

格式:

Update  表名  set  列名=要修改的值 where 要修改的是哪一行

练习:

         修改websites表中id为13的数据,把name原来为iflytek改成IFLYTEK

        

         Update  websites  set  name=’IFLYTEK’  where  id  = 13;

在进行修改操作时,如果忽略where语句,则没有指定要修改的行,表中所有的数据都会被修改。所以修改时一定不能忽略where语句,可以通过设置sql_safe_updates这个参数来进行安全检查,不携带where就会报错。 Set  sql_safe_updates  =  1;

7.delete  from语句(删)

删除表中的行

格式:

         Delete  from  table_name  where  删除条件。

如果不加where条件,则会把表中所有数据全部删除,删除时一定要加where指定要删除的是哪行数据。

练习:

           删除表中第4,5,10行的数据

         Delete  from  websites  where  id =4  or id =5  or id =10;

        

         删除所有数据

         Delete  from  websites;   //此操作会删除表中所有行,保留表结构、属性、索引

8.as 别名

给列起别名

写法1:select  name  as  n  from  reg_task;   //加as ,后面跟别名

写法2:select  name  n  from  reg_task;   //不加as,后面直接跟别名

给查询的表起别名

Select  rt.name,  rt.age  from  reg_task  W;

二、高级用法

1.Limit、select  top、rownum 语句

用来返回查询的显示的前几行数据

Mysql中使用limit语句、

Sql server使用select  top语句、

Orical使用rownum语句

 

下面为mysql用法:

         查询websites表显示前两行数据:

         Select  *  from  websites  limit  2;

         查询websites并按照降序排列,只显示前3行数据:

         Select  *  from  websites  order  by  id  desc  limit  3;

2.in操作符

使用in可以在where条件中规定多个值

语法:select  column_name  from  table_name  where  column_name  in(1,2,3,,,,,)

练习:

         在websites表中选取名字为“张三”或“李四”的所有数据

         Select  *  from  websites  where  name  in(“张三 “李四”);

3.inner  join(连接)on

A表和B表满足匹配条件时返回行

INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 "Websites" 表中的行在 "access_log" 中没有匹配,则不会列出这些行。

比如有A表和B表,A和B之间通过id关联,通过A的id找到B的id对应的行,现将两个表关联起来,查找两个表中需要的数据。

 

不使用inner  join 的方法(只使用where筛选):

         Select  websites.name,  access_log.count,  access_log.date  from  websites, access_log  where  websites.id = access_log.site_id;

 

使用inner join的方法:

         格式:select  要显示的列名  from  A表 inner  from  B表  on  要满足的条件

 

         Select  websites.name,  access_log.count,  access_log.date  from websites  inner  join access_log  on  websites.id  = access_log.site_id;

4.left  join和right  join

Left  join:左表数据和右表数据匹配,左表要匹配的数据在右表有,则返回行,左表要匹配的数据在右边没有,则返回左表的数据,同时右表的数据返回null

Right  join: 相反

5、union语句

用于合并多个select语句,要求列数、列的数据类型、列的顺序要一样。

语法:

         Select  column  from table1  union  select  column  from  table2;

使用union,会选取不同的值,重复的不会选取,如果要选取重复的,使用union  all

练习:

         1、从websites和apps表中选取所有不同的country

         Select  country  from  websites

         Union 

         Select  country  from  apps

       Order  by  country;

 

      2、从websites和apps表中选取所有的country(也包括重复的值)

      Select  country  from  websites

      Union  all

      Select  country  from  apps 

      Order  by  country;

      3、从所有的表中选取国家是中国的数据

      Select  country,  name  from  websites  where  country=’CN’

      Union  all

      Select  country  ,name  from  apps  where  country =’CN’;

6、把一个表的数据和结构复制到另一个表

(该操作仅针对mysql,其他sql自行百度)

create table test1

as

select id , name, url from websites;   //创建表test1,结构和数据复制自websites表。

7.create  table

用于创建数据库中的表

格式:

         Create  table  table_name

(

         Column_name1  data_type(size),

         Column  name2  data_type(size),

         Column  name3  data_type(size),

         ……….

);

Column_name表示创建的表的列名,

Data_type表示该列的数据类型,

Size表示改列的最大长度。

练习:

         创建一个名为Person的表,包含:ID,LastName,FirstName,Address和city五个列

         Create  table  Person

(

         ID  int,

         LastName  varchar(255),

         FirstName  varchar(255),

         Address  varchar(255),

         City  varchar(255)

);

8、数据库备份mysqldump

使用命令实现数据库备份、还原。

比如备份runnood数据库,

备份:

将runnood数据库的表结构和数据都备份到runnood.sql中

Mysqldump  -uroot  -p  runnood  >  /iflytek/server/backup/runnood.sql

 

还原:

Mysql  -uroot  -p  runnood < runnood.sql

 

9、数据库定时备份

创建数据库备份文件夹,备份路径

    

在/usr/sbin下新建可执行文件,输入可执行命令,并赋权

   

   

`date  +%Y%m%d`  中的`  `esc下面的那个,date+之间有空格,表示date日期以指定格式显示

之后是两条备份runnoodtest_1数据库的备份命令

查看定时任务crond状态

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值