#mysql常用sql的练习
/*
DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、
数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter
等。
DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查
询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、udpate 和
select 等
*/
#DDL的练习
#1.创建数据库,CREATE DATABASE dbname
create database test1;
show DATABASES;
use test1;
show tables;
#2.删除数据库
drop DATABASE test1;
#3.创建表
/*
CREATE TABLE tablename (column_name_1 column_type_1 constraints,
column_name_2 column_type_2 constraints , ……column_name_n column_type_n
constraints)
*/
CREATE TABLE EMP (ename VARCHAR(30),hiredate date,salary DECIMAL(10,2));
/*indows下程序跑的好好的,到linux后提示表名不存在
原因是mysql的一个参数:lower_case_table_names
lower_case_table_names在linux下默认是0代表大小写敏感,在window下默认是1代表大小写不敏感。
所以,把lower_case_table_names改成1,或者改表名、字段名和程序,当然第一种简单一点哦。
*/
desc EMP;
desc emp;
#显示创建该表的sql语句
show create table emp;
#删除表
drop TABLE emp;
#x修改表:
/*
修改表类型,语法如下:
ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
*/
ALTER TABLE emp MODIFY ename VARCHAR(50);
/*
(2) 增加表字段,语法如下:
ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST | AFTER col_name]
*/
ALTER TABLE emp ADD age int(3);
/*
删除表字段,语法如下:
ALTER TABLE tablename DROP [COLUMN] col_name
*/
ALTER TABLE emp drop age;
/*
字段改名,语法如下:
ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]
*/
ALTER TABLE emp CHANGE age age1 int(4);
/*
表改名,语法如下:
ALTER TABLE tablename RENAME [TO] new_tablename
*/
ALTER TABLE emp RENAME emp1
desc emp1;
/******************************************************/
/*
DML 语句
DML 操作是指对数据库中表记录的操作,主要包括表记录的插入(insert)、更新(update)、38
删除(delete)和查询(select),是开发人员日常使用最频繁的操作。下面将依次对它们进
行介绍
*/
/插入记录
表创建好后,就可以往里插入记录了,插入记录的基本语法如下:
INSERT INTO tablename (field1,field2,……fieldn) VALUES(value1,value2,……valuesn);/
desc emp;
ALTER TABLE emp1 RENAME emp;
alter table emp CHANGE age1 age int(3);
INSERT INTO emp (ename,hiredate,salary,age) VALUES(‘hgh’,‘2019-07-05’,1000.00,30);
select * from emp;
INSERT INTO emp (ename,hiredate,salary,age) VALUES(‘hgh’,‘2019-07-05’,1000.00,30),(‘hgh2’,‘2019-07-05’,1000.00,30);
INSERT INTO emp (ename,hiredate,salary,age) VALUES(‘hgh3’,‘2019-07-05’,100220.00,50),(‘hgh4’,‘2019-07-05’,1123000.00,40);
/*
更新记录
2.更新记录
对于表里的记录值,可以通过 update 命令进行更改,语法如下:
UPDATE tablename SET field1=value1,field2.=value2,……fieldn=valuen [WHERE CONDITION]
*/
UPDATE emp SET ename = ‘des’,age=20 WHERE ename = ‘hgh’;
/*
3.删除记录
如果记录不再需要,可以用 delete 命令进行删除,语法如下:
DELETE FROM tablename [WHERE CONDITION]
*/
DELETE FROM emp where ename = ‘hgh2’;
/*
4.查询记录
数据插入到数据库中后,就可以用 SELECT 命令进行各种各样的查询,使得输出的结果符合
我们的要求。由于 SELECT 的语法很复杂,所有这里只介绍最基本的语法:
SELECT * FROM tablename [WHERE CONDITION]
*/
select * FROM emp where 1=1;
/*
(3)排序和限制。
我们经常会有这样的需求,取出按照某个字段进行排序后的记录结果集,这就用到了数据库
的排序操作,用关键字 ORDER BY 来实现,语法如下:
SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC|ASC] , field2
[DESC|ASC],……fieldn [DESC|ASC]]
其中,DESC 和 ASC 是排序顺序关键字,DESC 表示按照字段进行降序排列,ASC 则表示升序
排列,如果不写此关键字默认是升序排列。ORDER BY 后面可以跟多个不同的排序字段,并
且每个排序字段可以有不同的排序顺序
*/
SELECT * FROM emp WHERE 1=1 ORDER BY age DESC;
/*
对于排序后的记录,如果希望只显示一部分,而不是全部,这时,就可以使用 LIMIT 关键字
来实现,LIMIT 的语法如下:
SELECT ……[LIMIT offset_start,row_count]
其中 offset_start 表示记录的起始偏移量,row_count 表示显示的行数。
在默认情况下,起始偏移量为 0,只需要写记录行数就可以,这时候,显示的实际就是前 n
条记录,看下面例子:
例如,显示 emp 表中按照 sal 排序后的前 3 条记录:
*/
select * from emp where 1=1 LIMIT 0,3;
/*
(4)聚合。
很多情况下,我们需要进行一些汇总操作,比如统计整个公司的人数或者统计每个部门的人
数,这个时就要用到 SQL 的聚合操作。
聚合操作的语法如下:
SELECT [field1,field2,……fieldn] fun_name
FROM tablename
[WHERE where_contition]
[GROUP BY field1,field2,……fieldn
[WITH ROLLUP]]
[HAVING where_contition]
对其参数进行以下说明。
fun_name 表示要做的聚合操作,也就是聚合函数,常用的有 sum(求和)、count(*)(记
录数)、max(最大值)、min(最小值)。
GROUP BY 关键字表示要进行分类聚合的字段,比如要按照部门分类统计员工数量,部门
就应该写在 group by 后面。
WITH ROLLUP 是可选语法,表明是否对分类聚合后的结果进行再汇总。
HAVING 关键字表示对分类后的结果再进行条件的过滤。
*/
/*
*/
/*
*/
/*
*/
/*
*/
/*
*/
/*
*/
/*
*/