1. DDL: 数据定义语言,用来定义数据库对象:库、表、列等;
查看所有数据库名称:SHOW DATABASES;
切换数据库:USE mydb1;
创建数据库:CREATE DATABASE[IF NOT EXISTS]mydb2;
CREATE DATABASE mydb2;
删除数据库:DROP DATABASE [IF EXISTS] mydb2;
DROP DATABASE mydb2;
修改数据库编码:ALTER DATABASE mydb1 CHARACTER SET utf8;
查看当前数据库中所有表名称:SHOW TABLES;
查看指定表的创建语句:SHOW CREATE TABLE emp;
查看表结构:DESC emp;
删除表:DROP TABLE emp;
给stu表添加classname列:ALTER TABLE stu ADD (classname VARCHAR(100));
创建表:
CREATE TABLE emp(
eid CHAR(6),
ename VARCHAR(20),
job VARCHAR (30),
emptno INT
);
2. DML :数据操作语言,用来定义数据库记录(数据)
插入数据:
INSERT INTO emp(eid, ename,job,emptno) VALUES(‘e_1001’, ‘zhangSan’,‘学生’, 20);
修改数据:
UPDATE emp SET ename=‘zhangSanSan’, job=‘teacher’ WHERE eid=‘e_1001’;
删除数据:
DELETE FROM emp WHERE eid=‘e_1001’;
3. DCL :数据控制语言,用来定义访问权限和安全级别
4. DQL :数据查询语言,用来查询记录(数据)
语法:
SELECT selection_list /要查询的列名称/
FROM table_list /要查询的表名称/
WHERE CONDITION /行条件/
GROUP BY grouping_columns /对结果分组/
HAVING CONDITION /分组后的行条件/
ORDER BY sorting_columns /对结果分组/
LIMIT offset_start, ROW_COUNT /结果限定/
模糊查询:
查询姓名中第2个字母为“i”的学生记录
SELECT * FROM stu WHERE sname LIKE ‘_i%’;
去除重复记录:SELECT DISTINCT sal FROM emp;
查询所有学生记录,按年龄降序排序:SELECT * FROM stu ORDER BY age DESC;
表之间的关系
SELECT 列
FROM 表
WHERE 条件
GROUP BY 分组
HAVING 分组条件
ORDER BY 排序
聚合函数: 是用来做纵向运算的函数:
COUNT():统计指定列不为NULL的记录行数;
MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
查询emp表中有佣金的人数:SELECT COUNT(comm) cnt FROM emp;
分组查询:
查询每个部门的部门编号和每个部门的工资和:SELECT deptno, SUM(sal)FROM emp GROUP BY deptno;
LIMIT (当前页-1)*每页显示条数,每页显示条数。
查询5行记录,起始行从0开始:SELECT * FROM emp LIMIT 0, 5;
主键
指定主键约束使用PRIMARY KEY关键字
CREATE TABLE stu(
sid CHAR(6) PRIMARY KEY,
sname VARCHAR(20),
age INT,
gender VARCHAR(10)
);
主键自增长
创建表时设置主键自增长(主键必须是整型才可以自增长):
CREATE TABLE stu(
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(20),
age INT
);
非空
指定非空约束:
CREATE TABLE stu(
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(10) NOT NULL,
age INT
);
唯一
例如给stu表的sname字段指定唯一约束:
CREATE TABLE stu(
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(10) UNIQUE
);