当前位置:Gxlcms > 数据库问题 > 第十一章 数据库

第十一章 数据库

时间:2021-07-01 10:21:17 帮助过:25人阅读

Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言

<1> 在数据库系统中,SQL语句不区分大小写(建议用大写。但字符串常量区分大小写。建议命令大写,表名库名小写;

<2> SQL语句可单行或多行书写,以“;”结尾。关键词不能跨多行或简写。

<3> 用空格和缩进来提高语句的可读性。子句通常位于独立行,便于编辑,提高可读性。

1

2

SELECT * FROM tb_table

            WHERE NAME="YUAN";

<4> 注释:

单行注释:--

多行注释:/*......*/

<5>sql语句可以折行操作

 

1mysql的常用sql语句:


a.库的操作

1.创建数据库:

create database 库名 [character set utf8(指定字符集,不加默认为拉丁文)];

 

2.查看数据库

show databases;     查看所有数据库

show create database 库名查看数据库的创建信息

use 库名;         切换到指定数据库

select database();    查看当前所在的库

 

3.修改数据库(修改字符集)

alter database 库名 [character set utf8(指定字符集,不加默认为拉丁文)];

 

4.删除数据库

drop database 库名;

 

b.表的操作

1.创建表

create table 表名 (

字段 类型[完整性约束条件],

字段 类型[完整性约束条件]

);

 

2.查看表信息

show tables;           查看当前库中所有的表

show create table 表名查看表的建表语句

desc 表名;  查看表结构

show columns from 表名;    同上,查看表结构

 

3.修改表结构

alter table 表名(

add 字段 类型[完整性约束条件] [first|after 字段名],          #增加字段

modify 字段 类型[完整性约束条件] [first|after 字段名],     #修改字段类型

change 旧字段 新字段 类型[完整性约束条件][first|after 字段名] #修改字段名

drop 字段;    #删除一列字段

);

rename table 旧表名 to 新表名修改表名

 

4.删除表

drop table 表名;      删除表

 

c.表记录的操作

1.增加表记录

增加一条记录:

insert [into] 表名 (字段1,字段2,…) values (1,2,…);

增加多条:

insert [into] 表名 (字段1,字段2,…) values (1,2,…),

                                     (1,2,…),

                                  ……            ;

set插入:

insert [into] 表名 set 字段1=2,字段2=2;

 

2.修改表记录

update 表名 set 字段1=1  where子句

 

3.删除表记录

delete from 表名  where 子句;

 

清空表内所有记录有两种方法:

方式1

delete from 表名;

方式2

truncate table 表名;

对比:

delete语句只能删除表中的内容,不能删除表本身,想要删除表,用drop

truncate也可以删除表中的所有数据,语句首先会摧毁表,再新建表,此种方式删除的数据不能在事务中恢复,数据量大时推荐使用

 

4.查询表记录

select * from 表名;        #显示所有的记录信息

 

 

select 字段1,字段2,… from 表名

where 子句  #过滤查询

group by 字段         #分组查询

having   子句           #过滤

order by 字段          #排序

limit                 #记录条数限制

Mysql在执行sql语句时的执行顺序:

from >  where  >  select  > group by  >  having  >  orderby

 

(1)where 子句:

比较运算符:

                        > < >= <=<> !=

                        between 80 and 100 值在1020之间

                        in(80,90,100) 值是102030

                        like ‘yuan%‘   %后面可以接_,代表匹配一个字符,可以接多个)

逻辑运算符

                        在多个条件直接可以使用逻辑运算符 and or not

(2)group by 字段:

GROUP BY 语句根据某个列对结果集进行分组,在分组的列上我们可以使用聚合函数进行相关查询

count    计数

sum      总数值

avg 平均值

max      最大值

min 最小值

 

(3)having 子句

过滤

where 子句的区别:

sql语句中,两者的书写顺序和执行顺序不一样,where写在前面,先执行,having写在后面,后执行,having适用于对查询结果的二次过滤

(4)order by 字段

按指定的列进行排序,排序的列即可是表中的列名,也可以是select语句后指定的别名

语法:select*|field1,field2... from tab_name order by field [Asc|Desc]

 

        -- Asc 升序、Desc 降序,其中asc为默认值 ORDER BY 子句应位于SELECT语句的结尾。

(5)limit记录条数限制

(6)正则表达式

 

练习:

先创建一个员工表:

create table emp(

   id       int primary keyauto_increment,

   name     varchar(20),

   gender  enum("male","female","other"),

   age      tinyint,

   dep      varchar(20),

   city     varchar(20),

  salary    double(7,2)

);

 

表内插入信息:

insert into emp(name,gender,age,dep,city,salary) values

               ("yuan","male",24,"教学部","河北省",8000),

               ("egon","male",34,"保安部","山东省",8000),

               ("alex","male",28,"保洁部","山东省",10000),

                ("景丽阳","female",22,"教学部","北京",9000),

                ("张三", "male",24,"教学部","河北省",6000),

                ("李四", "male",32,"保安部","北京",12000),

                ("王五", "male",38,"教学部","河北省",7000),

                ("赵六", "male",19,"保安部","河北省",9000),

                ("猪七", "female",24,"保洁部","北京",9000);

 

查看表记录信息:

mysql> select * from emp;

+----+--------+--------+------+--------+--------+----------+

| id | name   | gender | age  | dep   | city   | salary   |

+----+--------+--------+------+--------+--------+----------+

|  1| yuan   | male   |   24| 教学部 | 河北省 | 8000.00 |

|  2| egon   | male   |   34| 保安部 | 山东省 | 8000.00 |

|  3| alex   | male   |   28| 保洁部 | 山东省 | 10000.00 |

|  4| 景丽阳 | female|   22 | 教学部 | 北京   | 9000.00 |

|  5| 张三   | male  |   24 | 教学部 | 河北省 |  6000.00 |

|  6| 李四   | male  |   32 | 保安部 | 北京   | 12000.00 |

|  7| 王五   | male  |   38 | 教学部 | 河北省 |  7000.00 |

|  8| 赵六   | male  |   19 | 保安部 | 河北省 |  9000.00 |

|  9| 猪七   | female |  24 | 保洁部 | 北京  |  9000.00 |

+----+--------+--------+------+--------+--------+----------+

 

查询语句实例:


查询所有namesalary字段的值

select name,salary from emp;


查询所有namesalary字段的值并设置别名

select name as 姓名,salary as 薪水 from emp;    #as可以省略不写


  1. where 子句


查询所有年龄大于20的:

人气教程排行