SQL语句:
DDL(Data Definition Languages)语句:数据定义语言;操作对象:数据段、数据库、表、列、索引等。
数据库:
创建:CREATE DATABASE dbname;
删除:DROP DATABASE dbname;
表:
创建:CREATE TABLE tablename(
id INT(5) auto_increment(自增关键词) PRIMARY KEY,
name VARCHAR(20) NOT NULL);
删除:DROP TABLE tablename;
修改:ALTER TABLE tablename RENAME new_tablename;(修改表名)
ALTER TABLE tablename MODIFY name VARCHAR(10);(修改某列的属性)
ALTER TABLE tablename ADD column_name VARCHAR(20) [FIRST/(AFTER col_name)](作为插入的位置);(添加一列)
ALTER TABLE tablename DROP col_name;(删除一列)
ALTER TABLE tablename CHANGE old_col_name new_col_name VARCHAR(20) [FIRST/(AFTER col_name)];(修改列名)
(!CHANGE和MODEFY区别:CHANGE可以修改列名,MODIFY不可以,但是CHANGE两次列名都得写。)
DML(Data Manipulation Languages)语句:数据操纵语句;操作对象:表的增删查改
增:INSERT INTO tablename(col1_name,col2_name) values(value1,value2);
删:DELETE FROM tablename [WHERE CONDITION];
查:SELECT * FROM tablename;
改:UPDATE tablename set col_name = ‘value‘ where id = 1;
查询升级版(还会更新):
ONE:
SELECT dep,COUNT(*)
FROM tablename
GROUP BY dep
HAVING COUNT(*) >= 2;
TWO:
SELECT *
FROM tablename
WHERE col_name=‘abc‘
LIMIT 0,2(0,2意为:从序号0开始后面的两条数据,eg:2,2意为,从序号1开始后面的两条)
ORDER BY col_name DESC;
THREE:
SELECT *
FROM tablename
WHERE dep IN(
SELECT dep
FROM tablename_1);(!如果子查询记录数唯一,IN可以用“=”代替。)
FOUR:
SELECT dep FROM tablename
UNION / (UNION ALL)
SELECT dep FROM tablename_2
知识点:表的连接查询。
WITH ROLLUP:对分类聚合的结果再汇总。
HAVING和WHERE的区别:WHERE是聚合前进行条件筛选,HAVING是聚合后进行条件筛选,能用WHERE时优先使用WHERE这样对查询可以
做到一定的优化。
UNION和UNION ALL的区别:UNION是将UNION ALL后的结果进行一次DISTINCT,去除重复记录后的结果。
DCL(Data Control Languages)语句:数据控制语言(开发人员很少使用);操作对象:数据许可、访问级别
授权:GRANT SELECT,INSERT ON tablename.* TO ‘Z1‘@‘localhost‘ IDENTIFY BY ‘123‘;
收回:REVOKE INSERT ON tablename.* FROM ‘Z1‘@‘localhost‘;
知识点:元数据,为数据的数据,如表名列名等表的各种属性名称。
information_schema数据库就是用来记录MySQL中的元数据信息,此数据库是一个虚拟的数据库,物理上并不存在相关的目录和文件,全部为视图。
视图:
SCHEMATA:所有数据库信息。
TABLES:数据库中的表信息
COLUMNS:表中的列信息
STATISTICS:表索引的信息