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等。
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
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_nameFROM 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