SQL基础

SQL基础

简介:SQL是Structure Query Language(结构化查询语言)的缩写,它是使用关系模型的数据库的应用语言。

分类:SQL可以分为以下3类

  • DDL(Data Definition Languages)语句:数据定义语言,要于数据库、表、列、索引等数据库对象的定义。常见的DDL关键字有create、drop、alter等;
  • DML(Data Manipulation Languages)语句:数据操纵语句,常见的有insert、delete、update、select等;
  • DCL(Data Control Languages)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。定义访问权限和安全级别。常见的有grant、revoke等。
注:DDL与DML最大的区别在于DML只是对表内部数据的操作,而不涉及表的定义、结构的修改。

DDL语句:
1、创建数据库
create database test1;  //创建数据库test1
use test1  //选择数据库test1
show tables;  //查看当前数据库test1中所有表
2、删除数据库
drop database test1;  // 删除数据库test1       注:MySQL中,drop语句操作的结果显示都是"0 rows affected"。
3、创建表
create table  emp (ename varchar(10),hiredate date,sal decimal(10,2),deptno int(2));   // 创建表emp,格式如下  (注:desc emp; 可以查看表emp的描述)

mysql> desc emp;

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

| Field    | Type          | Null | Key | Default | Extra |

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

| ename    | varchar(10)   | YES  |     | NULL    |       |

| hiredate | date          | YES  |     | NULL    |       |

| sal      | decimal(10,2) | YES  |     | NULL    |       |

| deptno   | int(2)        | YES  |     | NULL    |       |

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

4 rows in set (0.02 sec)

命令show create table emp \G; 可以显示emp的建表语句

4、删除表

drop table emp;

5、修改表

5.1修改表类型

alter table emp modify ename varchar(20);  //修改ename字段的长度

5.2增加表字段

alter table emp add column age int(3);  //增加一个age字段,字段长度为3,默认age字段排在当前所有字段最后

5.3删除表字段

alter table emp drop column age; // 删除age字段

5.4字段改名

alter table emp change age age1 int(4) ;   //将age字段更名age1,同时将字段长度改为4

5.5修改字段的排序

alter table emp add birth date after ename ; //增加字段birth,类型date,排在enamel之后

或者 alter table emp add birth date first;  //增加字段birth,类型date,排在第一位

注:first、after都属于MySQL扩展,在其他数据库不一定可用。

5.6更改表名

alter table emp rename emp1;  // 将表emp改名为emp1


DML语句:
1、插入记录

mysql> insert into emp(ename,hiredate,sal,deptno) values("tom","2014-05-23","2000","1");

Query OK, 1 row affected (0.01 sec)


mysql> select * from emp;

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

| ename | hiredate   | sal     | deptno |

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

| tom   | 2014-05-23 | 2000.00 |      1 |

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

1 row in set (0.00 sec)

也可以一次按需要插入多个数据记录
mysql> insert into emp(ename,deptno) values("jack","2"),("mary","3"),("mike","1");
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from emp;
+-------+------------+---------+--------+
| ename | hiredate   | sal     | deptno |
+-------+------------+---------+--------+
| tom   | 2014-05-23 | 2000.00 |      1 |
| jack  | NULL       |    NULL |      2 |
| mary  | NULL       |    NULL |      3 |
| mike  | NULL       |    NULL |      1 |
+-------+------------+---------+--------+
4 rows in set (0.00 sec)

2、更新记录
 update emp set hiredate="2014-05-23" where ename="jack";

3、删除记录
delete from emp where ename="mike";

4、查询记录
SELECT * FROM tablename where Condition;
4.2排序
Select * from emp order by sal;   //默认升序
4.3聚合
聚合操作的语法如下:
SELECT [field1,field2,...,fieldn] fun_name
FROM tablename
[WHERE where_condition]
[GROUP BY field1,field2,...,fieldn]
[WITH ROLLUP]
[HAVING where_condition]
参数说明:
fun_name表示聚合函数,常用的有sum,count,max,min等
GROUP BY表示要进行分类聚合的字段
WITH ROLLUP是可选语法,表明是否对分类聚合的结果进行再汇总。
HAVING表示对分类后的结构再进行条件筛选。
注:HAVING与WHERE的区别,HAVING是对聚合后的结果进行条件筛选,而WHERE是对聚合前的结果进行条件筛选,所以应该优先使用where过滤记录,这样聚合的效率就会大大的提高。
4.4表连接
内连接与外连接:内连接仅选出两张表中互相匹配的记录,而外连接会选出其他不匹配的记录,最常用的是内连接。
外连接又分为左连接和右连接。
左连接:包含所有左边表的记录甚至是右边表中没有和它匹配的记录
右连接:包含所有右边表中的记录甚至是左边表中没有和它进行匹配的记录。

DCL语句

主要是DBA用来管理权限时使用,一般的开发人员很少使用。

revoke insert on dbname.* from 'zhangsan'@'localohst' ;   // 收回zhangsan用户对数据库dbname的所有表插入数据的权限。


注:使用MySQL时若忘记命令,可以使用? + 内容 利用自带文档求助
例如:? create table


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值