数据库常用命令和注意问题

数据库

这两天学了点数据库的操作,应该是基本的语句都看会了,但是还是容易忘记,所以再整理一下.

SQL语句分类:

  • DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等。
  • DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据)。
  • DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别。
  • DQL(Data Query Language):数据查询语言,用来查询记录(数据)。

  • ​ 注意sql语句以;结尾

常用数据类型:

  • int:整型
  • ​ double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
  • ​ char:固定长度字符串类型; char(10) 'aaa ' 占10位 一个汉字占用2两位
  • ​ varchar:可变长度字符串类型; varchar(10) 'aaa' 占3位
  • ​ text:字符串类型;
  • ​ blob:字节类型; 大数据类型,比如一个文件
  • ​ date:日期类型,格式为:yyyy-MM-dd;
  • ​ time:时间类型,格式为:hh:mm:ss
  • ​ timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值
  • ​ datetime:日期时间类型 yyyy-MM-dd hh:mm:ss

常用约束:

  • 主键约束:primary key
  • ​ 唯一约束:unique [key]
  • 非空约束:not null
  • ​ 默认约束:default
  • ​ 外键约束:foreign key
  • ​ 自动增长:auto_increment

DDL使用:

  1. 创建新的数据库——create database 数据库名字
  2. 查看当前数据库服务器中的所有数据库 —— show databases;
  3. 查看前面创建的mydb1数据库的定义信息 ——show create database mydb1;
  4. 查看服务器中的数据库,并把mydb1的字符集修改为utf8:—— ALTER DATABASE mydb2 character SET utf8;
  5. 删除 ——drop database mydb1;
  6. 查看当前使用的数据库——select database();
  7. 切换数据库——use mydb2;
  8. 创建新表——create table 表名(字段 字段类型....);
  9. 删除现有表——drop table table_name;
  10. 查看所有表——show tables;
  11. 查看表的字段信息:desc 表名;
  12. 例如有一个员工表,再增加一个image列:alter table employee add image blob;
  13. 修改这个表的job列,使其长度为60:alter table employee modify job varchar(60);
  14. 更改表名:alter table employee to user
  15. 删除表的image列:alter table employee drop image;
  16. 查看表的创建细节: show create table user;

DML操作:

  1. INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...);
  2. 查看数据库编码的具体信息 :Show variables like ‘character%’;
  3. 临时更改客户端和服务器结果集的编码 :SET NAMES ‘gbk’;
  4. 修改操作:update: UPDATE 表名 SET 列名1=列值1,列名2=列值2 ... WHERE 列名=值
  5. 删除操作:DELETE: DELETE from 表名 【WHERE 列名=值】
  6. 使用truncate删除表中记录:TRUNCATE TABLE emp; (TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表)
  7.  

DQL数据查询:查询关键字:SELECT

SELECT 列名1,列名2 FROM表名 【WHERE --> BROUP BY-->HAVING--> ORDER BY】

  • WHERE condition /行条件/
  • GROUP BY grouping_columns /对结果分组/
  • HAVING condition /分组后的行条件/
  • ORDER BY sorting_columns /对结果排序/ (默认是升序,加上desc是降序)
  • LIMIT offset_start, row_count /结果限定 分页/

模糊查询:模糊查询必须使用LIKE关键字。其中 “”匹配任意一个字母,5个“”表示5个任意字母%:任意0~n个字母

字段控制查询:

  1. 去除重复记录 :SELECT DISTINCT sal FROM emp;
  2. 给列名添加别名 :SELECT *, sal+IFNULL(comm,0) AS  total FROM emp;(给列起别名时,是可以省略AS关键字的:) 

聚合函数 实现统计查询:

  • COUNT():统计指定列不为NULL的记录行数;

  • MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
  •  MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
  • SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

  •  

    AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

注:having与where的区别:

1.having是在分组后对数据进行过滤,where是在分组前对数据进行过滤

​ 2.having后面可以使用分组函数(统计函数)

​ where后面不可以使用分组函数。

​ WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而 HAVING是对分组后数据的约束。

 

LIMIT:LIMIT用来限定查询结果的起始行,以及总行数。

查询5行记录,起始行从0开始 :

SELECT * FROM emp LIMIT 0, 5;

查询10行记录,起始行从3开始 :

SELECT* FROM emp LIMIT 3, 10;

 

你可能感兴趣的:(数据库常用命令和注意问题)