SQL语句简述

SQL语句简述

SQL语句:

一:DDL: 数据定义语言,用来定义数据库对象:对数据库或表的结构操作(增、删、改create drop alter )。

扩展以下要点:

1.数据库

查看所有数据库:SHOW DATABASES
切换(选择要操作的)数据库:USE 数据库名
创建数据库:

CREATE DATABASE [IF NOT EXISTS] mydb1 [CHARSET=utf8]

删除数据库:

DROP DATABASE [IF EXISTS] mydb1

修改数据库编码:

ALTER DATABASE mydb1 CHARACTER SET utf8

2,创建表:

CREATE TABLE [IF NOT EXISTS] 表名(列名  列类型,....);

查看当前数据库中所有表名称:SHOW TABLES;

查看指定表的创建语句:SHOW CREATE TABLE 表名;

查看表结构:DESC 表名;

删除表:DROP TABLE 表名;

修改表:前缀为 ALTER TABLE 表名

a)添加列:

ALTER TABLE 表名 ADD(列名   列类型,……);

b)修改类类型(如果被修改的列已存在数据,那么新的类型可能会影响到已存在数据):ALTER TABLE 表名 MODIFY 列名列类型;
c)修改列名:ALTER TABLE 表名 CHANGE 原列名 新列名 列类型;
d)删除列:ALTER TABLE 表名 DROP 列名;
e)修改表名称:ALTER TABLE 原表名 RENAME TO 新表名;

二:DML:数据操作语言,用来定义数据库记录(数据); 对表的记录进行更新(增、删、改)。

**1:插入数据**
INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...);
在VALUES后给出列值,值的顺序和个数必须与前面指定的列对应;

在数据库中所有的字符类型,必须使用单引号,不能使用双引号,日期类型也要使用单引号

**2:修改数据** 
UPDATE 表名 SET 列名1=列值1,列名2=列值2,... [WHERE 条件]
条件(条件可选):

条件必须是一个boolean类型的值或表达式:UPDATE t_person SET gender=’男’, age=age+1 WHERE sid=’1’;
运算符:=,!=,<>,>,<,>=,<=,BETWEEN…AND,IN(…),IS NULL,NOT,OR,AND

**3:删除数据** 
DELETE FROM 表名 [WHERE 条件];
TRUNCATE TABLE 表名:TRUNCATE是DDL语句,它是先删除drop该表,再create该表,而且无法回滚。

三:DCL:数据控制语言,用来定义访问权限和安全等级; 对用户的创建和授权。 不常用

    1.创建用户
CREATE USER 用户名@IP地址 IDENTIFIED BY '密码';
                      用户只能在指定的IP地址上登录
CREATE USER 用户名@'%' IDENTIFIED BY '密码';
                      用户可以在任意IP地址上登录


2.给用户授权
GRANT 权限1,……,权限n ON 数据库.* TO 用户名@IP地址;
      给用户分派在指定的数据库上的指定权限
           例如:
  GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb1.* TO user1@localhost;
           给user1用户分派在mydb1数据库上的CREATE、ALTER、DROP、INSERT、UPDATE、DELETE、SELECT权限
GRANT ALL ON 数据库.* TO 用户名@IP地址;
           给用户分派指定数据库上的所有权限

3.撤销授权
REVOKE 权限1,……,权限n ON 数据库.* FROM 用户名@IP地址;
    撤销指定用户在指定数据库上的指定权限
    例如:
REVOKE CREATE,ALTER,DROP ON mydb1.* FROM user1@localhost;
    撤销user1用户在mydb1数据库上的CREATE、ALTER、DROP权限

4.查看权限
SHOW GRANTS FOR 用户名@IP地址;
    查看指定用户的权限

5.删除用户
    DROP USER 用户名@IP地址;

四:DQL:数据查询语言,用来查询记录(数据); 主要是对表记录的查询。(重点) DQL语句只会对数据库查询,不会修改数据。

1.基本查询
1.查询所有列

SELECT * FROM 表名;

2.查询指定列
SELECT 列1[,列2,……列n] FROM 表名;

3.给列起别名
当使用列运算后,查询出的结果集中的列名称不好看,这时我们需要给列名起个别名,这样在结果集中列名就显示别名了。

SELECT IFNULL(comm,0)+1000 AS 奖金 FROM emp;

其中AS可以省略

2.条件控制
1.条件查询
与前面介绍的UPDATE和DELETE语句一样,SELECT语句也可以使用WHERE子句来控制记录。

SELECT empno,ename,sal,comm FROM emp WHERE sal > 1000 AND comm IS NOT NULL;
SELECT empno,ename,sal FROM emp WHERE sal BETWEEN 20000 AND 30000;
SELECT empno,ename,job FROM emp WHERE job IN('经理','董事长');

2.模糊查询
当你想查询姓张,并且姓名一共两个字的员工时,就可以使用模糊查询

SELECT * FROM emp WHERE ename LIKE '张_';

模糊查询需要使用运算符:LIKE,其中匹配一个任意字符,注意,只匹配一个字符而不是多个。
上面语句查询的是姓张,名字由两个字组成的员工。
下划线“_”可以匹配1个字符,如果要匹配0-n个字符,需要用“%”;

SELECT * FROM emp WHERE ename LIKE ‘%刚’;

查询名字结尾是带“刚”字的员工。

3.排序查询
1.升序

SELECT * FROM emp ORDER BY sal ASC;

2.降序

SELECT * FROM emp ORDER BY comm DESC;

3.使用多列作为排序条件

SELECT * FROM emp ORDER BY sal ASC, comm DESC;

使用sal升序排序,如果sal相等,再按照comm降序排序

4.聚合函数

1.COUNT()函数

SELECT COUNT(*) FROM emp;// 计算emp表中所有列都不为NULL的记录的行数
SELECT COUNT(comm) FROM emp;//计算emp表中comm列不为NULL的记录的行数

2.MAX()函数

    SELECT MAX(sal) FROM emp;//     查询最高工资

3.MIN()函数

SELECT MIN(sal) FROM emp;// 查询最低工资

4.SUM()函数

    SELECT SUM(sal) FROM emp; //查询所有员工工资的总和

5.AVG()函数

SELECT AVG(sal) FROM emp;//     查询平均工资

5.分组查询

分组查询是把记录使用某一列进行分组,然后查询组信息。
例如:查看所有部门的记录数。

        SELECT  deptno,COUNT(*) FROM emp GROUP BY deptno;
    使用deptno分组,查询部门编号和每个部门的记录数
            SELECT job,MAX(sal) FROM emp GROUP BY job;
    使用job分组,查询每种工作的最高工资组条件以部门分组,查询每组记录数,条件为记录数大于3
        SELECT deptno,COUNT(*) FROM emp GROUP BY deptno HAVING COUNT(*) > 3;

*

6.LIMIT子句(方言)

    SELECT * FROM emp LIMIT 4,3;

其中4表示从第5行开始,其中3表示一共查询3行。即第5/6/7行记录。

例如:每页显示10条记录,查询第3页

      SELECT * FROM emp LIMIT 2010;

enweet/stackedit

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值