近期在去学习MySQL.
登陆mysql
mysql -u root -p # 输入密码安装SQLYog.
SQL语句通用的语法:
SQL语句可以单行或多行书写,以分号结尾 可使用空格和缩进来增强语句的可读性 MySQL数据库的SQL语句不区分大小写,建议使用大写,例如:SELECT * FROM user。 同样可以使用/**/的方式完成注释 MySQL中的我们常使用的数据类型如下- 创建数据库
* create database 数据库名; * create database 数据库名 character set 字符集;- 查看数据库
show databases;- 删除数据库
drop database 数据库名字; 切换数据库 use 数据库名字; 查看正在使用的数据库 select database()约束: 主键约束,非空约束,唯一约束,外键约束…等
主键约束:
主键是用于标识当前记录的字段。它的特点是非空,唯一。在开发中一般情况下主键是不具备任何含义字段,只是用于标识(唯一性)当前记录。
使用格式: 1. 在创建表时创建主键,在字段后面加上 primary key. 2. 在创建表时创建主键,在表创建的最后来指定主键 /* 1.0 */ create table tablename( id int primary key, ....... ) /* 2.0 */ create table tablename( id int, ......., primary key(id) )删除主键:
alter table 表名 drop primary key;主键自增长: 一般主键是自增长的字段,不需要指定
实现添加自增长语句,主键字段后加auto_increment(只适用MySQL) 如: sid INT PRIMARY KEY auto_increment, #分类ID 查看所有表 show tables 查看具体某个表信息 DESC 表名; 删除表 DROP TABLE 表名字; 修改表结构语句 // 1. 给表添加列(新的字段) alter table 表名 add 列名 类型(长度) 约束; // 2. 修改列的类型长度及约束 alter table 表名 modify 列名 类型(长度) 约束; // 3. 修改列的名字 alter table 表名 change 旧列名 新列名 类型(长度) 约束; // 4. 删除列. alter table 表名 drop 列名; // 5. 修改表名 rename table 表名 to 新表名; // 6. 修改表的字符集 alter table 表名 character set 字符集; 数据表添加数据 1. insert into 表 (列名1,列名2,列名3..) values (值1,值2,值3..); -- 向表中插入某些列 如: INSERT INTO product (id,pname,price) VALUES (1,'李宁',3221.20) 2. 不考虑主键情况就是在列名里面不写那个主键字段. 3. insert into 表 values (值1,值2,值3..); --向表中插入所有列 4. 批量写入 insert into 表(列1.列2,列3) values (值1,值2,值3),(值1,值2,值3)...操作注意事项:
- 插入的数据应与字段的数据类型相同 - 数据的大小应该在列的长度范围内 - 在values中列出的数据位置必须与被加入列的排列位置相对应。 - 除了数值类型外,其它的字段类型的值必须使用引号引起。 - 如果要插入空值,可以不写字段,或者插入 null。 - 对于自动增长的列在操作时,直接插入null值即可。 更新表记录 update 表名 set 字段名=值,字段名=值; update 表名 set 字段名=值,字段名=值 where 条件; 删除记录 delete from 表名 [where 条件]; 或者 truncate table 表名; 删除表中所有记录使用delete from 表名; 还是用truncate table 表名; 删除方式:delete 一条一条删除,不清空auto_increment记录数。 truncate 直接将表删除,重新建表,auto_increment将置为零,从新开始。 数据库中的与或非. and or not = <> <=我们在dos命令行操作中文时,会报错.
原因:因为mysql的客户端编码的问题我们的是utf8,而系统的cmd窗口编码是gbk 解决方案(临时解决方案):修改mysql客户端编码。
// 解决办法 1. 将客户端编码修改为gbk. set character_set_results=gbk; / set names gbk; 2. 在mysql安装目录下有my.ini文件 default-character-set=gbk 客户端编码设置 character-set-server=utf8 服务器端编码设置 注意:修改完成配置文件,重启服务 数据库查询语句 1. 查询指定字段信息 select 字段1,字段2,...from 表名; 2. 查询表中所有字段 select * from 表名; 3. distinct用于去除重复记录 select distinct 字段 from 表名; 4. 别名查询,使用的as关键字,as可以省略的. 别名可以给表中的字段,表设置别名。 当查询语句复杂时,使用别名可以极大的简便操作。 表别名格式: select * from 表名 as 别名; 或 select * from 表名 别名; 列别名格式: select 字段名 as 别名 from 表名; 或 select 字段名 别名 from 表名; 5. 在sql语句的操作中,可以直接对列进行运算 如: select pname,price+10000 from product; 条件查询 1. where语句表条件过滤。满足条件操作,不满足不操作,多用于数据的查询与修改。 格式 :select 字段 from 表名 where 条件;while条件的种类如下:
模糊查询 – 配合通配符 %: 多个字符 _: 一个字符 select * from 表名 where 字段 like '条件'; 排序查询 order by 列名 [desc降序] [asc升序] 如: SELECT * FROM account ORDER BY money 默认升序- 聚合函数
聚合函数查询是一种纵向查询.它是对一列的值进行运算,然后返回一个单一的值. 聚合函数会忽略空值. 常用的5个聚合函数: 1. count: 统计指定列不为null的记录行数 2. sum: 计算指定列的数值和,如果指定列的数据类型不是数值,那么计算结果为0 3. max: 计算指定列的最大值,如果指定列的数据类型是字符串,那么使用字符串排序运算 4. mix : 计算指定列的最小值,如果指定列的数据类型是字符串,那么使用字符串排序运算 5. avg: 计算指定列的数值平均值,如果指定列的数据类型不是数值,那么计算结果为0 例如: SELECT COUNT(*) FROM account SELECT SUM(money) FROM account- 分组查询
group by 被分组的列名字 必须跟随聚合函数 SELECT SUM(money), zname FROM account GROUP BY zname 分组查询后,结果再次筛选,不能使用where,使用关键字having SELECT 字段1,字段2,字段3.. FROM 表名 GROUP BY 字段 HAVING 条件HAVING 与 WHERE 的区别
1. having是在分组后对数据进行过滤. 2. where 是在分组前对数据进行过滤 3. having后面可以使用分组函数,where后面不可以