mysql暗文_MySql常用语句

`bd1`

#数据库操作的代码演示:

CREATE DATABASE demo; # 创建数据库

CREATE DATABASE IF NOT EXISTS studets; #判断是否存在,不存在则创建新的数据库

DROP DATABASE demo; #删除数据库

ALTER DATABASE demo CHARACTER SET utf8; #修改数据库字符集

SHOW DATABASES; #显示所有的数据库

SHOW CREATE DATABASE demo; #查询某个数据库的字符集

USE demo; #使用该数据库(指定的)

#表操作的代码演示:

CREATE TABLE students( #创建一个新的表;

id INT,

NAME VARCHAR(40)

);

SHOW TABLES; #查看该数据库下的所有表格

DESC students; #查看该表的结构

ALTER TABLE students RENAME father; #修改该表的名字

ALTER TABLE father CHARACTER SET utf8; #修改该表的字符集

ALTER TABLE father ADD shengao INT; #添加一列

ALTER TABLE father CHANGE shengao tizhong INT; #修改列名称,类型

ALTER TABLE father DROP tizhong; #删除列

DROP TABLE students; #删除表名

DROP TABLE IF EXISTS students; #删除表名(如果存在则删除

#数据的增删改查代码演示:

INSERT INTO students VALUES(1,'zhanglei'); #添加数据(默认给所有列添加值

INSERT INTO students(id)VALUES(2); #给指定的列添加值

DELETE FROM students; #删除所有数据(不推荐使用,只删除数据,不删除表)

TRUNCATE TABLE students; #删除表内所有数据(推荐使用,只删除数据,不删除

表)

DELETE FROM students WHERE NAME ='zhanglei'; #删除指定表的指定内容

UPDATE students SET NAME="我"; #修改所有的该列值

UPDATE students SET NAME="哈哈哈" WHERE id=1; #修改指定行的列的值

UPDATE students SET NAME="我不是" ,id=2; #修改所有的行的多个列的值。 (如果需要指定

行的多列的值后面加 where 条件即可)

SELECT *FROM students; #查询该表的所有数据

DELETE FROM students WHERE id=2; #查询 id 为 2 的该行数据(指定列的所有行数据)

SELECT DISTINCT *FROM students; #查询去重复后的表中所有数据

SELECT id,NAME FROM students WHERE id=2; #查询指定行的指定列数据

SELECT id+1,NAME FROM students; #查询带简单运算后的表中数据

SELECT id 学号 ,NAME 名字 FROM students; #查询带别名,将指定列的名字修改后查询带

别名的数据

SELECT (id +NAME)AS 学生信息 FROM students; #查询组合带别名的所有学生信息

#条件查询:

-- 1). 查询员工的所有信息

SELECT * FROM t_employee;

-- 2). 查询所有员工的姓名和职位

SELECT ename,job FROM t_employee;

-- 3). 查询所有员工的职位(去掉重复的)

SELECT DISTINCT job FROM t_employee;

-- 查询所有员工的姓名和总金额(薪资+佣金)

SELECT ename 姓名,sal,comm,sal+IFNULL(comm,0) 总金额 FROM t_employee;

-- 查询部门编号等于 20 的所有员工信息

SELECT * FROM t_employee WHERE deptno = 20;

-- 查询职位是 clear 并且薪资大于 1000 的员工信息

SELECT * FROM t_employee WHERE job = 'clear' AND sal > 1000;

-- 查询薪资在 2000 到 3000 之间的所有员工信息

SELECT * FROM t_employee WHERE sal BETWEEN 2000 AND 3000;

-- 查询佣金是 null 的所有员工信息

SELECT * FROM t_employee WHERE comm IS NULL;

-- 查询部门编号在 10 和 20 中的所有员工信息

SELECT * FROM t_employee WHERE deptno IN(10,20);

-- 查询员工姓名包含 M 的所有员工信息

SELECT * FROM t_employee WHERE ename LIKE '%M%';

-- 查询员工中佣金大于 800 并且以佣金降序排序

SELECT * FROM t_employee WHERE sal>800 ORDER BY sal DESC;

-- 查询员工中佣金大于 800 并且以佣金升序排序

SELECT * FROM t_employee WHERE sal>800 ORDER BY sal ASC;

-- 求女性的平均年龄

SELECT AVG(age) FROM student3 WHERE sex= '女';

-- 查询平均年龄,居住地,人数,按照居住地分组;

SELECT AVG(age),address,COUNT(address)人数 FROM student3 GROUP BY address;

-- 查询平均年龄,居住地,人数,按照居住地分组,并筛选出人数大于 1 人的地区;(使用

聚合函数,条件查询,分组查询)

SELECT AVG(age),address,COUNT(address)人数 FROM student3 GROUP BY address HAVING 人

数>1;

-- 分页查询所有信息

SELECT *FROM student3 LIMIT 3,6;

# 约束

#非空约束

-- 非空约束:not null,某一列的值不能为 null

CREATE TABLE stu(

id INT,

NAME VARCHAR(20) NOT NULL -- name 为非空

);

-- 创建表完后,添加非空约束

ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;

-- 删除 name 的非空约束

ALTER TABLE stu MODIFY NAME VARCHAR(20);

#唯一约束

-- 在创建表时,添加唯一约束

CREATE TABLE stu(

id INT,

phone_number VARCHAR(20) UNIQUE -- 手机号

);

-- 删除唯一约束

ALTER TABLE stu DROP INDEX phone_number;

-- 在表创建完后,添加唯一约束

ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;

#主键约束

-- 在创建表时,添加主键约束

CREATE TABLE stu(

id INT PRIMARY KEY,-- 给 id 添加主键约束

NAME VARCHAR(20)

);

-- 删除主键

ALTER TABLE stu DROP PRIMARY KEY;

-- 创建完表后,添加主键

ALTER TABLE stu MODIFY id INT PRIMARY KEY;

-- 在创建表时,添加主键约束,并且完成主键自增长

CREATE TABLE stu(

id INT PRIMARY KEY AUTO_INCREMENT,-- 给 id 添加主键约束

NAME VARCHAR(20)

);

-- 删除自动增长

ALTER TABLE stu MODIFY id INT;

-- 添加自动增长

ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;

-- 在创建表时,可以添加外键

CREATE TABLE 表名(

....

外键列

CONSTRAINT 外键名称 FOREIGN KEY (外键列名称) REFERENCES 主表名称(主表列名称)

);

-- 删除外键

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

-- 创建表之后,添加外键

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主

表名称(主表列名称);

-- 添加级联操作

ALTER TABLE 表名 ADD CONSTRAINT 外键名称

FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON

DELETE CASCADE ;

-- 级联更新:ON UPDATE CASCADE

-- 级联删除:ON DELETE CASCADE

# 作业代码演示:

-- 11). 查询所有员工信息按照薪资降序排列

SELECT * FROM t_employee ORDER BY sal DESC;

-- 12). 查询所有员工信息先按照薪资升序排列在按照雇佣时间降序排列

SELECT * FROM t_employee ORDER BY sal ASC,hiredate DESC;

-- 统计所有员工的个数

SELECT COUNT(*) FROM t_employee

-- 14). 查询部门编号等于 10 的所有员工的平均薪资

SELECT AVG(sal) FROM t_employee WHERE deptno = 10;

-- 15). 查询所有员工中薪资最高的员工信息

SELECT * FROM t_employee WHERE sal = (SELECT MAX(sal) FROM t_employee);

-- 16). 查询每个部门的最高薪资

SELECT deptno,MAX(sal) FROM t_employee GROUP BY deptno;

-- 17). 查询每个部门的员工个数,并按照人数降序排列

SELECT deptno,COUNT(*) num FROM t_employee GROUP BY deptno ORDER BY num DESC;

-- 18 查询每个部门平均薪资在 2000 以上的部门编号和平均薪资

SELECT deptno,AVG(sal) 平均 FROM t_employee GROUP BY deptno HAVING 平均 > 2000

-- 多表查询

# 隐式内查询:

SELECT

emp.name,emp.`gender`,dept.`NAME`

FROM

dept,emp

WHERE

dept.`id`=emp.`id`;

#显式内查询:

SELECT

t2.name,t2.gender,t1.`NAME`

FROM

dept t1

JOIN

emp t2

ON

t1.`id`=t2.id;

# 外连接 左连接

SELECT

*

FROM

emp

LEFT JOIN

dept

ON dept.`id`=emp.`id`;

# 外连接 内连接

SELECT

*

FROM

emp

RIGHT JOIN

dept

ON dept.`id`=emp.`id`;

#子查询

# 先找出工资最高的人

SELECT

MAX(emp.`salary`)

FROM emp ;

# 再找出该员工

SELECT emp.`NAME` ,emp.`salary`

FROM emp

WHERE

emp.`salary`=9000;

#使用子查询一次到位:

SELECT emp.`NAME` ,emp.`salary`

FROM emp

WHERE

emp.`salary`=(SELECT MAX(emp.`salary`)FROM emp);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值