#SQL语法
###数据库
- 连接: mysql -uroot -proot
- 创建: create database databaseName [character set utf8/gbk] ;
- 使用: use databaseName;
- 查看: show databases;
- 查看数据库定义信息: show create database databaseName;
- 删除: drop database databaseName;
- 修改: alter database databaseName character set utf8 [collate 校对规则];
- 查看当前使用的数据库: select database();
###表
- 创建: create table tableName(id int primary key auto_increment,username varchar(40) not null unique,password varchar(40) not null,date date);
- 查看表: show tables;
- 查看某个表结构: desc tables;
- 删除表: drop table tableName;
- 修改表:
- 添加列: alter table tableName add colName varchar(40) unique not null;
- 删除列: alter table tableName drop colName;
- 修改列类型、长度和约束: alter table tableName modify colName int(150);
- 修改列名称: alter table tableName change oldColName newColName varchar(40) not null unique;
- 修改表名: rename table oldTableName to newTableName;
- 修改表的字符集: alter table tableName character set gbk/utf8;
###记录
- 插入:
- 格式1: - insert into tableName (colName1,colName2,…) values (value1,value2,…);
- 格式2: insert into tableName values (value1,value2,…);
- 中文乱码,修改:找到MySQL的安装路径下的my.ini文件,修改文件中[client]下的字符集default-character-set=gbk,重启mysql,services.msc
- 格式1: - insert into tableName (colName1,colName2,…) values (value1,value2,…);
- 修改: update tableName set colName=value,colName2=value2,… [where 条件];
- 删除: delete from tableName [where 条件]
- 查询: S(select)… F(from)…W(where)…G(group by)…H(having)…O(order by);
- select [/colName1,colName2,… [as nickname]]* from tableName [where 条件];
- 条件查询:
, < , >= , <= , <> ,=
- like:模糊查询
- like可以进行模糊查询,在like子句中可以使用或者%作为占位符。只能代表一个字符,而%可以代表任意个字符。
- like ‘李_’ :名字中必须是两个字,而且是姓李的。
- like ‘李%’ :名字中姓李的学生,李子后可以是1个或任意个字符。
- like ‘%四’ :名字中以四结尾的。
- like ‘%王%’ :只要名称中包含这个字就可以。
- in:范围查询
- select * from exam where english in (69,75,89);
- 条件关联:and , or ,not
- 排序查询: order by 字段名称 asc/desc;
- select * from exam where name like ‘李%’ order by chinese desc,english asc;
- 聚合函数:
- sum() select sum(english + chinese + math) from exam;
- count() select count(*) from exam;
- max() select max(math) from exam;
- min() select min(chinese) from exam;
- avg() select avg(chinese) from exam;
- 分组查询: select product,count(*) from orderitem group by product;
- where的子句后面不能跟着聚合函数。如果现在使用带有聚合函数的条件过滤(分组后条件过滤)需要使用一个关键字having
- select product,sum(price) from orderitem group by product having sum(price) > 5000 order by sum(price) asc;
- where的子句后面不能跟着聚合函数。如果现在使用带有聚合函数的条件过滤(分组后条件过滤)需要使用一个关键字having
- 分组查询: select product,count(*) from orderitem group by product;
- select [/colName1,colName2,… [as nickname]]* from tableName [where 条件];